Despliega tu propio servidor de Minecraft con backups automatizados usando Ansible
Publicado el 27 de octubre de 2025
¿Te gustaría tener un servidor privado de Minecraft, con actualizaciones y copias de seguridad automáticas, todo orquestado por Ansible? Hoy te traigo un playbook avanzado que va un paso más allá de los despliegues básicos, combinando diversión, automatización y seguridad.
Con este playbook aprenderás a:
- Instalar e iniciar un servidor dedicado de Minecraft (Java Edition) en Linux.
- Configurar el servicio con systemd para gestión fiable y reinicios automáticos.
- Programar copias de seguridad automáticas de los mundos, incluyendo retención de ficheros antiguos.
- Preparar dependencias y ajustar configuraciones de red.
¡Ideal para quienes juegan en grupo o para admins DevOps que quieren aplicar automatización a proyectos más ligeros!
Requisitos
- Servidor Linux (Ubuntu 20.04+/Debian/CentOS)
- Python 3
- Ansible 2.9+ instalado en tu máquina de control
- Acceso SSH al servidor
- Porteo de los puertos 25565 (TCP) para Minecraft
El Playbook completo de Ansible
Guarda este contenido como servidor-minecraft.yml y ejecuta ansible-playbook -i tu_inventario servidor-minecraft.yml.
---
- name: Servidor Minecraft con backups automatizados
hosts: minecraft_servers
become: yes
vars:
mc_user: minecraft
mc_dir: /opt/minecraft
mc_version: "1.20.1"
mc_server_jar: "server.jar"
backup_dir: "/opt/minecraft/backups"
backup_retention: 7
java_package: "openjdk-17-jre-headless"
server_port: 25565
tasks:
- name: Instala Java requerido por Minecraft
apt:
name: "{{ java_package }}"
state: present
when: ansible_os_family == "Debian"
- name: Instala Java (RedHat/CentOS)
yum:
name: "java-17-openjdk-headless"
state: present
when: ansible_os_family == "RedHat"
- name: Crea usuario específico para Minecraft
user:
name: "{{ mc_user }}"
system: yes
shell: /bin/bash
create_home: yes
- name: Crea directorios principales
file:
path: "{{ item }}"
state: directory
owner: "{{ mc_user }}"
mode: "0755"
loop:
- "{{ mc_dir }}"
- "{{ backup_dir }}"
- name: Descarga la última versión del servidor de Minecraft
get_url:
url: "https://launcher.mojang.com/v1/objects/4018fffa8c2f1c232f381b7f3debbf4847a19d47/server.jar"
dest: "{{ mc_dir }}/{{ mc_server_jar }}"
mode: "0755"
owner: "{{ mc_user }}"
- name: Acepta EULA de Minecraft
copy:
dest: "{{ mc_dir }}/eula.txt"
content: "eula=true\n"
owner: "{{ mc_user }}"
mode: "0644"
- name: Crea archivo de servicio systemd para Minecraft
copy:
dest: /etc/systemd/system/minecraft.service
content: |
[Unit]
Description=Minecraft Server
After=network.target
[Service]
User={{ mc_user }}
Nice=5
WorkingDirectory={{ mc_dir }}
ExecStart=/usr/bin/java -Xmx2G -Xms1G -jar {{ mc_server_jar }} nogui
Restart=on-failure
[Install]
WantedBy=multi-user.target
mode: "0644"
- name: Recarga daemons de systemd
systemd:
daemon_reload: yes
- name: Habilita e inicia el servicio de Minecraft
systemd:
name: minecraft
enabled: yes
state: started
- name: Crea script de backup automático
copy:
dest: "{{ mc_dir }}/backup.sh"
content: |
#!/bin/bash
BACKUP_DIR="{{ backup_dir }}"
WORLD_DIR="{{ mc_dir }}/world"
TAR_FILE="$BACKUP_DIR/minecraft-$(date +%Y%m%d-%H%M%S).tar.gz"
tar -czf $TAR_FILE $WORLD_DIR
find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +{{ backup_retention }} -delete
owner: "{{ mc_user }}"
mode: "0755"
- name: Programa backup con cron
cron:
name: "Backup Minecraft World"
user: "{{ mc_user }}"
minute: "0"
hour: "4"
job: "{{ mc_dir }}/backup.sh"
Notas: Cambia la URL de server.jar si quieres una versión concreta. El backup mantiene 7 días por defecto. Modifica variables según tus necesidades.
Consejos extra y troubleshooting
- El primer arranque puede tardar: revisa
systemctl status minecraftsi ves problemas. - Recuerda abrir el puerto 25565 en tu firewall.
- Personaliza el
server.propertiespara ajustar opciones de juego. - Para restaurar un backup, descomprime el archivo .tar.gz en
{{ mc_dir }}/worldy reinicia el servicio. - Este playbook es un punto de partida: puedes añadir mods, mapas y uds propios integrando nuevos
tasksy variables.
