📥 Compilar aMule desde GitHub (Rama Master) en Raspberry Pi 5 usando CMake

Fecha de actualización: Mayo 2026

Compilar aMule desde GitHub no solo sirve para tener nuevas funciones, sino para asegurar que el programa sea totalmente compatible con hardware y software moderno. En esta guía usaremos el sistema de compilación oficial del proyecto: CMake, que sustituye al antiguo autotools.

🎯 Objetivo: Obtener amuled (demonio), amulegui (interfaz remota), amulecmd (consola) y amuleweb (interfaz web) funcionando en Raspberry Pi 5 con Debian 13 / Raspberry Pi OS.


📋 Tabla de versiones y ramas

TipoQué es¿Cuándo elegirla?
Master (rama principal)El tronco principal, con los últimos parchesNuestra elección. Es la más compatible con sistemas modernos.
Tags (etiquetas)Versiones congeladas (ej. v2.3.3)Solo si usas un sistema operativo muy antiguo.
Branches de desarrolloRamas experimentalesSolo para desarrolladores.

🖥️ Configuración previa: Wayland vs X11

La Raspberry Pi 5 con Debian 13 usa Wayland por defecto. Sin embargo, aMule funciona mejor con X11.

Para saber si estás utilizando Wayland o X11 (Xorg) en tu sistema Linux, el método más rápido y universal es consultarlo en tu terminal.

echo $XDG_SESSION_TYPE

Si la respuesta es wayland, estás usando Wayland.
Si la respuesta es x11 (o xorg), estás usando el sistema X11

Para cambiarlo:

sudo raspi-config
  • Ve a Advanced OptionsWayland
  • Selecciona X11
  • Reinicia

🧹 1. Limpieza de instalaciones previas

Si no tenías amule instalado, pasa al punto 2.

Si ya tenías aMule instalado de los repositorios o de una compilación anterior, ejecuta los siguientes comandos:

sudo systemctl stop amule.service 2>/dev/null
sudo apt purge amule amule-daemon amule-utils-gui amule-utils amule-common -y
sudo apt autoremove --purge -y

📦 2. Instalación de dependencias

sudo apt update
sudo apt install -y build-essential cmake git \
    libboost-all-dev libwxgtk3.2-dev libcryptsetup-dev \
    libcurl4-openssl-dev libgd-dev libgeoip-dev \
    libupnp-dev libcrypto++-dev libreadline-dev \
    libglib2.0-dev pkg-config gettext zlib1g-dev

🔽 3. Obtención del código (rama master)

cd ~

git clone https://github.com/amule-project/amule.git

cd amule

git checkout master

⚙️ 4. Configuración de la compilación con CMake

Creamos un directorio separado para compilar (buena práctica):

mkdir -p build

cd build

Ahora configuramos la compilación optimizada para Raspberry Pi 5 (Cortex-A76):

cmake .. \
    -DCMAKE_CXX_FLAGS="-O3 -march=armv8.2-a+crypto -mtune=cortex-a76 -pipe" \
    -DBUILD_DAEMON=ON \
    -DBUILD_REMOTEGUI=ON \
    -DBUILD_AMULECMD=ON \
    -DBUILD_WEBSERVER=ON \
    -DBUILD_MONOLITHIC=OFF \
    -DENABLE_MMAP=ON \
    -DENABLE_UPNP=ON \
    -DCMAKE_INSTALL_PREFIX=/usr/local

📝 Explicación de las opciones:

OpciónEfecto
-DCMAKE_CXX_FLAGS="..."Optimizaciones para el procesador de la Pi 5
-DBUILD_DAEMON=ONCompila amuled (demonio)
-DBUILD_REMOTEGUI=ONCompila amulegui (interfaz remota)
-DBUILD_AMULECMD=ONCompila amulecmd (consola)
-DBUILD_WEBSERVER=ONCompila amuleweb (interfaz web)
-DBUILD_MONOLITHIC=OFFSepara los componentes (necesario para el demonio)
-DENABLE_MMAP=ONMejora el rendimiento de memoria
-DENABLE_UPNP=ONActiva UPnP para abrir puertos automáticamente

🔨 5. Compilación e instalación

# Comienza la compilación con este comando
make -j$(nproc)

# Instalamos con la siguiente instruccion
sudo make install

# Actualiza los enlaces y la caché de las librerías compartidas.
sudo ldconfig

⏱️ La compilación tarda unos minutos. -j$(nproc) usa los 4 núcleos de la Raspberry Pi 5.


⚙️ 6. Configuración del demonio

A. Primer arranque (crea la carpeta .aMule)

/usr/local/bin/amuled

(Se cerrará solo. Es normal)

B. Generar contraseña encriptada (hash MD5)

echo -n "TuContraseñaSegura" | md5sum

Crea un par de contraseñas, las usaremos mas adelante.
Copia el resultado (varios caracteres hexadecimales).

C. Editar la configuración

Es aquí donde utilizaremos las dos contraseñas creadas, mas la activación de las conexiones externas.

nano ~/.aMule/amule.conf

Modifica estas líneas:

AcceptExternalConnections=1
ECPassword=pega_uno_de los_hash_que_copiaste

En la sección [WebServer]:

[WebServer]
Enabled=1
Password=pega_el_otro_hash_que_creaste
Port=4711

Guarda con Ctrl+O, Enter, y sal con Ctrl+X.


🚀 7. Crear servicio systemd (arranque automático)

sudo nano /etc/systemd/system/amule.service

Pega esto (cambia TU_USUARIO):

[Unit]
Description=aMule Master Daemon
After=network.target

[Service]
Type=simple
User=tu_usuario
Group=tu_grupo
ExecStart=/usr/local/bin/amuled
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Activa el servicio:

sudo systemctl daemon-reload
sudo systemctl enable amule.service
sudo systemctl start amule.service
sudo systemctl status amule.service

Si ves active (running), el demonio está funcionando.


Acceso desde el navegador

Abre http://localhost:4711


🧪 9. Comprobación final

# Ver ejecutables instalados
ls -la /usr/local/bin/amule*

# Ver puertos abiertos
sudo netstat -tlnp | grep -E "4711|4712"

Deberías ver:

  • Puerto 4712amuled (conexión interna con amuleweb/amulegui)
  • Puerto 4711amuleweb (servidor web)

🐛 Posibles errores y soluciones

ErrorSolución
glib-2.0 development headers not foundsudo apt install libglib2.0-dev pkg-config
BUILD_WEBSERVER=OFF al verificarAsegúrate de incluir -DBUILD_WEBSERVER=ON en el cmake
amuleweb: no existe el ficheroRecompila con -DBUILD_WEBSERVER=ON
Boost not foundAñade -DBoost_NO_BOOST_CMAKE=ON al comando cmake

🔍 Diagnóstico rápido

Si no funciona aMuleWeb, comprueba si está corriendo:

# Ver si hay proceso de amuleweb
ps aux | grep amuleweb | grep -v grep

# Ver qué puertos están escuchando
sudo netstat -tlnp | grep 4711

Si no ves nada en el puerto 4711, el problema es que amuleweb no se ha iniciado.


⚠️ El problema crónico de aMuleWeb: cuando la interfaz remota desaparece

Lamentablemente, aMule arrastra un problema conocido desde hace años: aMuleWeb se cierra sin previo aviso, dejándonos sin acceso remoto a nuestras descargas desde fuera de la red local.

Es importante aclarar un punto: la guía de compilación que hemos seguido es perfectamente correcta para compilar aMule desde GitHub y configurar amuled como un servicio estable. El problema no es de compilación.

Como podrás comprobar revisando los informes de la comunidad y los issues en GitHub, se trata de un fallo intermitente del propio programa que lleva presente mucho tiempo. No es un caso aislado, sino una anomalía bien documentada.

Entonces, ¿cómo solucionarlo?

La respuesta más fiable y limpia, especialmente para una Raspberry Pi que debe funcionar 24/7, es implementar un vigilante (watchdog) como el que te he mostrado. No es una invención mía: es la misma técnica que utilizan muchos usuarios para lidiar con este comportamiento.


🕵️‍♂️ No estás solo: Es un fallo conocido

He revisado los informes de la comunidad y el propio GitHub del proyecto. Lo que describes es un clásico:

  • Se cierra sin avisar (crashea): Hay informes de que amuleweb falla inesperadamente, sobre todo cuando la lista de descargas se hace larga o hay muchos elementos para mostrar en la interfaz web . Es justo lo que te ha pasado a ti.
  • El demonio (amuled) sigue vivo: Lo crucial es que amuleweb puede morir, pero amuled (el núcleo que realmente descarga los archivos) sigue funcionando perfectamente en segundo plano . Por eso tu descarga no se detuvo por completo, pero no podías verla.

Un usuario en el foro de aMule describió exactamente tu mismo problema: amuleweb se iniciaba y acto seguido el proceso desaparecía, sin más explicación .


💡 El diagnóstico final (y más simple)

Olvida lo de systemd y los servicios «colgados». El diagnóstico es directo:

  • Síntoma: No hay proceso amuleweb corriendo.
  • Prueba: El puerto 4711 no está en uso.
  • Diagnóstico: El programa amuleweb ha fallado y se ha detenido. Es un crasheo, no un cuelgue.

🛠️ Solución práctica para tu Raspberry

Dado que amuleweb es inestable y se cierra solo de vez en cuando , la solución más robusta para un sistema 24/7 como tu Raspberry Pi es, efectivamente, un «vigilante» (watchdog) que lo reactive automáticamente cuando muera.

Aquí tienes la forma más sencilla de hacerlo, rescatando la idea del script anterior, pero adaptada a tu situación actual.

Paso 1: Crear el script vigilante

Conéctate por SSH y crea el script:

sudo nano /usr/local/bin/amuleweb-watchdog.sh

Paso 2: Copiar el contenido (más simple y efectivo)

Este script es más simple: solo comprueba si el proceso amuleweb existe y, si no, lo arranca.

#!/bin/bash

# Script para vigilar y reiniciar amuleweb si se cierra

if pgrep -x "amuleweb" > /dev/null
then
    # Si está corriendo, no hace nada
    :
else
    # Si no se encuentra, lo registra en el sistema y lo reinicia
    logger "amuleweb-watchdog: amuleweb no encontrado, reiniciando..."
    # Asegúrate de cambiar 'tu_usuario' por el tuyo, ej. 'raspberry'
    sudo -u tu_usuario /usr/local/bin/amuleweb --amule-config-file=/home/tu_usuario/.aMule/amule.conf &
fi

Paso 3: Dar permisos y probar

sudo chmod +x /usr/local/bin/amuleweb-watchdog.sh

Paso 4: Programarlo cada minuto

Edita el crontab del usuario root para que vigile todo el tiempo:

sudo crontab -e

Añade esta línea al final del archivo:

* * * * * /usr/local/bin/amuleweb-watchdog.sh

Con esto, el sistema comprobará cada minuto si amuleweb está vivo y lo levantará automáticamente si se ha cerrado.


📌 Notas importantes

  • Usamos CMake porque es el sistema oficial de compilación del proyecto aMule desde 2024.
  • La compilación con -DBUILD_MONOLITHIC=OFF es necesaria para que amuled funcione correctamente como servicio.
  • Los puertos 4712 (EC) y 4711 (Web) son distintos. No los confundas.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio