Clean web UI with a bundled aria2 JSON-RPC daemon.
Use the published image:
docker run --rm \
-p 8680:80 \
-p 6800:6800 \
-p 6881:6881/tcp \
-p 6881:6881/udp \
-e ARIA2_RPC_SECRET=your-secret \
-v encola-config:/config \
-v encola-downloads:/downloads \
ghcr.io/jimscope/encola:latestOr build it locally:
docker build -t encola:latest .
docker run --rm \
-p 8680:80 \
-p 6800:6800 \
-p 6881:6881/tcp \
-p 6881:6881/udp \
-e ARIA2_RPC_SECRET=your-secret \
-v encola-config:/config \
-v encola-downloads:/downloads \
encola:latestOpen http://localhost:8680, then set the secret token in Settings.
This folder is a minimal Runtipi dynamic app:
config.jsondeclares the app metadata and enables dynamic compose.docker-compose.ymlmarks the UI service as the main app withx-runtipi.- The same container runs BusyBox httpd and aria2.
- Runtipi/Traefik handles the web route to the UI, so Encola does not proxy aria2.
- The aria2 RPC port is exposed directly on
6800.
The default RPC endpoint is computed as:
http://<current-host>:6800/jsonrpc
If aria2 is published somewhere else, change the endpoint in Settings. The endpoint is saved in localStorage; the aria2 secret token is saved only in sessionStorage.
Downloads are stored in /downloads; aria2 session data is stored in /config.
Because this setup avoids an internal proxy, the browser must be able to reach http://<current-host>:6800/jsonrpc. If the UI is exposed only through HTTPS, browsers can block the plain HTTP RPC request as mixed content; in that case use the local HTTP app URL or add a dedicated HTTPS route/proxy for aria2.
Pushes to main build and publish ghcr.io/jimscope/encola:latest. Version tags like v0.1.0 also publish matching image tags.