Some checks failed
Ansible Minecraft CI/CD / Ansible Lint (push) Successful in 7s
Ansible Minecraft CI/CD / Syntax Check (push) Successful in 8s
Ansible Minecraft CI/CD / Ansible Lint (pull_request) Successful in 7s
Ansible Minecraft CI/CD / Deploy to Staging (push) Failing after 6s
Ansible Minecraft CI/CD / Deploy to Production (push) Has been skipped
Ansible Minecraft CI/CD / Syntax Check (pull_request) Successful in 8s
Ansible Minecraft CI/CD / Deploy to Staging (pull_request) Has been skipped
Ansible Minecraft CI/CD / Deploy to Production (pull_request) Has been skipped
7.4 KiB
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 RCONSTAGING_HOST
: Adresse du serveur stagingPRODUCTION_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
- Vérifier les logs :
journalctl -u minecraft -f
- Vérifier l'EULA :
/opt/minecraft/server/eula.txt
- Vérifier la RAM disponible :
free -h
Compilation Spigot échoue
- Vérifier Java :
java -version
- Vérifier l'espace disque :
df -h
- Vérifier les logs de compilation
Connexion SSH échoue
- Vérifier le pare-feu :
ufw status
- Vérifier les clés SSH
- 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
- Fork le projet
- Créer une branche feature (
git checkout -b feature/amazing-feature
) - Commit les changements (
git commit -m 'Add amazing feature'
) - Push vers la branche (
git push origin feature/amazing-feature
) - Créer une Pull Request
📝 Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE
pour plus de détails.
🆘 Support
- Issues : Gitea Issues
- Wiki : Documentation détaillée
- Discussions : Forum du projet
🙏 Remerciements
- Équipe Ansible pour l'excellente plateforme
- Communauté Spigot pour le serveur
- Contributeurs du projet
Made with ❤️ for Minecraft communities