Files
stoat-mbot/deploy/compose.override.yml.example
T
Leonid PershinandClaude Opus 5 a9b7ccdd16 Add music bot for self-hosted Stoat with web control panel
Plays audio into Stoat voice channels over LiveKit and exposes the same
player through both chat commands and a browser panel, so the two never
drift apart: everything routes through a single MusicManager.

- core: per-server GuildPlayer (queue, loop, shuffle, seek, volume,
  idle auto-leave) driving revoice.js/@livekit/rtc-node and ffmpeg
- sources: yt-dlp for YouTube/SoundCloud, direct media URLs and internet
  radio, optional local library with path-traversal guards
- bot: 18 chat commands with aliases, plus !panel one-time login links
- api: Fastify REST + WebSocket, sessions authenticated against the
  instance's own /auth/session/login (TOTP supported), permissions
  re-checked against Stoat membership and roles on every request
- web: React panel with search, queue editing, seek and volume
- deploy: Dockerfile, compose.override.yml and Caddyfile snippets for
  dropping the service into an existing /opt/stoat stack

Verified with npm run typecheck, both builds, and scripts/smoke-api.mjs
(9 API checks). Voice playback itself needs a live instance to test.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 23:12:43 +03:00

29 lines
1.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# /opt/stoat/compose.override.yml
#
# Раскладка:
# /opt/stoat — ваш self-hosted Stoat (compose.yml, Caddyfile, ...)
# /opt/stoat-mbot — этот репозиторий
#
# Сервис живёт в том же compose-проекте, поэтому попадает в сеть stoat_default:
# Caddy видит его как http://mbot:3005, а бот — Stoat API как http://api:14702.
services:
# ваш существующий override для Caddy — оставьте как есть
caddy:
ports: !override
- "127.0.0.1:8880:80"
mbot:
build: ../stoat-mbot
restart: always
env_file: ../stoat-mbot/.env
depends_on:
api:
condition: service_started
volumes:
# cookies.txt для yt-dlp и/или локальная медиатека
- ../stoat-mbot/data:/data
# Панель отдаётся через Caddy. Порт наружу нужен, только если панель
# проксирует внешний nginx на хосте, минуя Caddy:
# ports:
# - "127.0.0.1:3005:3005"