Files
d4rkbot/docker-compose.yml
T
D4rkst3randClaude Opus 4.8 143288affa d4rkbot: API v1 mit Key-System, Env-Diät, Rebranding
- API-Keys (SHA-256-Hash, Scopes, last_used) — Verwaltung auf der Setup-Seite,
  Klartext-Key wird genau einmal angezeigt
- /api/v1: message, dm, roles (add/remove), member/:id, stats — Bearer-Auth
  mit Scope-Prüfung, Embed-Sanitizing, README-Doku mit Python-Beispiel
- Env-Diät: PUBLIC_URL + GITEA_URL jetzt Settings (Env nur Fallback),
  OAuth-Redirect dynamisch; Env enthält nur noch Secrets/Bootstrap
- Rebranding ecobot → d4rkbot (Packages, Container, Cookies, README);
  Volume-Name bleibt ecobot_data (Datenerhalt), Portainer-Stack-Name bleibt

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 11:56:48 +02:00

40 lines
1.6 KiB
YAML

# d4rkbot Stack — deploybar über Portainer (Stacks → Add stack)
# WICHTIG: Portainer-Stack-Name "ecobot" NICHT ändern — er ist Teil des
# Volume-Namens (ecobot_ecobot_data); ein neuer Stack-Name = leeres Volume!
services:
d4rkbot:
build: .
image: d4rkbot:latest
container_name: d4rkbot
restart: unless-stopped
# Werte kommen per Interpolation: lokal aus der .env im Projektordner (liest
# docker compose automatisch), in Portainer aus den Stack-Environment-Variables
environment:
DISCORD_TOKEN: ${DISCORD_TOKEN}
DISCORD_CLIENT_ID: ${DISCORD_CLIENT_ID}
DISCORD_GUILD_ID: ${DISCORD_GUILD_ID:-}
COMMIT_CHANNEL_ID: ${COMMIT_CHANNEL_ID}
DEVLOG_CHANNEL_ID: ${DEVLOG_CHANNEL_ID}
DEVLOG_POST_SECRET: ${DEVLOG_POST_SECRET}
GITEA_API_TOKEN: ${GITEA_API_TOKEN:-}
GITEA_URL: ${GITEA_URL:-https://git.d4rkst3r.de}
GITEA_WEBHOOK_SECRET: ${GITEA_WEBHOOK_SECRET}
DISCORD_CLIENT_SECRET: ${DISCORD_CLIENT_SECRET}
SESSION_SECRET: ${SESSION_SECRET}
ADMIN_DISCORD_ID: ${ADMIN_DISCORD_ID}
PUBLIC_URL: ${PUBLIC_URL:-https://bot.d4rkst3r.de}
# Lokale Zeitzone — wichtig für den Wochen-Rückblick (sonntags 20:00) und Datumsangaben
TZ: ${TZ:-Europe/Berlin}
DB_PATH: /app/data/ecobot.db
# HTTP-Endpoint für Gitea-Webhooks + Webinterface
# NPM leitet bot.d4rkst3r.de → host.docker.internal:3080
ports:
- "3080:3080"
volumes:
# SQLite & Devlog-Bilder überleben Container-Neustarts.
# Volume-Name bleibt aus historischen Gründen "ecobot_data" (Daten!)
- ecobot_data:/app/data
volumes:
ecobot_data: