update
Some checks failed
Deploy Minecraft Server / deploy (push) Failing after 1m25s
Ansible Lint / lint (push) Failing after 12s

This commit is contained in:
2025-08-26 14:28:09 +02:00
parent 0315edf95f
commit 31711c7627
105 changed files with 1419 additions and 366 deletions

229
README.md
View File

@@ -1,62 +1,215 @@
# Mincraft Ansible
# Minecraft Spigot Server - Ansible Deployment
Simplifier la gestion de Minecraft sur votre serveur Debian à l'aide d'Ansible.
Ce projet Ansible permet de déployer automatiquement un serveur Minecraft Spigot complet avec hardening de sécurité, sauvegarde automatisée et gestion des mises à jour.
Les instructions suivantes sont destinées à la mise en place d'un serveur Minecraft à partir de zéro en utilisant debian comme système d'exploitation.
Cela peut se faire sur une machine physique ou une machine virtuelle.
Cependant, les bases de ce projet pourraient facilement être réutilisées pour gérer un serveur existant ou même plusieurs serveurs.
## 🚀 Fonctionnalités
## Préconisation
### ✅ Rôles disponibles
- **01-server_hardening** : Durcissement sécuritaire du serveur
- **02-installation-java** : Installation automatique de Java OpenJDK
- **03-installation-minecraft** : Déploiement complet du serveur Spigot
- **04-backups** : Système de sauvegarde automatisé
- **05-update** : Gestion des mises à jour automatisées
1. Installer l'édition du serveur Debian 12. ou 13. , en sélectionnant l'option serveur SSH lorsque cela est demandé pour un logiciel d'ajout à installer.
2. Copiez votre clé SSH dans le nouveau serveur à l'aide de «ssh-copy-id».
### 🔧 Composants installés
- **Spigot 1.21.6** : Serveur Minecraft optimisé
- **mcrcon** : Administration à distance via RCON
- **Java 21** : Version optimale pour Spigot
- **Fail2Ban** : Protection contre les attaques par force brute
- **UFW** : Pare-feu simplifié
- **Logrotate** : Rotation automatique des logs
## Mise en place
## 📁 Structure du projet
1. Installer Ansible
2. Ajoutez votre serveur Minecraft à l'adresse suivante:
```
minecraft-spigot-ansible/
├── README.md # Documentation principale
├── site.yml # Playbook principal
├── ansible.cfg # Configuration Ansible
├── inventories/ # Inventaires des serveurs
│ ├── production/ # Environnement de production
│ └── staging/ # Environnement de test
├── roles/ # Rôles Ansible
│ ├── 01-server_hardening/ # Sécurisation du serveur
│ ├── 02-installation-java/ # Installation Java
│ ├── 03-installation-minecraft/ # Déploiement Minecraft
│ ├── 04-backups/ # Système de sauvegarde
│ └── 05-update/ # Gestion des mises à jour
└── .gitea/workflows/ # CI/CD Gitea
├── lint.yml # Tests et validation
└── deploy.yml # Déploiement automatique
```
[minecraft]
your.hostname.or.ip.address
## ⚙️ Configuration requise
3. Installer les forfaits nécessaires à Ansible pour travailler en exécutant:
### Serveur cible
- **OS** : Debian 10/11/12/13 ou Ubuntu LTS
- **RAM** : Minimum 2GB (4GB recommandés)
- **Stockage** : 20GB minimum
- **Réseau** : Accès Internet pour téléchargements
ansible-playbook -K -l minecraft playbooks/main.yml
### Serveur de contrôle
- **Ansible** : Version 2.9 ou supérieure
- **Python** : 3.8 ou supérieure
- **SSH** : Accès par clé aux serveurs cibles
## Installation
## 🛠️ Installation et configuration
### Spigot
### 1. Préparation de l'environnement
1. Ajoutez une variable définissant l'endroit où trouver votre exemplaire de la version 1649 du bocal Spigot à "/etc/ansible/hôtes":
```bash
# Cloner le repository
git clone https://your-gitea-instance.com/your-repo/minecraft-spigot-ansible.git
cd minecraft-spigot-ansible
[minecraft:vars]
spigot1649-path/path/to/spigot1649.jar
# Installer Ansible (si nécessaire)
pip install ansible ansible-lint yamllint
2. Exécuter ce qui suit pour configurer le serveur pour exécuter Spigot:
# Configurer les clés SSH
ssh-keygen -t ed25519 -f ~/.ssh/ansible_key
ssh-copy-id -i ~/.ssh/ansible_key.pub ansible@your-server-ip
```
ansible-playbook -K-l minecraft playbooks/01-install-server.yml
### 2. Configuration des inventaires
## Mise à jour Spigot
#### Production (`inventories/production/hosts.yml`)
```yaml
all:
children:
minecraft_servers:
hosts:
minecraft-prod-01:
ansible_host: YOUR_PROD_IP
ansible_user: ansible
```
Pour mettre à jour le patch appliqué à Spigot, soit mettre à jour les valeurs dans 'roles/spigot-server/defaults/main..yml', soit ajouter
les versions mises à jour des variables suivantes dans la section `[minecraft:vars]` de votre `/etc/ansible/hosts` :
#### Variables globales (`inventories/production/group_vars/minecraft_servers.yml`)
```yaml
minecraft_version: "1.21.6"
minecraft_memory_min: "1G"
minecraft_memory_max: "4G"
minecraft_rcon_password: "your-secure-password"
```
- Quelle version du patch Spigot appliquer
spigot-patch-version: '20141113a'
(addition de contrôle MD5 du dispositif transdermique appliqué)
'12ace759005798adf91d9fe4675fff48'
(en anglais)
spigot-patched-jar-md5: '870c9021be261bd285c966c642b23c32'
### 3. Configuration des secrets
Puis re-réparer:
Créer un fichier vault pour les mots de passe :
```bash
ansible-vault create inventories/production/group_vars/vault.yml
```
ansible-playbook -K -l minecraft playbooks/02-update-server.yml
Contenu du vault :
```yaml
vault_minecraft_rcon_password: "your-secure-rcon-password"
vault_mysql_password: "your-mysql-password"
```
## Consosole de serveur Minecraft
## 🚀 Déploiement
Pour se connecter à la console du serveur Minecraft:
### Déploiement manuel
1. SSH à votre serveur.
2. Execution :
```bash
# Test de connectivité
ansible all -i inventories/production/hosts.yml -m ping
sudo -u minecraft tmux joint-session -t minecraft
# Déploiement complet
ansible-playbook -i inventories/production/hosts.yml site.yml --ask-vault-pass
# Déploiement par rôle spécifique
ansible-playbook -i inventories/production/hosts.yml site.yml --tags "minecraft" --ask-vault-pass
```
### Déploiement par tags
```bash
# Sécurisation uniquement
ansible-playbook site.yml --tags "hardening"
# Installation Java uniquement
ansible-playbook site.yml --tags "java"
# Configuration Minecraft uniquement
ansible-playbook site.yml --tags "minecraft"
# Configuration des sauvegardes uniquement
ansible-playbook site.yml --tags "backup"
# Mises à jour uniquement
ansible-playbook site.yml --tags "update"
```
## 🔐 Sécurité
### Hardening automatique inclus
- **SSH** : Configuration sécurisée (clés uniquement, port personnalisable)
- **Firewall** : UFW avec règles restrictives
- **Fail2Ban** : Protection anti-bruteforce
- **Permissions** : Utilisateur dédié minecraft
- **Logs** : Rotation automatique et surveillance
### Ports ouverts par défaut
- **22/tcp** : SSH (configurable)
- **25565/tcp** : Minecraft
- **25575/tcp** : RCON (localhost uniquement)
## 💾 Système de sauvegarde
### Types de sauvegardes
- **Quotidienne** : 2h00, rétention 7 jours
- **Hebdomadaire** : Dimanche 3h00, rétention 4 semaines
- **Mensuelle** : 1er du mois 4h00, rétention 6 mois
### Localisation des sauvegardes
```
/opt/minecraft/backups/
├── daily/ # Sauvegardes quotidiennes
├── weekly/ # Sauvegardes hebdomadaires
├── monthly/ # Sauvegardes mensuelles
└── scripts/ # Scripts de sauvegarde
```
### Restauration
```bash
# Lister les sauvegardes disponibles
sudo -u minecraft /opt/minecraft/backups/scripts/restore.sh
# Restaurer une sauvegarde spécifique
sudo -u minecraft /opt/minecraft/backups/scripts/restore.sh daily 20241201_020000
```
## 🔄 Gestion des mises à jour
### Mises à jour automatiques
Le rôle `05-update` vérifie et applique automatiquement :
- **Clés SSH** : Nouvelles clés autorisées
- **Système** : Paquets Debian/Ubuntu
- **Spigot** : Nouvelles versions disponibles
### Processus de mise à jour Spigot
1. Détection nouvelle version
2. Téléchargement BuildTools
3. Compilation en parallèle
4. Tests de la nouvelle version
5. Basculement sans interruption
6. Nettoyage des anciennes versions
## 🎮 Administration du serveur
### Commandes utiles
```bash
# Statut du service
systemctl status minecraft
# Logs en temps réel
journalctl -u minecraft -f
# Console RCON
/opt/minecraft/tools/mcrcon -H 127.0.0.1 -P 25575 -p your-password
# Commandes RCON utiles
/opt/minecraft/tools/mcrcon -H 127.0.0.1 -P 25575 -p your-password "say Serveur en maintenance"
/opt/minecraft/tools/mcrcon -H 127.0.0.1 -P 25575 -p your-password "stop"
```
### Structure des fichiers Minecraft