Instalación de aMule en OMV utilizando Docker (Testado en OMV4)


Requisitos e instalación de Docker y docker-gui en OMV:


Despliegue del contenedor:

Hay varias imagenes disponibles de docker en el listado y ninguna es de aMule, pero puedes añadir de otros repositorios que encontrarás en hub.docker.com
Entra en hub.docker.com y lanza una búsqueda, siendo interesante que filtres antes por arquitectura.

Si lanzas uname -a por el terminal, verás la arquitectura de tu kernel ej: Linux neo2 4.14.0 #82 SMP Fri Dec 8 14:33:14 CST 2017 aarch64 GNU/Linux

En mi caso tengo arm de 64 bits (aarch64), pero puedo utiliar también los contenedores para arm, por lo que puedo filtrar por arm y aarch64
En mi caso elijo synopsis8/raspberrypi3-amule, ya que nashgul/amule no me resultó bien y son los dós que hay para arm con más reputación
Cuando elijas un contenedor/app, fijate en los tags, en una misma app/repositorio puede haber tags diferentes para distintas arquitecturas.

Entra por ejemplo a ver los tags de nashgul/amule aquí: https://hub.docker.com/r/nashgul/amule/tags
Verás que tiene dos, uno para amd64 y otro para placas ODROID XU4 que son arm

En nuestro caso de ejemplo, en Pull Image coloco (sin las comillas) el repositorio "synopsis8/raspberrypi3-amule" y en el tag "raspberrypi3" y pulsa a Start
En equipos x86 de 64bits (amd64) es preferible utilizar tchabaud/amule, el cual tiene ligeras diferencias al utilizado en el ejemplo pero es muy similar.


Configuración del contenedor:

Ahora en la parte inferior (Docker Containers) tendrás el contenedor descargado, pulsa Start y configuraremos:
   Revisa la información de overview del contenedor en Dockerhub. En este caso https://hub.docker.com/r/synopsis8/raspberrypi3-amule

    Container name: aMule         # El nombre que le darás para diferenciarlo
    Activa Sync time with host
    Escoje la "Restart Policy":  Son las opciones de inicio o reinicio del contenedor. Parecido a las opciones de inicio del pc automátio en las BIOS ( Abajo del todo enlaces con + info)
                                  #  no             = No inicia el contenedor a menos que tu pulses a Start
                                  #  on-failure     = Lo reinicia si estaba iniciado y se interrumpe por error (Puedes darle un límite para que no quede continuamente reiniciando)
                                  #  unless-stopped = Parecido al "Former Status" en las BIOS, que reiniciaría e inciará siempre a menos que estuviera parado
                                  #  always         = Lo inicia siempre
    Network mode: Bridge
    Host name: aMuleDocker        # Puedes llamarlo como quieras
    No marques "Run container in privileged mode". Ejecutaría el contenedor como root y en caso de comprometerse, el atacante ya tendría privilegios de root y no necesitaría escalar privilegios.

    Port forwargind (Se creará forward de puertos que elijamos de OMV al Contenedor):
        
        Este contenedor ya tiene los puertos configurados que expone:
            Host IP: 0.0.0.0   Host Port: 4661   Exposed Port: 4661/tcp   Protocol: tcp
            Host IP: 0.0.0.0   Host Port: 4662   Exposed Port: 4662/tcp   Protocol: tcp
            Host IP: 0.0.0.0   Host Port: 4665   Exposed Port: 4665/udp   Protocol: udp
            Host IP: 0.0.0.0   Host Port: 4672   Exposed Port: 4672/udp   Protocol: udp
            Host IP: 0.0.0.0   Host Port: 4711   Exposed Port: 4711/tcp   Protocol: tcp
            Host IP: 0.0.0.0   Host Port: 4712   Exposed Port: 4712/tcp   Protocol: tcp

            eMule utiliza 4662 en tcp y 4665 y 4672 en upd. 4711 y 4712 son para administración web y amule-gui
            En tu router solo debes redireccionar 4662 y 4665 en tcp y 4672 en udp hacia la ip de OMV
            No se recomienda redireccionar los puertos de administración, el tráfico no va cifrado.
                            
    En Environment variables ya hay predefinidas algunas pero podemos configurar la contraseña para acceder via web y amule-gui añadiendo:
        Name: WEBUI_PWD     Value: La contraseña que quieras para la administración web
        Name: GUI_PWS       Value: La contraseña que quieras para la administración con amule-gui (recomendada)

    En Volumes and Bind mounts linkaremos nuestras shared folders al contenedor (en mi ejemplo las tengo dentro de /sharedfolders/aMule/) :

        Host Path: /sharedfolders/aMule/conf       Container path:  /home/amule/.aMule
        Host Path: /sharedfolders/aMule/Temp       Container path:  /home/amule/.aMule/Temp
        Host Path: /sharedfolders/aMule/Inconming  Container path:  /home/amule/.aMule/Incoming

Ya puedes darle a Salvar/Save y luego ya podrás escoger el contenedor y darle a Start

Aviso: Cuando añadas entradas en puertos, variables y volumenes debes pulsar al + como para añadir una nueva entrada para que se valide el último registro añadido
Nota: Cuando modificas un contenedor se destruye toda su información excepto la que hayas linkado a tus carpetas alojadas en Shared Folders


Usar y administrar aMule

Para administrar aMule podrás entrar con:

Las contraseñas las habrás especificado en las variables al configurar el contenedor

Te faltaría compartir la carpeta Incoming para que puedas acceder a través de red.
   Por ejemplo en SMB/CIFS para samba/windows, en shares añade la carpeta Incoming que creaste en Shared Folders

Recuerda que en tu router debes redireccionar los puertos 4662 y 4665 tcp y 4672 en udp hacia la ip de OMV
No se recomienda redireccionar los puertos de administración, el tráfico no va cifrado y evitará intentos de accesos no deseados.


Fuentes y más información/ayuda
https://hub.docker.com/r/synopsis8/raspberrypi3-amule
https://www.youtube.com/watch?v=fEdJi1BNhcQ
https://hub.docker.com/r/tchabaud/amule/
Opciones de inicio del contenedor (Restart policy) (Docu de Docker)
Opciones de inicio del contenedor (Restart policy) (Blog externo)