All checks were successful
Deploy Bot on NAS / deploy (push) Successful in 30s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.9 KiB
2.9 KiB
CLAUDE.md
Contexte
Bot Discord de tracking de Personal Best (PB) pour les clan bosses du jeu Raid Shadow Legends. Communauté TEA — The Ember Accord (4 clans : TEAI, TEAF, TEAC, TEACO).
Branches
| Branche | Environnement | Chemin NAS |
|---|---|---|
main |
Production | /share/CACHEDEV1_DATA/discord-bot-prod |
dev |
Développement | /share/CACHEDEV1_DATA/discord-bot-dev |
dev est une branche permanente — ne jamais merger dans main.
Déploiement
CI/CD via Forgejo Actions → runner vm-runner (192.168.1.53, Alpine) → rsync vers NAS QNAP (192.168.1.208).
Push sur main ou dev déclenche le déploiement automatique.
Secret requis dans Forgejo : NAS_SSH_KEY — doit être encodé en base64 :
base64 -w 0 ~/.ssh/runner-nas
Coller le résultat dans le secret (pas le contenu brut du fichier).
Persistance des données (NE PAS écraser)
Ces dossiers vivent sur le NAS et sont montés dans le container — jamais dans le repo, jamais écrasés par rsync :
| Dossier | Contenu |
|---|---|
data/ |
Base SQLite (bot_data.db) |
screenshots/ |
Captures d'écran des PBs |
logs/ |
Logs du bot |
Variables d'environnement (.env sur le NAS)
Fichier .env à créer manuellement sur le NAS dans chaque DEPLOY_PATH :
DISCORD_TOKEN=...
AUTHORIZED_CHANNEL_ID=...
Structure
bot.py # Point d'entrée, charge les cogs
config.py # Config centralisée (token, chemins, boss, clans)
cogs/ # Commandes Discord (un fichier par fonctionnalité)
utils/ # Managers (DB, screenshots, mercy) et handlers
Dockerfile # Image Python 3.9-slim
docker-compose.yml # Déploiement container
Boss supportés
- Hydra : normal, hard, brutal, nightmare
- Chimera : easy, normal, hard, brutal, nightmare, ultra
- CvC : Clan vs Clan
Pièges connus — CI/CD
- NAS_SSH_KEY doit être en base64 —
echo "..." > fichierdans Alpine sh casse les sauts de ligne de la clé brute - Runner tourne dans Alpine —
actions/checkout@v4ne fonctionne pas (pas de Node.js) → utilisergit clone;rsyncetopenssh-clientdoivent être installés viaapk add - Chemin Docker sur QNAP :
/share/CACHEDEV1_DATA/.qpkg/container-station/usr/bin/docker—dockern'est pas dans le$PATHSSH - Pas de
--build— le code est monté en volume (./:/app), un simple redémarrage suffit - Pas de
container_name— les envs prod et dev partagent le même NAS, un nom hardcodé crée un conflit ; Docker Compose dérive le nom depuis le dossier - rsync exclut
__pycache__/— créés par Docker (root), l'user Elewyn ne peut pas les supprimer via rsync--delete - rsync exclut
.github/— vestige de l'ancien CI GitHub Actions, ne pas envoyer sur le NAS - Clé SSH workstation :
~/.ssh/runner-nas(ed25519, autorisée dans~/.ssh/authorized_keyssur le NAS pour l'user Elewyn)