Skip to content

Instantly share code, notes, and snippets.

@frecuencialibre
Last active March 23, 2020 03:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save frecuencialibre/2d911055101109ca5ccd7d6d955411c8 to your computer and use it in GitHub Desktop.
Save frecuencialibre/2d911055101109ca5ccd7d6d955411c8 to your computer and use it in GitHub Desktop.
Pasos a seguir para instalar LibreTime en una maquina virtual en un servidor linux

Hola compas, aquí va un intento continuo de documentar nuestro proceso de poner en marcha LibreTime para la Frecuencia Libre 99.1 en San Cristobal de las Casas, Chiapas. Favor de dejar sus preguntas/dudas/sugerencias un comentario aqui. ¡Ánimo!

CONFIGURAR SERVIDOR

Como colectivo de radio nuestra experiencia con las compus ha sido de prueba y mucho error. :) Perdimos mucho tiempo con compus viejas que se nos descomponían cada rato, con compus asambladas de componentes porque luego no jalaban con linux, y con otra de marca apple que tambien tenia pedos con el linux por su sistema particular de booteo. Al final estamos ahora intentando trabajar con un servidor marca dell que, aunque tambien ya tiene sus 12 años, es siquiera de una marca establecida que oficialmente soporta linux. Vemos que con 2gb de RAM jalaba todavía pero bien lento con las máquinas virtuales. Con 6gb de RAM mejoró bastante.

1. Instalar sistema operativo base.

Al servidor dell le pusimos Debian 9.5 con particionado guiado con LVM.

2. Poner etckeeper (opcional)

etckeeper es una herramienta para para poder controlar con git la configuracion del servidor. si te late usar git para poder monitorear y posiblmente revertir la configuración en caso de problemas, lo instalas así:

sudo apt install etckeeper

3. Controlar la conexión red del servidor manualmente

Aprendemos que es necesario desactivar daemon del GUI para evitar conflictos, especialmente al reiniciar la máquina.

sudo systemctl stop NetworkManager.service

sudo systemctl disable NetworkManager.service

Al deshabilitar NetworkManager, vemos la resolucion DNS ya no funcionaba, ya que /etc/resolv.conf era un symlink: resolv.conf -> /var/run/NetworkManager/resolv.conf

entonces, tuvimos que re-crearlo:

sudo rm /etc/resolv.conf

sudo nano /etc/resolv.conf

y ponerle solo una linea, con el ip de un nameserver:

nameserver 1.1.1.1

4. Ponerle al servidor una IP fija y una red "puente" para el uso de las maquinas virtuales que tendrá

La IP fija nos va a servir para poder acceder con ssh remotamente, ya que configuramos el modem para mandar el puerto 22 (ssh) a un determinado puerto (Ver Configurar Modem abajo). Elegimos 192.168.1.10 aquí pero podria ser cualquiera dentro de la LAN. mas info: https://linuxconfig.org/how-to-setup-a-static-ip-address-on-debian-linux

Entonces primero necesitamos instalar un paquete que nos va a hacer poder hacer "puentes" de red:

sudo apt install bridge-utils

Ahora necesitamos saber el ID del depositivo red ethernet del servidor. debe de ser algo así como enp*** corriendo

ip address

nos da un chorro de cosas, entre ellas ese ID. en el servidor dell es enp1s0 pero van a tener que ponerle el de su máquina.

ahora vamos a editar el archivo de configuracion del interfaz de la red de debian:

sudo nano /etc/network/interfaces

al final el servidor dell quedó así:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto br0
iface br0 inet static
  address 192.168.1.10
  network 192.168.1.0
  broadcast 192.168.1.255
  netmask 255.255.255.0
  gateway 192.168.1.254
  bridge_ports enp1s0 
  bridge_stp off
  bridge_fd 0
  bridge_maxwait 0
  dns-nameservers 1.1.1.1

Despues de haber hecho el cambio, hay que comprobar que funcionó sin problemas con el comando:

sudo service networking restart

Debe de correr sin error. Se puede ver si ya quedó la ip fija corriendo de nuevo el commando ip address. Ahora a re-iniciar la máquina

Si no, y especialmente si han hecho cambios varias veces hay posibilidad de que se necesita purgar el depositivo red para luego intentar reiniciar el servicio networking de nuevo. sudo ip addr flush dev br0

5. Mapear un dominio (eg. https://libretime.pagina-de-su-radio.org) a la IP no-fija del modem

No tenemos recursos para contratar una conexión al internet con IP fija, así que tenemos usar una herramienta que acceder al servidor desde otros lados aunque cambie el IP del modem de la cabina al reiniciar el modem o caer el internet etc.

Primero, a instalar ddclient: sudo apt install ddclient

luego a poner los datos de nuestra cuenta en el proceso de instalación. *** falta escribir: conseguir cuenta para usar ddclient ***

CONFIGURAR MODEM

*** falta escribir: firewall config con screenshots ***

MAQUINAS VIRTUALES

*** falta escribir: porque usar maquinas virtuales. *** También prueba y muchos errores

1. Crear una maquina virtual (MV) donde va a correr LibreTime

Primero instalamos Gestor de máquinas virtuales ( o virt-manager ) para poder crear las MV a partir de un imagen de un sistema operativo, como ubuntu. sudo apt install virt-manager

Luego descargamos un archivo .iso de un sistema operativo. Usaremos ubuntu servidor version 16 ya que esa es la version con mayor compatibilidad con LibreTime. Hay un par de buenas opciones de archivos iso, como el FAI (mas rapido la instalación), o el ubuntu estandard, que es lo que nos funcionó con el servidor dell. Tendrás un archivo pesadón que se llama algo asi como ubuntu-16.04.5-server-amd64.iso

Virt manager te da una interfaz gráfica para crear máquinas virtuales, y también herramientas para uso desde la linea de comandos. Siguen instrucciones para las dos formas:

  1. Linea de comandos:

Este comando crea una MV a base de el archivo .iso FAI con 10gb de disco rígido, 3gb de RAM, y ocupa 8 cpus. Probablemente tendrian que modificar estos valores. Tambien se puede cambiar despues.

virt-install  -n LibreTime0d -r 3072 --vcpus=8 -s10 -c faicd64-ubuntu-only_5.3.4.iso  --noautoconsole --os-type linux  --os-variant debianwheezy  --accelerate --network=default --hvm  --graphics vnc
  1. Interfaz gráfica:

Abrimos el "Gestor de máquinas virtuales" (virt-manager en ingles) y creamos una nueva con:

  • Una cantidad de memoria RAM que deja mínimo 1gb para el uso exclusivo del sistema base. Por ejemplo, si tu servidor tiene 4gb, le puedes dar un maximo de 3gb a la maquina virtual. Es importante que no uses toda la memoria disponible del sistema base para que no haya problemas con la instalación del sistema operativo en la MV nueva, como por ejemplo de que vaya muuuuy lenta la instalación.

  • conexión a la red br0

  • unos 10 gb de disco rigido nos pareció mas que suficiente ya que la sonoteca no va a estar dentro de la maquina virtual.

La nueva maquina virtual arrancará con el proceso de instalación de sistema operativa que trae el archivo .iso que usaste. A seguir los pasos. Recomendamos particionar la maquina con LVM o "swap" para evitar que caiga la MV si llega a acabarse su memoria.

Una vez que se instaló existosamente el ubuntu, conviene clonarlo desde el Gestor de máquinas virtuales como un respaldo. Así evitas tener que repetir todo el proceso hasta ahora por si tengas que volver a configurar la MV.

2. Configurar la máquina virtual para poner LibreTime

1. Poner etckeeper (opcional)

etckeeper es una herramienta para para poder controlar con git la configuracion del servidor. si te late usar git para poder monitorear y posiblmente revertir la configuracion, lo instalas así:
`sudo apt install etckeeper`

2. Poner IP estática a la máquina virtual

Le ponemos una IP fija para poder hacer que el acceso a travez de un navegador (http o https) vaya a la maquina virtual. Así podemos configurar el modem Telmex para que todo acceso a los puertos 80 (http) y https (443) se mande al IP estático la MV (ver Configurar Modem).

Ubuntu server no tiene el daemon NetworkManager, así que no tenemos que desactivarlo como hicimos en el sistema base.

Configuramos la conexión red de la MV de la misma manera que hicimos con el servidor, editando el archivo /etc/network/interfaces: sudo nano /etc/network/interfaces

Al final la maquina virtual quedó así:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto ens3
  iface ens3 inet static
  address 192.168.1.20
  netmask 255.255.255.0
  gateway 192.168.1.254
  dns-nameservers 1.1.1.1

Una vez que ya quedaron los cambios, le reiniciamos la MV, y averiguamos que funcionó:

  • ip address te dirá si ya quedó la IP fija 192.168.1.20

  • ping 1.1.1.1 para ver si tiene conexión al internet

  • ping 192.168.1.10 para ver si encuentra bien el sistema base, al que vamos a conector ahorita para compartir la carpeta de audios.

3. Poner una carpeta compartida entre el sistema base y la máquina virtual

La "sonoteca" de la Frecuencia Libre, donde se aloja todos los archivos de audio que subimos al LibreTime, no está adentro de la máquina virtual sino que en la carpeta Música del sistema base que se encuentra aquí: /home/frecuencialibre/Música

Vamos a hacer esto de tal manera para que al reiniciarse la maquina virtual y/o el servidor, vuelva a funcionar la carpeta compartida. Lo haremos con una herramienta que se llama sshfs (ssh como el protocolo de conectar a una maquina con linea de comandos, y fs de "file system" o sistema de archivos). Consulté a este tutorial: https://www.digitalocean.com/community/tutorials/how-to-use-sshfs-to-mount-remote-file-systems-over-ssh

Instalamos sshfs:

sudo apt-get install sshfs

Aseguramos que la conexion red de la MV está bien intententando comunicarse con el sistema base desde la maquina virtual:

libretime@LibreTime:~$ ssh frecuencialibre@192.168.1.10

... y te pedirá la contraseña del sistema base. Se pudo? chido, salimos de ese conexión ssh con el comando exit.

Ahora a crear una carpeta vacia en la MV que va a "alojar" a la conexión con el sistema base. Este podria tener el nombre y ubicación que quieras, como por ejemplo la carpeta que usa libretime por defecto: /srv/airtime/stor/. Nosotrxs queriamos ponerlo en una carpeta que no depende de haber instalado libretime para poder así clonar y tener lista una MV ya configurada para instalaciónes futuras de LibreTime. Le pusimos adentro de la carpeta "home" del usuario que usamos:

cd /home/libretime
mkdir sonoteca

Luego la carpeta en el sistema base con toda nuestra música está aquí: /home/frecuencialibre/Música

Entonces el comando que vamos a correr (sin sudo) para asegurar que funciona es esto.

sshfs frecuencialibre@192.168.1.10:/home/frecuencialibre/Música /home/libretime/sonoteca

Debe de funcionar sin errores, y se debe de ver archivos alojados en la carpeta en el sistema base desde la maquina virtual.

Ahora vamos ha hacer que se conecte la carpeta así al arrancar la MV. Para eso tiene que poder conectarse sin pedir contraseña ocupando el sistema de llaves públicos/privados (mas info). Primero vamos a generar una llave nueva para la máquina virtual:

ssh-keygen y darle "Enter" varias veces sin entrar ninguna contraseña hasta que termine el proceso.

Ahora a copiarlo al sistema base:

ssh-copy-id frecuencialibre@192.168.1.10

ssh frecuencialibre@192.168.1.10 deb de funcionar ahora sin contraseña. Ahora podemos editar el archivo fstab para configurar que se conecte al arrancar:

sudo nano /etc/fstab

Le agregamos este linea al final del archivo (es una sola, largota):

sshfs#frecuencialibre@192.168.1.10:/home/frecuencialibre/Música  /home/libretime/sonoteca  fuse  defaults,delay_connect,idmap=user,transform_symlinks,IdentityFile=/home/libretime/.ssh/id_rsa,allow_other,default_permissions,uid=1000,gid=1000  0  0

Esta linea nos funciona con Debian 9 instalado el la máquina virtual. Ahora re-iniciamos la máquina virtual, y aseguramos que el contenido de la carpeta en la máquina virtual refleja el contenido de la carpeta Música del sistema base: ls /home/libretime/sonoteca. Si no, hay que investigar. Los log del sistema se encuentran en /var/log/syslog.

4. Hacer que Libretime se encuentre a si misma (jeje) al intentar cargar el url base que le pusemos.

Aprendemos que LibreTime necesita que el url base de la instalación resuelve correctamente desde donde está la instalación a si mismo. La configuración que tenemos aquí, con un url base que se resuelve al IP del modem, crea problemas.

La solución a este es bastante sencillo. Vamos a editar el archivo hosts de la máquina virtual para mandar intentos de cargar el URL base al IP de la misma máquina virtual:

sudo nano /etc/hosts

y luego donde encuentra la linea 127.0.0.1 localhost le vamos a agregar el url base de la instancia de libretime. Quedará algo así re-emplazando el url con el suyo: 127.0.0.1 localhost libretime.pagina-de-su-radio.org

Es todo por ahora. Iremos agregando mas cosas con el tiempo. gracias!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment