Skip to content

Deployment mit Docker

Sonance wird als fertiges Docker-Image bereitgestellt: ghcr.io/sonance-bot/sonance-bot:latest (public – kein Login nötig). Das Image enthält Node, ffmpeg (via ffmpeg-static), curl, python3 und ein frisches yt-dlp. Auf dem Server brauchst du nur Docker.

Voraussetzung: eine fertige Konfiguration (Token & Application ID).

Am einfachsten, wenn du eine vollständige config.json (inkl. Auto-Join) hast:

Terminal window
docker run -d --name sonance --restart unless-stopped \
-v "$PWD/config.json:/data/config.json" \
ghcr.io/sonance-bot/sonance-bot:latest
docker logs -f sonance # "Eingeloggt als …" = läuft

Das Image liest die Konfiguration aus /data/config.json (CONFIG_PATH).

Secrets über eine .env, Auto-Join-Stand in einem Volume. Lege beide Dateien an:

docker-compose.yml
name: sonance
services:
sonance:
container_name: sonance
image: ghcr.io/sonance-bot/sonance-bot:latest
restart: unless-stopped
environment:
DISCORD_TOKEN: ${DISCORD_TOKEN:?set DISCORD_TOKEN}
DISCORD_CLIENT_ID: ${DISCORD_CLIENT_ID:?set DISCORD_CLIENT_ID}
DISCORD_GUILD_ID: ${DISCORD_GUILD_ID:-}
ALLOWED_ROLES: ${ALLOWED_ROLES:-}
DEFAULT_VOLUME: ${DEFAULT_VOLUME:-100}
volumes:
# Persistiert den /autojoin-Stand über Neustarts.
- sonance-data:/data
volumes:
sonance-data:
Terminal window
# .env (neben der Compose-Datei, enthält deine Secrets)
DISCORD_TOKEN=dein_bot_token
DISCORD_CLIENT_ID=deine_application_id
DISCORD_GUILD_ID=deine_server_id

Starten & Logs:

Terminal window
docker compose up -d
docker compose logs -f

restart: unless-stopped sorgt dafür, dass der Container Abstürze und Server-Reboots übersteht – echtes 24/7. Der Bot hat keine eingehenden Ports; er verbindet sich nur ausgehend zu Discord.

Das Image wird per CI bei jeder Änderung und wöchentlich neu gebaut (frisches yt-dlp). Neueste Version ziehen und neu starten:

Terminal window
# compose:
docker compose pull && docker compose up -d
# oder einzelner Container:
docker pull ghcr.io/sonance-bot/sonance-bot:latest
docker rm -f sonance && docker run -d --name sonance --restart unless-stopped \
-v "$PWD/config.json:/data/config.json" ghcr.io/sonance-bot/sonance-bot:latest