Merge pull request #16 from skylanix/watchtower_readme

Ajout Watchtower et améliore le README
This commit is contained in:
shionn
2025-08-25 07:53:31 +02:00
committed by GitHub
5 changed files with 93 additions and 97 deletions

View File

@@ -1,5 +0,0 @@
# Configuration Zabbix (optionnel)
ENABLE_ZABBIX=false
ZABBIX_SERVER=zabbix-server.example.com
ZABBIX_HOSTNAME=MamieHenriette
ZABBIX_PORT=10050

View File

@@ -1,55 +1,39 @@
name: Build and Push Docker Image name: Create and publish a Docker image
on: on:
push: push:
branches: [ main ] branches: ['*']
tags: [ 'v*' ]
pull_request:
branches: [ main ]
env: env:
REGISTRY: ghcr.io REGISTRY: ghcr.io
IMAGE_NAME: skylanix/mamiehenriette IMAGE_NAME: ${{ github.repository }}
jobs: jobs:
build: build-and-push-image:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
packages: write packages: write
steps: steps:
- uses: actions/checkout@v4 - name: Checkout repository
uses: actions/checkout@v4
- name: Set up Docker Buildx - name: Log in to the Container registry
uses: docker/setup-buildx-action@v3 uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with: with:
registry: ${{ env.REGISTRY }} registry: ${{ env.REGISTRY }}
username: ${{ github.actor }} username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata - name: Extract metadata (tags, labels) for Docker
id: meta id: meta
uses: docker/metadata-action@v5 uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
with: with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=raw,value=latest,enable={{is_default_branch}}
labels: |
org.opencontainers.image.title=${{ github.repository }}
org.opencontainers.image.description=Bot multi-plateformes Discord/Twitch/YouTube pour la communauté STEvE
org.opencontainers.image.source=https://github.com/${{ github.repository }}
org.opencontainers.image.url=https://github.com/${{ github.repository }}
org.opencontainers.image.licenses=GPL-3.0
- name: Build and push - name: Build and push Docker image
uses: docker/build-push-action@v5 uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
with: with:
context: . context: .
push: true push: true

View File

@@ -7,7 +7,7 @@
- [Vue d'ensemble](#vue-densemble) - [Vue d'ensemble](#vue-densemble)
- [Fonctionnalités](#fonctionnalités) - [Fonctionnalités](#fonctionnalités)
- [Discord](#discord) - [Discord](#discord)
- [Twitch](#twitch-en-développement) - [Twitch](#twitch)
- [YouTube Live](#youtube-live-en-développement) - [YouTube Live](#youtube-live-en-développement)
- [Interface d'administration](#interface-dadministration) - [Interface d'administration](#interface-dadministration)
- [Surveillance](#surveillance) - [Surveillance](#surveillance)
@@ -15,7 +15,6 @@
- [Prérequis](#prérequis) - [Prérequis](#prérequis)
- [Création du bot Discord](#création-du-bot-discord) - [Création du bot Discord](#création-du-bot-discord)
- [Démarrage rapide](#démarrage-rapide) - [Démarrage rapide](#démarrage-rapide)
- [Configuration](#configuration)
- [Commandes Docker utiles](#commandes-docker-utiles) - [Commandes Docker utiles](#commandes-docker-utiles)
- [Mise à jour](#mise-à-jour) - [Mise à jour](#mise-à-jour)
- [Configuration avancée](#configuration-avancée) - [Configuration avancée](#configuration-avancée)
@@ -41,7 +40,7 @@ Mamie Henriette est un bot intelligent open-source développé spécifiquement p
### Caractéristiques principales ### Caractéristiques principales
- Interface web d'administration complète - Interface web d'administration complète
- Gestion multi-plateformes (Discord, Twitch, YouTube Live) - Gestion multi-plateformes (Discord opérationnel, Twitch intégré, YouTube Live en développement)
- Système de notifications automatiques - Système de notifications automatiques
- Base de données intégrée pour la persistance - Base de données intégrée pour la persistance
- Surveillance optionnelle avec Zabbix *(non testée)* - Surveillance optionnelle avec Zabbix *(non testée)*
@@ -55,9 +54,8 @@ Mamie Henriette est un bot intelligent open-source développé spécifiquement p
- **Recherche ProtonDB** : Commande `!protondb <nom_du_jeu>` pour vérifier la compatibilité Linux/Steam Deck - **Recherche ProtonDB** : Commande `!protondb <nom_du_jeu>` pour vérifier la compatibilité Linux/Steam Deck
- **Modération** : Outils intégrés - **Modération** : Outils intégrés
### Twitch *(en développement)* ### Twitch
- **Chat bot** : Commandes et interactions - **Chat bot** : Commandes et interactions automatiques
- **Événements live** : Notifications de stream
### YouTube Live *(en développement)* ### YouTube Live *(en développement)*
- **Chat bot** : Modération et commandes - **Chat bot** : Modération et commandes
@@ -79,6 +77,7 @@ Mamie Henriette est un bot intelligent open-source développé spécifiquement p
### Prérequis ### Prérequis
- [Docker Engine](https://docs.docker.com/engine/install/) ou [Docker Desktop](https://docs.docker.com/desktop/) - [Docker Engine](https://docs.docker.com/engine/install/) ou [Docker Desktop](https://docs.docker.com/desktop/)
- Token Discord pour le bot - Token Discord pour le bot
- Token Twitch (optionnel) pour les fonctionnalités Twitch
### Création du bot Discord ### Création du bot Discord
@@ -94,7 +93,7 @@ Avant d'installer MamieHenriette, vous devez créer un bot Discord et obtenir so
3. **Configurer le bot** : 3. **Configurer le bot** :
- Dans le menu latéral, cliquez sur "Bot" - Dans le menu latéral, cliquez sur "Bot"
- Ajoutez une photo de profil et un pseudo à votre bot - Ajoutez une photo de profil et un pseudo à votre bot
- **Important** : Activez les "Privileged Gateway Intents" : - **Important activez les intents** :
- ☑️ Presence Intent - ☑️ Presence Intent
- ☑️ Server Members Intent - ☑️ Server Members Intent
- ☑️ Message Content Intent - ☑️ Message Content Intent
@@ -126,15 +125,7 @@ cd MamieHenriette
docker compose up --build -d docker compose up --build -d
``` ```
### Configuration > ⚠️ **Important** : Après configuration via l'interface web http://localhost:5000, **redémarrez le conteneur** pour que les changements soient pris en compte :
1. **Interface web** : Accédez à http://localhost
2. **Token Discord** : Section "Configurations"
3. **ProtonDB** : Configurer l'API Algolia dans "Configurations" pour activer `!protondb`
4. **Humeurs** : Définir les statuts du bot
5. **Canaux** : Configurer les notifications
> ⚠️ **Important** : Après avoir configuré le token Discord, les humeurs et autres fonctionnalités via l'interface web, **redémarrez le conteneur** pour que les changements soient pris en compte :
> ```bash > ```bash
> docker compose restart MamieHenriette > docker compose restart MamieHenriette
> ``` > ```
@@ -208,10 +199,11 @@ environment:
| Section | Fonction | | Section | Fonction |
|---------|----------| |---------|----------|
| **Configurations** | Tokens, paramètres généraux et configuration ProtonDB | | **Configurations** | Tokens Discord/Twitch, paramètres généraux et configuration ProtonDB |
| **Humeurs** | Gestion des statuts Discord | | **Humeurs** | Gestion des statuts Discord |
| **Commandes** | Commandes personnalisées | | **Commandes** | Commandes personnalisées multi-plateformes |
| **Modération** | Outils de gestion | | **Messages** | Messages automatiques et notifications |
| **Modération** | Outils de gestion communautaire |
## Architecture du projet ## Architecture du projet
@@ -226,6 +218,9 @@ environment:
├── discordbot/ # Module Discord ├── discordbot/ # Module Discord
│ └── __init__.py # Bot et handlers │ └── __init__.py # Bot et handlers
├── twitchbot/ # Module Twitch
│ └── __init__.py # Bot Twitch et handlers
├── protondb/ # Module ProtonDB ├── protondb/ # Module ProtonDB
│ └── __init__.py # API Algolia et recherche compatibilité │ └── __init__.py # API Algolia et recherche compatibilité
@@ -255,14 +250,18 @@ environment:
### Architecture multi-thread ### Architecture multi-thread
- **Thread 1** : Interface web Flask (port 5000) - **Thread 1** : Interface web Flask (port 5000)
- **Thread 2** : Bot Discord et tâches automatisées - **Thread 2** : Bot Discord et tâches automatisées
- **Thread 3** : Bot Twitch et gestion du chat
### Dépendances principales ### Dépendances principales
``` ```
discord.py # API Discord discord.py>=2.3.2 # API Discord
flask # Interface web flask>=2.3.2 # Interface web
requests # Client HTTP flask-sqlalchemy>=3.0.3 # ORM SQLAlchemy
waitress # Serveur WSGI requests>=2.32.4 # Client HTTP
algoliasearch # API ProtonDB/SteamDB waitress>=3.0.2 # Serveur WSGI
algoliasearch>=4 # API ProtonDB/SteamDB
twitchAPI>=4.5.0 # API Twitch
python-dotenv==1.0.0 # Variables d'environnement
``` ```
## Développement ## Développement
@@ -270,8 +269,14 @@ algoliasearch # API ProtonDB/SteamDB
### Installation locale ### Installation locale
```bash ```bash
python3 -m venv venv python3 -m venv venv
```
```bash
source venv/bin/activate source venv/bin/activate
```
```bash
pip install -r requirements.txt pip install -r requirements.txt
```
```bash
python run-web.py python run-web.py
``` ```

View File

@@ -1,30 +1,41 @@
services: services:
mamiehenriette: mamiehenriette:
# Nom du conteneur container_name: MamieHenriette # Nom du conteneur
container_name: MamieHenriette image: ghcr.io/skylanix/mamiehenriette:latest # Image hébergée sur GitHub Container Registry
restart: "no" # N'autorise pas le redémarrage automatique
# Image hébergée sur GitHub Container Registry # build: . # Build du conteneur à partir d'un Dockerfile local (décommentez si nécessaire)
image: ghcr.io/skylanix/mamiehenriette:latest # image: mamiehenriette # Build du conteneur à partir d'un Dockerfile local (décommentez si nécessaire)
# Build du conteneur à partir d'un Dockerfile local
# build: .
# image: mamiehenriette
# Redémarrage automatique sauf si arrêté manuellement
restart: unless-stopped
environment: environment:
- TZ=Europe/Paris # Fuseau horaire TZ: Europe/Paris # Fuseau horaire
- ENABLE_ZABBIX=false # Surveillance désactivée ENABLE_ZABBIX: false # Surveillance désactivée
- ZABBIX_SERVER=zabbix-server.example.com ZABBIX_SERVER: zabbix-server.example.com
- ZABBIX_HOSTNAME=mamie-henriette-bot ZABBIX_HOSTNAME: mamiehenriette
volumes: volumes:
# Base de données et configuration persistante - ./instance:/app/instance # Base de données et configuration persistante
- ./instance:/app/instance
ports: ports:
# Interface web sur http://localhost:8000 - 5000:5000 # Interface web sur http://localhost:5000
- 5000:5000 # - "10050:10050" # Port Zabbix (décommentez si nécessaire)
# Port Zabbix (décommentez si nécessaire)
# - "10050:10050" watchtower: # Permet de mettre à jours automatiquement
image: containrrr/watchtower:latest
container_name: watchtower # Nom du conteneur
restart: "no" # N'autorise pas le redémarrage automatique
environment:
TZ: Europe/Paris # Fuseau horaire
# Liste des conteneurs à surveiller (séparés par des espaces)
WATCHTOWER_INCLUDE: "MamieHenriette"
WATCHTOWER_SCHEDULE: "0 */30 * * * *" # Vérification toutes les 30 minutes
WATCHTOWER_MONITOR_ONLY: "false" # Mode surveillance uniquement : détecte les mises à jour mais ne les applique pas
WATCHTOWER_CLEANUP: "true" # Supprime automatiquement les anciennes images après mise à jour
WATCHTOWER_INCLUDE_RESTARTING: "true" # Inclut les conteneurs en cours de redémarrage dans la surveillance
# URL de notification Discord (webhook), (décommentez si nécessaire)
# WATCHTOWER_NOTIFICATION_URL: "discord://token@id"
# Format personnalisé des messages de notification (décommentez si nécessaire)
# WATCHTOWER_NOTIFICATION_TEMPLATE: |-
# {{range .}}{{.Time.Format "01-02-2006 15:04:05"}} ({{.Level}})':' {{.Message}}{{println}}{{end}}
# WATCHTOWER_NOTIFICATIONS: shoutrrr # Service de notification utilisé pour Discord (décommentez si nécessaire)
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Monte le socket Docker pour permettre à Watchtower de surveiller les conteneurs

View File

@@ -1,21 +1,22 @@
# Gestion des variables d'environnement
python-dotenv==1.0.0 python-dotenv==1.0.0
# necessaire pour l'api discord # cessaire pour l'API Discord
discord.py==2.3.2 discord.py==2.3.2
aiohttp>=3.7.4,<4 aiohttp>=3.7.4,<4
audioop-lts; python_version>='3.13' audioop-lts; python_version>='3.13'
# api twitch # API Twitch
twitchAPI>=4.5.0 twitchAPI>=4.5.0
# necessaire pour l'hebergement du site web # cessaire pour l'hébergement du site web
flask>=2.3.2 flask>=2.3.2
flask-sqlalchemy>=3.0.3 flask-sqlalchemy>=3.0.3
waitress>=3.0.2 waitress>=3.0.2
# necessaire pour l'appel à l'api humble bundle # cessaire pour l'appel à l'API Humble Bundle
requests>=2.32.4 requests>=2.32.4
# necessaire pour l'appel à protopn db # cessaire pour l'appel à ProtonDB
algoliasearch>=4,<5 algoliasearch>=4,<5