Configurar Ampache ejecutándose en Docker y con Virtualmin

10 febrero, 2024

Configurar Ampache ejecutándose en Docker y con Virtualmin

By | Published | No hay comentarios

Good Morning Vietman!!!

Bueno, no se me ocurria otra cosa tras tantísimo tiempo sin escribir.

Hoy voy a tratar de dejar un tip rápido para aquellos que quieran configurar un Ampache en Virtualmin, pero también sin meterlo a la lógica de todo el Virtualmin, únicamente utilizando Apache como proxy reverso, mientras el Ampache funciona en un contenedor Docker.

Requisitos

– Maquina con Virtualmin y docker instalados y funcionando.
– (Opcional) un contenedor montado con Portainer.

Vamos al lio…

Primer paso. Instalar el Ampache en Docker

Siguiendo la ayuda inestimable de la wiki de Ampache (https://github.com/ampache/ampache/wiki/Installation) y las referencias de la imagen de docker que proporcionan, es posible montar el servicio de forma bastante sencilla.

De forma resumida, los pasos son:

  • Definir cuatro volúmenes, bien como volúmenes de docker, o bien como puntos de montaje en el sistema, que deberán coincidir con los siguientes puntos de montaje en el contenedor:
    • /var/www/config – En este se guardarán las configuraciones (lo utilizaremos más tarde)
    • /var/lib/mysql      – En este irá el almacenamiento de la base de datos MySQL que monta el contenedor.
    • /media                  – Aquí irán los archivos que se utilizaran para la reproducción (mp3, etc)
    • /var/log/ampache – Aquí irán los logs del propio ampache, útiles para determinar problemas.
    • (Opcional) Se pueden añadir más según necesidades, pero estos son los mínimos.
  • Arrancar el contenedor (utilizando las variables para los volúmenes adecuadas) con algo como el comando docker run –name=ampache -d -v /path/to/your/music:/media:ro -p 80:80 ampache/ampache 
    (al final comparto parte de la configuración en portainer)
  • Realizar la primera configuración siguiendo todos los pasos para configurarlo y que esté funcionando en un puerto.
    • Para ello, al intentar entrar en la URL del puerto abierto debería salir automáticamente.
  • Una vez que esté configurado, recordar como se ha configurado el volumen de la configuración, ya que será necesario retocarla ligeramente.
    • Encontrar el directorio /var/www/config, para ello puede haber varias maneras.
      • Entrando con Portainer en consola en el contenedor e ir directamente a la ruta de config (esto hará que sea en modo texto todo).
      • Si se ha montado con un punto de montaje, localizar la carpeta donde se ha hecho.
    • Entrando en el archivo ampache.cfg.php podremos cambiar las variables necesarias para el mínimo funcionamiento.
      • Nota: se recomienda realizar esto cuando ya esté el contenedor y haya sido probado mediante el puerto, ya que una vez realizados los cambios, si se reinicia el contenedor, no responderá adecuadamente.
      • Cambiar los siguientes valores a estos definidos:
        • web_path = «»
        • local_web_path = «http://localhost»
        • force_ssl = «true» (esta parte está en la sección Proxy Settings)
    • Ya podemos reiniciar el contenedor o el servicio de apache desde dentro del mismo (según como hayamos accedido)

Configuración en Virtualmin

Bien, para que esto funcione con Virtualmin, será necesario crear, bien un sitio completo, o bien un subdominio de otro principal (como ha sido mi caso)

Para ello, los pasos han sido:

  • En la creación de un Sub-server de Virtualmin, darle dominio (no se olvide incluir el subdominio completo, incluyendo el dominio padre)
  • Desactivar casi todas las opciones (no quiero correo ni base de datos ni nada, ya que todo lo que necesite va a depender del dominio padre, o bien lo lleva incluido el contenedor)
  • En la sección de «IP address and forwarding» establecer la opción de «proxy website to URL» establecer la URL con la que el Ampache estaba respondiendo (preferiblemente con IP, si se intenta con el nombre del dominio y el puerto, el rendimiento dejaba mucho que desear, probablemente por el propio Apache
  • Tras crear el nuevo sitio con Virtualmin, hay que entrar en «Web Configuration -> Configure SSL Website -> Edit Directives» y asegurarse de que estén las siguientes lineas (o añadirlas):
    • ProxyPass / http://127.0.0.1:XXXXX/
    • ProxyPassReverse / http://127.0.0.1:XXXXX/
    • ProxyPreserveHost on
    • ProxyPass /.well-known !
  • Salvar los cambios y cerrar el editor, y aplicar los cambios (o reiniciar todo el apache del Virtualmin)

Configuración de Ejemplo con Portainer

Resumen

Tras haber organizado todo esto, tengo un Ampache personalizado al que puedo subir mi música y no depender de otros servicios.

Y bien, ¿a qué ha venido todo esto? Sinceramente, no me apetece estar suscrito a Spotify u otros servicios, y quería buscar una forma de tener mi sistema de streaming de música.
En el móvil habrá un montón de alternativas, pero yo estoy utilizando para reproducir Ampdroid

Como dicha aplicación requería funcionar a través de https, necesitaba una forma de poder cumplir con ello sin interferir en el resto de operaciones y sin montar servicios o sitios a mayores, o dónde guardar la música.

Si habéis llegado hasta aquí, gracias