Files
Ansible-Minecraft-Server/README.md
hcornet 880d463cb0
Some checks failed
Ansible Minecraft CI/CD / Ansible Lint (push) Successful in 8s
Ansible Minecraft CI/CD / Syntax Check (push) Successful in 8s
Ansible Minecraft CI/CD / Deploy to Staging (push) Has been skipped
Ansible Minecraft CI/CD / Deploy to Production (push) Failing after 7s
update ReadMe file
2025-08-27 16:26:19 +02:00

7.4 KiB

Ansible Minecraft Spigot Server

Ce projet Ansible permet d'installer et de gérer automatiquement un serveur Minecraft Spigot avec toutes les fonctionnalités nécessaires pour un environnement de production.

🚀 Fonctionnalités

  • Installation automatisée de Minecraft Spigot version 1.21.6
  • Durcissement de sécurité du serveur (SSH, Firewall, Fail2ban)
  • Installation Java automatique et optimisée
  • Système de sauvegarde complet (quotidien, hebdomadaire, mensuel)
  • Mises à jour automatiques de Spigot
  • Gestion des plugins et des administrateurs
  • Surveillance et logs avec rotation automatique
  • CI/CD intégré avec Gitea Actions

📋 Prérequis

Serveurs cibles

  • OS supportés : Debian 10/11/12/13 ou Ubuntu LTS
  • Accès SSH configuré avec l'utilisateur ansible
  • Privilèges sudo pour l'utilisateur ansible
  • Python 3.8+ installé sur les cibles

Machine de contrôle

  • Ansible 2.10+
  • Python 3.8+
  • Collections Ansible (installées via requirements.yml)

🛠️ Installation

1. Cloner le repository

git clone https://gitea.tips-of-mine.com/Tips-Of-Mine/Ansible-Minecraft-Serveur.git
cd Ansible-Minecraft-Serveur

2. Installer les dépendances

# Installation des collections Ansible
ansible-galaxy collection install -r requirements.yml

# Installation de Python (si nécessaire)
python3 -m pip install ansible

3. Configuration des inventaires

Staging

Éditer inventories/staging/hosts.yml et inventories/staging/group_vars/all.yml

Production

Éditer inventories/production/hosts.yml et inventories/production/group_vars/all.yml

4. Configuration des secrets

Pour Gitea CI/CD

Configurer ces secrets dans Gitea :

  • ANSIBLE_SSH_PRIVATE_KEY : Clé SSH privée (base64)
  • MINECRAFT_RCON_PASSWORD : Mot de passe RCON
  • STAGING_HOST : Adresse du serveur staging
  • PRODUCTION_HOST : Adresse du serveur production

📚 Structure du projet

Ansible-Minecraft-Serveur/
├── README.md                    # Ce fichier
├── requirements.yml             # Collections Ansible requises
├── secrets                      # Template des secrets
├── site.yml                     # Playbook principal
├── .gitea/workflows/ci.yml      # Pipeline CI/CD
├── inventories/                 # Inventaires par environnement
│   ├── production/              # Configuration production
│   └── staging/                 # Configuration staging
└── roles/                       # Rôles Ansible
    ├── 01-server_hardening/     # Durcissement serveur
    ├── 02-installation-java/    # Installation Java
    ├── 03-Installation-minecraft/ # Installation Minecraft
    ├── 04-backups/              # Système de sauvegarde
    └── 05-Update/               # Gestion des mises à jour

🚀 Utilisation

Déploiement complet

Environnement Staging

# Vérification de la syntaxe
ansible-playbook --syntax-check site.yml -i inventories/staging/hosts.yml

# Mode dry-run
ansible-playbook site.yml -i inventories/staging/hosts.yml --check --diff

# Déploiement réel
ansible-playbook site.yml -i inventories/staging/hosts.yml

Environnement Production

# Mode dry-run obligatoire en production
ansible-playbook site.yml -i inventories/production/hosts.yml --check --diff

# Déploiement réel (après validation)
ansible-playbook site.yml -i inventories/production/hosts.yml

Déploiement par rôle

Durcissement uniquement

ansible-playbook site.yml -i inventories/staging/hosts.yml --tags hardening

Installation/Mise à jour Minecraft

ansible-playbook site.yml -i inventories/staging/hosts.yml --tags minecraft

Configuration sauvegardes

ansible-playbook site.yml -i inventories/staging/hosts.yml --tags backup

🔧 Configuration avancée

Variables importantes

Minecraft

minecraft_version: "1.21.6"          # Version Spigot
minecraft_max_memory: "4G"           # RAM maximum
minecraft_min_memory: "2G"           # RAM minimum
minecraft_port: 25565                # Port serveur
minecraft_rcon_port: 25575           # Port RCON

Sécurité

firewall_enabled: true               # Activation UFW
fail2ban_enabled: true              # Activation Fail2ban
hardening_enabled: true             # Durcissement complet
ssh_port: 22                        # Port SSH

Sauvegardes

backup_enabled: true                # Activation sauvegardes
backup_retention_daily: 7           # Rétention quotidienne
backup_retention_weekly: 4          # Rétention hebdomadaire
backup_retention_monthly: 6         # Rétention mensuelle

Ajout d'administrateurs Minecraft

Dans group_vars/all.yml :

minecraft_admins:
  - name: "PlayerName"
    uuid: "player-uuid-here"
    level: 4
    bypass_limit: false

Installation de plugins

minecraft_plugins:
  - name: "WorldEdit"
    url: "https://example.com/worldedit.jar"
  - name: "Vault"
    url: "https://example.com/vault.jar"

🔍 Monitoring et maintenance

Logs importants

  • Serveur Minecraft : /opt/minecraft/server/logs/
  • Système : /var/log/syslog
  • SSH : /var/log/auth.log
  • Fail2ban : /var/log/fail2ban.log

Commandes utiles

Status du serveur

systemctl status minecraft

Connexion RCON

/opt/minecraft/tools/mcrcon/mcrcon -H localhost -P 25575 -p votre_mot_de_passe

Sauvegarde manuelle

/usr/local/bin/minecraft-backup-daily.sh

Restauration

/usr/local/bin/minecraft-restore.sh daily minecraft-daily-20240127_020000

🔄 Mises à jour

Automatiques

Les mises à jour sont vérifiées selon la planification définie dans les crons.

Manuelles

ansible-playbook site.yml -i inventories/production/hosts.yml --tags update

🐛 Dépannage

Problèmes courants

Le serveur ne démarre pas

  1. Vérifier les logs : journalctl -u minecraft -f
  2. Vérifier l'EULA : /opt/minecraft/server/eula.txt
  3. Vérifier la RAM disponible : free -h

Compilation Spigot échoue

  1. Vérifier Java : java -version
  2. Vérifier l'espace disque : df -h
  3. Vérifier les logs de compilation

Connexion SSH échoue

  1. Vérifier le pare-feu : ufw status
  2. Vérifier les clés SSH
  3. Vérifier Fail2ban : fail2ban-client status sshd

Logs de debug

# Activation du mode verbose
ansible-playbook site.yml -i inventories/staging/hosts.yml -vvv

🤝 Contribution

  1. Fork le projet
  2. Créer une branche feature (git checkout -b feature/amazing-feature)
  3. Commit les changements (git commit -m 'Add amazing feature')
  4. Push vers la branche (git push origin feature/amazing-feature)
  5. Créer une Pull Request

📝 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.

🆘 Support

🙏 Remerciements

  • Équipe Ansible pour l'excellente plateforme
  • Communauté Spigot pour le serveur
  • Contributeurs du projet

Made with ❤️ for Minecraft communities