update
This commit is contained in:
229
README.md
229
README.md
@@ -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
|
||||
|
Reference in New Issue
Block a user