mirror of
https://github.com/skylanix/MamieHenriette.git
synced 2026-02-06 14:50:34 +01:00
Merge pull request #16 from skylanix/watchtower_readme
Ajout Watchtower et améliore le README
This commit is contained in:
@@ -1,5 +0,0 @@
|
||||
# Configuration Zabbix (optionnel)
|
||||
ENABLE_ZABBIX=false
|
||||
ZABBIX_SERVER=zabbix-server.example.com
|
||||
ZABBIX_HOSTNAME=MamieHenriette
|
||||
ZABBIX_PORT=10050
|
||||
64
.github/workflows/docker-build.yml
vendored
64
.github/workflows/docker-build.yml
vendored
@@ -1,57 +1,41 @@
|
||||
name: Build and Push Docker Image
|
||||
name: Create and publish a Docker image
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
tags: [ 'v*' ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
branches: ['*']
|
||||
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
IMAGE_NAME: skylanix/mamiehenriette
|
||||
IMAGE_NAME: ${{ github.repository }}
|
||||
|
||||
jobs:
|
||||
build:
|
||||
build-and-push-image:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Log in to the Container registry
|
||||
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Log in to GitHub Container Registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
|
||||
- name: Extract metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
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
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
53
README.md
53
README.md
@@ -7,7 +7,7 @@
|
||||
- [Vue d'ensemble](#vue-densemble)
|
||||
- [Fonctionnalités](#fonctionnalités)
|
||||
- [Discord](#discord)
|
||||
- [Twitch](#twitch-en-développement)
|
||||
- [Twitch](#twitch)
|
||||
- [YouTube Live](#youtube-live-en-développement)
|
||||
- [Interface d'administration](#interface-dadministration)
|
||||
- [Surveillance](#surveillance)
|
||||
@@ -15,7 +15,6 @@
|
||||
- [Prérequis](#prérequis)
|
||||
- [Création du bot Discord](#création-du-bot-discord)
|
||||
- [Démarrage rapide](#démarrage-rapide)
|
||||
- [Configuration](#configuration)
|
||||
- [Commandes Docker utiles](#commandes-docker-utiles)
|
||||
- [Mise à jour](#mise-à-jour)
|
||||
- [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
|
||||
|
||||
- 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
|
||||
- Base de données intégrée pour la persistance
|
||||
- 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
|
||||
- **Modération** : Outils intégrés
|
||||
|
||||
### Twitch *(en développement)*
|
||||
- **Chat bot** : Commandes et interactions
|
||||
- **Événements live** : Notifications de stream
|
||||
### Twitch
|
||||
- **Chat bot** : Commandes et interactions automatiques
|
||||
|
||||
### YouTube Live *(en développement)*
|
||||
- **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
|
||||
- [Docker Engine](https://docs.docker.com/engine/install/) ou [Docker Desktop](https://docs.docker.com/desktop/)
|
||||
- Token Discord pour le bot
|
||||
- Token Twitch (optionnel) pour les fonctionnalités Twitch
|
||||
|
||||
### 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** :
|
||||
- Dans le menu latéral, cliquez sur "Bot"
|
||||
- Ajoutez une photo de profil et un pseudo à votre bot
|
||||
- **Important** : Activez les "Privileged Gateway Intents" :
|
||||
- **Important activez les intents** :
|
||||
- ☑️ Presence Intent
|
||||
- ☑️ Server Members Intent
|
||||
- ☑️ Message Content Intent
|
||||
@@ -126,15 +125,7 @@ cd MamieHenriette
|
||||
docker compose up --build -d
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
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 :
|
||||
> ⚠️ **Important** : Après configuration via l'interface web http://localhost:5000, **redémarrez le conteneur** pour que les changements soient pris en compte :
|
||||
> ```bash
|
||||
> docker compose restart MamieHenriette
|
||||
> ```
|
||||
@@ -208,10 +199,11 @@ environment:
|
||||
|
||||
| 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 |
|
||||
| **Commandes** | Commandes personnalisées |
|
||||
| **Modération** | Outils de gestion |
|
||||
| **Commandes** | Commandes personnalisées multi-plateformes |
|
||||
| **Messages** | Messages automatiques et notifications |
|
||||
| **Modération** | Outils de gestion communautaire |
|
||||
|
||||
## Architecture du projet
|
||||
|
||||
@@ -226,6 +218,9 @@ environment:
|
||||
├── discordbot/ # Module Discord
|
||||
│ └── __init__.py # Bot et handlers
|
||||
│
|
||||
├── twitchbot/ # Module Twitch
|
||||
│ └── __init__.py # Bot Twitch et handlers
|
||||
│
|
||||
├── protondb/ # Module ProtonDB
|
||||
│ └── __init__.py # API Algolia et recherche compatibilité
|
||||
│
|
||||
@@ -255,14 +250,18 @@ environment:
|
||||
### Architecture multi-thread
|
||||
- **Thread 1** : Interface web Flask (port 5000)
|
||||
- **Thread 2** : Bot Discord et tâches automatisées
|
||||
- **Thread 3** : Bot Twitch et gestion du chat
|
||||
|
||||
### Dépendances principales
|
||||
```
|
||||
discord.py # API Discord
|
||||
flask # Interface web
|
||||
requests # Client HTTP
|
||||
waitress # Serveur WSGI
|
||||
algoliasearch # API ProtonDB/SteamDB
|
||||
discord.py>=2.3.2 # API Discord
|
||||
flask>=2.3.2 # Interface web
|
||||
flask-sqlalchemy>=3.0.3 # ORM SQLAlchemy
|
||||
requests>=2.32.4 # Client HTTP
|
||||
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
|
||||
@@ -270,8 +269,14 @@ algoliasearch # API ProtonDB/SteamDB
|
||||
### Installation locale
|
||||
```bash
|
||||
python3 -m venv venv
|
||||
```
|
||||
```bash
|
||||
source venv/bin/activate
|
||||
```
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
```bash
|
||||
python run-web.py
|
||||
```
|
||||
|
||||
|
||||
@@ -1,30 +1,41 @@
|
||||
services:
|
||||
mamiehenriette:
|
||||
# Nom du conteneur
|
||||
container_name: MamieHenriette
|
||||
mamiehenriette:
|
||||
container_name: MamieHenriette # Nom du conteneur
|
||||
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
|
||||
image: ghcr.io/skylanix/mamiehenriette:latest
|
||||
|
||||
# Build du conteneur à partir d'un Dockerfile local
|
||||
# build: .
|
||||
# image: mamiehenriette
|
||||
|
||||
# Redémarrage automatique sauf si arrêté manuellement
|
||||
restart: unless-stopped
|
||||
# build: . # Build du conteneur à partir d'un Dockerfile local (décommentez si nécessaire)
|
||||
# image: mamiehenriette # Build du conteneur à partir d'un Dockerfile local (décommentez si nécessaire)
|
||||
|
||||
environment:
|
||||
- TZ=Europe/Paris # Fuseau horaire
|
||||
- ENABLE_ZABBIX=false # Surveillance désactivée
|
||||
- ZABBIX_SERVER=zabbix-server.example.com
|
||||
- ZABBIX_HOSTNAME=mamie-henriette-bot
|
||||
|
||||
TZ: Europe/Paris # Fuseau horaire
|
||||
ENABLE_ZABBIX: false # Surveillance désactivée
|
||||
ZABBIX_SERVER: zabbix-server.example.com
|
||||
ZABBIX_HOSTNAME: mamiehenriette
|
||||
volumes:
|
||||
# Base de données et configuration persistante
|
||||
- ./instance:/app/instance
|
||||
- ./instance:/app/instance # Base de données et configuration persistante
|
||||
|
||||
ports:
|
||||
# Interface web sur http://localhost:8000
|
||||
- 5000:5000
|
||||
# Port Zabbix (décommentez si nécessaire)
|
||||
# - "10050:10050"
|
||||
- 5000:5000 # Interface web sur http://localhost:5000
|
||||
# - "10050:10050" # Port Zabbix (décommentez si nécessaire)
|
||||
|
||||
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
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
# Gestion des variables d'environnement
|
||||
python-dotenv==1.0.0
|
||||
|
||||
# necessaire pour l'api discord
|
||||
# Nécessaire pour l'API Discord
|
||||
discord.py==2.3.2
|
||||
aiohttp>=3.7.4,<4
|
||||
audioop-lts; python_version>='3.13'
|
||||
|
||||
# api twitch
|
||||
# API Twitch
|
||||
twitchAPI>=4.5.0
|
||||
|
||||
# necessaire pour l'hebergement du site web
|
||||
# Nécessaire pour l'hébergement du site web
|
||||
flask>=2.3.2
|
||||
flask-sqlalchemy>=3.0.3
|
||||
waitress>=3.0.2
|
||||
|
||||
# necessaire pour l'appel à l'api humble bundle
|
||||
# Nécessaire pour l'appel à l'API Humble Bundle
|
||||
requests>=2.32.4
|
||||
|
||||
# necessaire pour l'appel à protopn db
|
||||
# Nécessaire pour l'appel à ProtonDB
|
||||
algoliasearch>=4,<5
|
||||
|
||||
|
||||
Reference in New Issue
Block a user