Skip to content

About

Dockerized Arma 3 Life server with MariaDB, ready to deploy.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

Arma 3 Life — Docker

Servidor dedicado de Arma 3 (modo Life) listo para levantar con Docker, sobre una imagen nativa de Debian. La imagen instala SteamCMD, descarga el servidor de Arma 3 automáticamente y deja el contenedor vivo para que arranques y pares el servidor cuando quieras con docker exec. Incluye un servicio MariaDB integrado para extDB3.


Requisitos

  • Docker y Docker Compose instalados.
  • Una cuenta de Steam con Steam Guard. No necesita tener Arma 3 comprado para descargar el servidor dedicado. Se recomienda usar una cuenta secundaria.
  • En Linux, tu usuario del host debe tener UID 1000 (lo compruebas con id -u). Es lo que hace que puedas editar los ficheros de los volúmenes sin problemas de permisos. En Windows esto no aplica, puedes ignorarlo.

Estructura del proyecto

arma3-life-docker/
├── docker-compose.yml
├── .env                       ← lo creas tú (NO se sube al repo)
├── .env.example               ← plantilla de variables
├── mariadb/                   ← datos de la base de datos (se crea sola)
└── files/
    ├── Dockerfile
    ├── entrypoint.sh
    ├── start                  ← se copia a /usr/local/bin en la imagen
    ├── stop                   ← se copia a /usr/local/bin en la imagen
    ├── arma3/                 ← aquí se instala el servidor
    │   ├── automatic_restart.sh   ← lo renombras desde el _example
    │   ├── server.cfg
    │   ├── @extDB3/            ← mod (en minúsculas)
    │   ├── @life_server/      ← mod (en minúsculas)
    │   └── extdb3-conf.ini
    ├── configs/
    ├── mpmissions/            ← aquí va tu misión (ej. HydraLife.Altis)
    ├── steam/                 ← sesión de Steam cacheada
    └── steam-share/

Preparación

1. Crea las carpetas de los volúmenes antes de levantar nada, para que nazcan con tu UID y no como root:

mkdir -p files/arma3 files/configs files/mpmissions files/steam files/steam-share mariadb

2. Crea tu fichero .env a partir de la plantilla y rellena tus datos:

cp .env.example .env

Variables que tienes que rellenar en el .env:

STEAM_USER=tu_usuario_steam
STEAM_PASS=tu_contraseña_steam
DB_ROOT_PASSWORD=una_contraseña_root
DB_NAME=altislife
DB_USER=tu_usuario_bd
DB_PASSWORD=tu_contraseña_bd

Primer arranque (importante — léelo)

La primera vez hay que iniciar sesión en Steam de forma interactiva para meter el código de Steam Guard. Si lanzas directamente docker compose up -d sin haber hecho esto, SteamCMD no podrá pedirte el código, fallará, y el contenedor no arrancará.

Ejecuta SteamCMD una vez de forma interactiva para que cachee la sesión:

docker compose run --rm --entrypoint /home/steam/steamcmd/steamcmd.sh arma3 \
  +force_install_dir /home/steam/arma3 +login TU_USUARIO +quit

Te pedirá la contraseña y el código de Steam Guard que te llega al móvil. Una vez completado, la sesión queda guardada en files/steam, que es un volumen persistente, así que los siguientes arranques ya no te pedirán el móvil.

Si algún día la sesión caduca (cambio de contraseña, inactividad larga), solo tienes que repetir este paso una vez.


Uso diario

Levantar el contenedor (instala/actualiza el servidor si hace falta y lo deja listo, con Arma parado):

docker compose up -d

Arrancar el servidor de Arma:

docker exec arma3 start

Parar el servidor de Arma (sin tumbar el contenedor):

docker exec arma3 stop

El contenedor sigue vivo aunque el servidor de Arma esté parado, gracias a un proceso guardián. Por eso puedes arrancar y parar el servidor tantas veces como quieras con docker exec.

Antes de hacer docker compose down, para el servidor con docker exec arma3 stop para que cierre de forma ordenada.


Configuración

Script de arranque de la misión

Renombra el fichero de ejemplo y ajústalo a tu setup:

mv files/arma3/automatic_restart_example.sh files/arma3/automatic_restart.sh
chmod +x files/arma3/automatic_restart.sh

Dentro está la línea de lanzamiento de arma3server_x64, donde defines la misión, los mods y los parámetros del servidor.

Mods (extDB3 + life_server)

  • Coloca los mods dentro de files/arma3/, con los nombres en minúsculas (@extdb3, @life_server), o el servidor no arrancará en Linux.
  • Coloca tu misión en files/mpmissions/ (por ejemplo HydraLife.Altis).

Conexión de extDB3 a la base de datos

En el extdb3-conf.ini, la IP no es 127.0.0.1, sino el nombre del servicio de la base de datos:

IP = mariadb
Port = 3306
Username = tu_usuario_bd
Password = tu_contraseña_bd
Database = altislife

Como Arma y MariaDB están en el mismo docker-compose.yml, se ven por nombre. El usuario, contraseña y base de datos deben coincidir con los del .env.

Dificultad (tercera persona, etiquetas, etc.)

La dificultad personalizada no se configura en el server.cfg, sino en el fichero .Arma3Profile. Para editarla:

  1. Arranca el servidor una vez para que se genere el fichero de perfil.
  2. Para el servidor (docker exec arma3 stop) — si lo editas con el servidor corriendo, al cerrarse te pisará los cambios.
  3. Edita el .Arma3Profile dentro de tu carpeta de profiles (bajo files/arma3/profiles/) y añade tu bloque class DifficultyPresets.
  4. Arranca de nuevo.

En el server.cfg solo se selecciona el preset (forcedDifficulty = "Custom";), pero su contenido vive en el .Arma3Profile.


Actualizar Arma 3

El servidor se instala solo en el primer arranque y no se vuelve a descargar mientras el binario exista. Cuando salga una versión nueva y necesites actualizar, hazlo manualmente:

docker exec arma3 stop
docker exec arma3 /home/steam/steamcmd/steamcmd.sh \
  +force_install_dir /home/steam/arma3 +login TU_USUARIO +app_update 233780 +quit
docker exec arma3 start

Reinicios automáticos (opcional)

Puedes programar reinicios con cron en el host llamando a tus scripts. Por ejemplo, un script reiniciar.sh:

docker exec arma3 stop
sleep 20
docker exec arma3 start

Y una entrada de crontab (crontab -e) para reiniciar cada día a las 6:00:

0 6 * * * /ruta/a/reiniciar.sh

Seguridad

  • Nunca subas el .env al repositorio. Contiene tus credenciales de Steam y de la base de datos. Asegúrate de que está en el .gitignore.
  • Lo mismo aplica al extdb3-conf.ini (lleva la contraseña de la BD) y a las carpetas de datos (files/steam, files/arma3, mariadb).
  • Antes de abrir el servidor a jugadores, cambia las contraseñas de ejemplo del server.cfg y pon verifySignatures = 2.

Notas

  • Los puertos del servidor son UDP (2302–2306).
  • El servidor de Arma corre como el usuario steam (UID 1000) dentro del contenedor.
  • Los logs de cada arranque se archivan con fecha en files/arma3/logs/.

Hecho por MDeMariano

About

Dockerized Arma 3 Life server with MariaDB, ready to deploy.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages