Álvaro González Sotillo

Nuevo HTPC en casa

asus-vc66.png

Acabo de comprarme un asus vc-66. Mi intención es utilizarlo como servidor accesible desde internet, pero también como htpc. Estos son los pasos que he seguido para configurarlo.

Instalación del sistema operativo

El ordenador venía con windows 10 preinstalado. Aunque el remote desktop es una buena forma de conectarte a un ordenador de tu LAN, no es tan adecuado para un acceso remoto con bajo ancho de banda. En esos casos, una conexión SSH/FTP con la posibilidad de redirigir puertos a VNC me parece más adecuada.

De todas formas, Windows sigue instalado, que tampoco es cuestión de despreciar una licencia.

Haciendo sitio en el disco

  1. Particiones del disco duro original

    efi boot windows recuperación
  2. Tras reducir partición windows

    efi boot windows libre recuperación
  3. Tras instalar Ubuntu

    efi boot windows libre ubuntu swap recuperación
  4. Crear partición datos compartidos con windows (formato ntfs)

    efi boot windows datos compartidos (ntfs) ubuntu swap recuperación

Usuarios

He creado un usuario por defecto para la familia con el autologin activado.

Para compartir ficheros entre los usuarios se utiliza el grupo discos, al que pertenecen todos los usuarios

sudo addgroup discos
sudo usermod -a -G discos usuario1
sudo usermod -a -G discos usuario2

Las particiones de datos adicionales (como los datos compartidos con windows) se montan con este grupo

# /etc/fstab: static file system information.
#
# use 'blkid' to print the universally unique identifier for a
# device; this may be used with uuid= as a more robust way to name devices
# that works even if disks are added and removed. see fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda7 during installation
uuid=04c0c550-c5c3-4ab5-b0f2-02d071836091 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
uuid=0e07-e3eb  /boot/efi       vfat    umask=0077      0       1
# swap was on /dev/sda8 during installation
uuid=7fa25a22-5511-47c7-9ae8-34d96d23d41d none            swap    sw              0       0

# ntfs compartido con windows
uuid=9e1cf2601cf2333f /datos/datos-compartidos-200m ntfs gid=discos,dmask=002,fmask=113 0 2

Home Theater Personal Computer

wireless-touch-keyboard-k400-plus.png

En la parte hardware, basta con conectar el ordenador al televisor por el puerto HDMI y utilizar un teclado inalámbrico. Yo utilizo un logitech k400 que va muy bien, sobre todo por el fácil acceso a las teclas de volumen (que al final, durante una película, es lo que más se usa).

En la parte software he optado por Kodi con el plugin de Youtube, aunque al final resulta más cómodo utilizar directamente la web con firefox.

Para esos otros contenidos, utilizo Transmission daemon. He seguido los siguientes pasos:

  • Instalar con apt install transmission-daemon
  • Crear un directorio para Transmission en el disco compartido
  • Configuración de Transmission (fichero settings.json)
    • Cambiar usuario y contraseña de acceso remoto
    • Cambiar el directorio por defecto al creado anteriormente
    • Escuchar en la dirección 0.0.0.0, para permitir conexiones desde fuera del equipo, y eliminar la whitelist de equipos con la conexión permitida.
    • Para que el resto de usuarios puedan leer los ficheros bajados por transmission, hay que añadirlos al grupo debian-transmission
sudo usermod -a -G debian-transmission usuario1
sudo usermod -a -G debian-transmission usuario2

Tras instalar transmission, he añadido el directorio de bajada a los directorios de video de Kodi.

Acceso remoto

El acceso remoto no es solamente acceder al ordenador desde la lan, sino desde cualquier parte de Internet. los pasos a seguir son los siguientes:

  1. Instalar openssh server, que nos permitirá acceder a un terminal y a los ficheros del servidor

       sudo apt install openssh-server
    
  2. Redirigir un puerto para acceder a ssh desde internet. para ello
    1. Configurar el ordenador para tener una ip fija
    2. En el router ADSL/fibra, abrir un puerto que se redirija a esa ip fija, al puerto 22 del servidor ssh.

Always-on vs wake-on-lan

Idealmente, el servidor debería estar siempre encendido. en la práctica no siempre es deseable, aunque solo sea por el gasto continuo de 18W.

Para conseguir lo mejor de ambas opciones, puede dejarse al ordenador suspendido (1W) y despertarlo con wake-on-lan con alguna aplicación desde el móvil. este sistema consiste en enviar un paquete mágico que contiene 16 veces la MAC del equipo a despertar. desde la lan no hay ningún problema: el paquete se envía a la dirección de broadcast de la red, y el switch lo envía a todos los equipos.

Desde Internet es más complicado. Se puede intentar abrir un puerto para WoL, pero el router al intentar alcanzar al servidor en la IP interna lanzará un arp para conocer su dirección MAC y poder enviar el paquete. Y si el ordenador está apagado no responderá, por lo que el paquete mágico se quedará sin enviar.

La solución es modificar la tabla arp del router, dejando como permanente la dirección ip y mac del servidor.

Nombre del servidor

La dirección IP asignada a mi router por el ISP es dinámica. Para poder localizar mi servidor en Internet es necesario tener un servicio de dynamic dns. He elegido a noip.com porque:

  • Tiene una cuenta gratuita
  • Mi router tiene el cliente necesario para actualizar la dirección
  • Permite registros MX para el correo electrónico.

Servidor

En el ordenador he instalado los servicios e-mail y http.

E-mail

Utilizo exim4 en una instalación estandar, con las siguientes configuraciones:

  • El hostname del ordenador es el mismo que el del dominio dinámico en noip.
  • Utilizo como smarthost una dirección de correo de gmail. el resultado es que puedo recibir correos en mi servidor, pero cuando los envío parecen todos enviados desde gmail.

A partir de aquí, ya puedo utilizar mi dirección spam@alvarogonzalez.no-ip.biz para registrarme en cualquier sitio 😎

Servidor web

El protocolo HTTP es una buena forma de compartir ficheros. He instalado apache directamente desde el repositorio.

apt install apache2 

Para no dejar la página por defecto, he instalado un mirror de este blog:

 documentroot /var/www/alvarogonzalezsotillo.github.io
 <directory /var/www/alvarogonzalezsotillo.github.io>
          options followsymlinks
          allowoverride all
          require all granted
  </directory>

Owncloud

Para acceder a mis ficheros (fundamentalmente fotografías) utilizo owncloud, instalado desde repositorios:

apt install mysql-server libapache2-mod-php php-mcrypt php-mysql
apt install owncloud-files

Con esto se consigue un servidor apache capaz de ejecutar owncloud, pero la instalación de owncloud (en /var/www/owncloud) no es accesible por apache. Es necesario crear un fichero de sitio en /etc/apache/sites-available/owncloud.conf con el siguiente contenido

  alias /owncloud /var/www/owncloud

  <directory /var/www/owncloud>
          options followsymlinks
          allowoverride all
          require all granted
  </directory>

Después, se habilita el sitio con

a2ensite owncloud

Configuración como workstation

El servidor también debería servirme de backup en el caso de que no tenga disponible mi portátil. lA siguiente configuración es la que utilizo para mi trabajo diario.

Zsh

Zsh es una shell que puede sustituir a bash de forma casi transparente. Las razones por las que utilizo zsh son

  • Mejor autocomplección con tabulador, tanto para ficheros como para opciones de comandos
  • El historial de comandos se comparte entre todas las sesiones abiertas
  • El historial de comandos se filtra por el comando parcial ya tecleado
  • Se puede utilizar ** para hacer globbing de directorios.
  • Los plugins y temas de ohmyzsh "will not make you a 10x developer…but you might feel like one". Utilizo los plugis para emacs, tmux, git y gradlew, y el tema robbyrussell

Emacs

Cuando tienes un martillo, todo te parecen clavos. Emacs es el martillo más grande que he usado nunca.

En un servidor, tiene la gran ventaja de que puede trabajarse directamente en una sesión de ssh, sin entorno gráfico. Emacs y tmux son una combinación ganadora en estos casos.

En mi portátil he compilado emacs a partir de los fuentes, pero en el servidor bastará con utilizar un repositorio PPA:

   sudo add-apt-repository ppa:kelleyk/emacs
   sudo apt update
   sudo apt install emacs25

La mejor parte de Emacs es la configuración que cada usuario realiza con él. La mía está en un repositorio git

   cd
   git clone https://alvarogonzalezsotillo@github.com/alvarogonzalezsotillo/.emacs.d.git

Al arrancar Emacs, automáticamente descargará mis paquetes y activará mi configuración.

Materiales para clase

Como cuento en otra entrada, utilizo básicamente Latex y org-mode para mis clases.

La instalación de Latex, y los paquetes que utilizo, se consigue fácilmente con:

  sudo apt-get install texlive-collection-binextra \
  texlive-latex-recommended \
  texlive-extra-utils \
  texlive-collection-langspanish \
  texlive-collection-latex \
  texlive-collection-latexextra \

Además, utilizo otras herramientas como Inkscape y Graphviz que también instalo con apt-get

Ofimática

Aunque prácticamente ya no lo uso, de vez en cuando alguien de la familia necesita utiliza Microsoft Office. Para eso mantengo un prefijo de Wine que copio de ordenador en ordenador, con la suite ofimática ya instalada.