docs: update CLAUDE.md with CI/CD lessons, update README deployment section
All checks were successful
Deploy Bot on NAS / deploy (push) Successful in 28s
All checks were successful
Deploy Bot on NAS / deploy (push) Successful in 28s
This commit is contained in:
parent
66cabe2fec
commit
0c46ef5a81
2 changed files with 39 additions and 37 deletions
23
CLAUDE.md
23
CLAUDE.md
|
|
@ -12,13 +12,19 @@ Communauté RTF (3 clans : RTF, RTFC, RTFR).
|
|||
| `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) → rsync vers NAS QNAP (192.168.1.208).
|
||||
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` (clé privée ed25519 pour SSH Elewyn@NAS).
|
||||
Secret requis dans Forgejo : `NAS_SSH_KEY` — **doit être encodé en base64** :
|
||||
```bash
|
||||
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)
|
||||
|
||||
|
|
@ -56,8 +62,13 @@ docker-compose.yml # Déploiement container
|
|||
- **Chimera** : easy, normal, hard, brutal, nightmare, ultra
|
||||
- **CvC** : Clan vs Clan
|
||||
|
||||
## Pièges connus
|
||||
## Pièges connus — CI/CD
|
||||
|
||||
- Le `.env` ne doit jamais être commité — il contient le token Discord
|
||||
- `data/`, `screenshots/`, `logs/` sont gitignorés — données persistantes sur le NAS
|
||||
- Le rsync exclut ces dossiers pour ne pas écraser les données en prod
|
||||
- **NAS_SSH_KEY doit être en base64** — `echo "..." > fichier` dans Alpine sh casse les sauts de ligne de la clé brute
|
||||
- **Runner tourne dans Alpine** — `actions/checkout@v4` ne fonctionne pas (pas de Node.js) → utiliser `git clone`; `rsync` et `openssh-client` doivent être installés via `apk add`
|
||||
- **Chemin Docker sur QNAP** : `/share/CACHEDEV1_DATA/.qpkg/container-station/usr/bin/docker` — `docker` n'est pas dans le `$PATH` SSH
|
||||
- **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_keys` sur le NAS pour l'user Elewyn)
|
||||
|
|
|
|||
53
README.md
53
README.md
|
|
@ -107,8 +107,6 @@ CMD ["python", "bot.py"]
|
|||
|
||||
### 4. Create `docker-compose.yml`
|
||||
```yaml
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
discord-bot:
|
||||
build: .
|
||||
|
|
@ -116,14 +114,12 @@ services:
|
|||
env_file:
|
||||
- .env
|
||||
volumes:
|
||||
- ./:/app
|
||||
- ./screenshots:/app/screenshots
|
||||
- ./bot_data.db:/app/bot_data.db
|
||||
- ./data:/app/data
|
||||
- ./logs:/app/logs
|
||||
environment:
|
||||
- TZ=Europe/Paris
|
||||
container_name: rtf-discord-bot
|
||||
|
||||
# Optional: Resource limits
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
|
|
@ -163,36 +159,31 @@ Add Reactions
|
|||
|
||||
URL : `https://discord.com/api/oauth2/authorize?client_id=YOUR_BOT_ID&permissions=378944&scope=bot`
|
||||
|
||||
## 🚀 Déploiement sur QNAP
|
||||
## 🚀 Déploiement
|
||||
|
||||
### Via Container Station (Recommandé)
|
||||
Le déploiement est automatisé via Forgejo Actions.
|
||||
|
||||
1. Install Container Station via App Center
|
||||
2. Create /share/Container/discord-bot/
|
||||
3. Copy all files into this folder
|
||||
4. Edit .env with your tokens
|
||||
5. Container Station → "Create" → "Create Application via docker-compose"
|
||||
6. Select your docker-compose.yml
|
||||
7. Start the container
|
||||
Un push sur `main` déploie en production, un push sur `dev` déploie en développement.
|
||||
|
||||
### Via SSH (Alternative)
|
||||
### Prérequis (une seule fois)
|
||||
|
||||
1. Créer le `.env` sur le NAS dans chaque `DEPLOY_PATH` :
|
||||
```env
|
||||
DISCORD_TOKEN=your_bot_token_here
|
||||
AUTHORIZED_CHANNEL_ID=your_channel_id_here
|
||||
```
|
||||
|
||||
2. Ajouter le secret `NAS_SSH_KEY` dans Forgejo (clé ed25519 encodée en base64) :
|
||||
```bash
|
||||
base64 -w 0 ~/.ssh/runner-nas
|
||||
```
|
||||
|
||||
### Démarrage initial (première fois sur le NAS)
|
||||
|
||||
```bash
|
||||
# Connect to QNAP
|
||||
ssh admin@YOUR_QNAP_IP
|
||||
|
||||
# Navigate to folder
|
||||
cd /share/Container/discord-bot/
|
||||
|
||||
# Install dependencies (if Python is installed)
|
||||
pip3 install -r requirements.txt
|
||||
|
||||
# Test run
|
||||
python3 bot.py
|
||||
|
||||
# Create auto-start service via QNAP interface
|
||||
# Control Panel → Applications → Autorun
|
||||
# Add: cd /share/Container/discord-bot && python3 bot.py &
|
||||
ssh Elewyn@192.168.1.208
|
||||
cd /share/CACHEDEV1_DATA/discord-bot-prod # ou discord-bot-dev
|
||||
/share/CACHEDEV1_DATA/.qpkg/container-station/usr/bin/docker compose up -d
|
||||
```
|
||||
|
||||
## 📊 SQLite Database
|
||||
|
|
|
|||
Loading…
Reference in a new issue