hcornet 3814c19ba3
Some checks failed
Ansible Lint / ansible_lint_and_syntax_check (push) Failing after 6s
Ansible Lint / deploy (push) Failing after 6s
change file cicd
2025-08-26 14:43:50 +02:00
2025-08-26 14:43:50 +02:00
2025-08-26 14:28:09 +02:00
2025-08-26 14:28:09 +02:00
2025-08-26 14:28:09 +02:00
2025-08-26 14:28:09 +02:00
2025-08-22 10:08:04 +02:00
2025-08-22 10:08:04 +02:00
2025-08-26 14:28:09 +02:00
2025-08-26 14:28:09 +02:00

Minecraft Spigot Server - Ansible Deployment

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.

🚀 Fonctionnalités

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

🔧 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

📁 Structure du projet

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

⚙️ Configuration requise

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

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 et configuration

1. Préparation de l'environnement

# Cloner le repository
git clone https://your-gitea-instance.com/your-repo/minecraft-spigot-ansible.git
cd minecraft-spigot-ansible

# Installer Ansible (si nécessaire)
pip install ansible ansible-lint yamllint

# 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

2. Configuration des inventaires

Production (inventories/production/hosts.yml)

all:
  children:
    minecraft_servers:
      hosts:
        minecraft-prod-01:
          ansible_host: YOUR_PROD_IP
          ansible_user: ansible

Variables globales (inventories/production/group_vars/minecraft_servers.yml)

minecraft_version: "1.21.6"
minecraft_memory_min: "1G"
minecraft_memory_max: "4G"
minecraft_rcon_password: "your-secure-password"

3. Configuration des secrets

Créer un fichier vault pour les mots de passe :

ansible-vault create inventories/production/group_vars/vault.yml

Contenu du vault :

vault_minecraft_rcon_password: "your-secure-rcon-password"
vault_mysql_password: "your-mysql-password"

🚀 Déploiement

Déploiement manuel

# Test de connectivité
ansible all -i inventories/production/hosts.yml -m ping

# 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

# 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

# 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

# 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

Description
No description provided
Readme AGPL-3.0 334 KiB
Languages
Jinja 93.9%
Shell 6.1%