Files
d4rkbot/docker-compose.yml
T
D4rkst3randClaude Opus 4.8 a70eac08d7 Feature 4: Webinterface — React-Frontend, Discord-OAuth2, REST-API
- Discord-OAuth2-Login (identify-Scope, CSRF-State, signierte Session-Cookies, keine Token-Speicherung)
- REST-API: /api/devlogs (öffentlich), /api/commits (nur ADMIN_DISCORD_ID), /api/me
- React + Vite Frontend: Devlog-Archiv mit Mini-Markdown-Renderer, Commit-Tabelle, dunkles EcoGame-Theme
- Fastify liefert frontend/dist mit SPA-Fallback aus; Vite-Dev-Proxy für lokale Entwicklung
- Multi-Stage-Dockerfile (Frontend-Build im Image), neue Env-Vars in Compose + .env.example
- README: OAuth2-Setup (Redirect-URLs, Client Secret) und Frontend-Workflow

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

32 lines
1.1 KiB
YAML

# EcoBot Stack — deploybar über Portainer (Stacks → Add stack)
services:
ecobot:
build: .
image: ecobot:latest
container_name: ecobot
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}
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}
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 & Co. überleben Container-Neustarts
- ecobot_data:/app/data
volumes:
ecobot_data: