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).
Variante A: docker run mit config.json
Section titled “Variante A: docker run mit config.json”Am einfachsten, wenn du eine vollständige config.json (inkl. Auto-Join) hast:
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äuftDas Image liest die Konfiguration aus /data/config.json (CONFIG_PATH).
Variante B: docker compose
Section titled “Variante B: docker compose”Secrets über eine .env, Auto-Join-Stand in einem Volume. Lege beide Dateien an:
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:# .env (neben der Compose-Datei, enthält deine Secrets)DISCORD_TOKEN=dein_bot_tokenDISCORD_CLIENT_ID=deine_application_idDISCORD_GUILD_ID=deine_server_idStarten & Logs:
docker compose up -ddocker compose logs -f24/7 & Neustarts
Section titled “24/7 & Neustarts”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.
Updates ausrollen
Section titled “Updates ausrollen”Das Image wird per CI bei jeder Änderung und wöchentlich neu gebaut (frisches
yt-dlp). Neueste Version ziehen und neu starten:
# compose:docker compose pull && docker compose up -d
# oder einzelner Container:docker pull ghcr.io/sonance-bot/sonance-bot:latestdocker 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