Cómo Crear un Servidor SA-MP desde Cero en Ubuntu Linux
Guía técnica para crear un servidor SA-MP desde cero en Ubuntu Linux: instalar samp03svr, configurar server.cfg, abrir puertos y ejecutarlo como servicio systemd.
San Andreas Multiplayer (SA-MP) sigue activo a pesar de que el servidor master oficial ha estado inestable en años recientes — las comunidades hispanas de roleplay, freeroam y DM mantienen miles de jugadores diarios. Hospedar tu propio servidor SA-MP en un Ubuntu Linux te da control total sobre plugins, gamemodes y rendimiento, además de eliminar los costos recurrentes de paneles de terceros.
Este tutorial cubre la instalación completa de samp03svr (versión 0.3.7-R2) en Ubuntu 24.04 LTS, desde las bibliotecas i386 necesarias hasta la configuración de un servicio systemd con reinicio automático. El objetivo es un owner nuevo que va a poner el servidor en producción en una VPS Linux, sin panel de control. Tiempo estimado de ejecución: 25 a 35 minutos.
Al final tendrás un servidor escuchando en el puerto 7777 UDP, ejecutándose como usuario dedicado, con log persistente vía journalctl y capaz de sobrevivir a reinicios de la máquina.
Requisitos previos
Antes de empezar, confirma que tu VPS cumple con los requisitos mínimos. samp03svr es ligero en CPU, pero el consumo escala con plugins, gamemode complejo y cantidad de jugadores simultáneos.
Ubuntu 24.04 LTS (también funciona en 22.04) con 1 GB de RAM mínimo, 2 GB recomendados para gamemodes con muchos filterscripts. Acceso root o sudo, ~200 MB libres en disco y un puerto UDP libre (por defecto 7777). Conexión SSH activa.
Ubuntu 24.04 LTS 7777/UDP samp /opt/samp Preparando el sistema y bibliotecas i386
El binario oficial del servidor SA-MP es de 32 bits. En Ubuntu de 64 bits moderno necesitas habilitar explícitamente la arquitectura i386 antes de instalar las dependencias, de lo contrario apt no encuentra los paquetes lib32*.
Actualiza el índice de paquetes e instala utilidades básicas:
sudo apt update
sudo apt install -y wget tar curl ufwwget y tar se usan para descargar y extraer el servidor. ufw será el firewall de borde.
Habilita la arquitectura i386 e instala las librerías de 32 bits:
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6El comando dpkg --add-architecture registra que el sistema acepta paquetes de otra arquitectura — sin él, apt install lib32gcc-s1 devuelve Unable to locate package.
Crea un usuario dedicado para el servidor SA-MP:
sudo useradd --system --create-home --home-dir /opt/samp --shell /usr/sbin/nologin samp--system crea una cuenta sin expiración de contraseña. --shell /usr/sbin/nologin impide el login interactivo — el usuario existe únicamente para aislar el proceso del servidor.
Descargando y extrayendo samp03svr
El binario oficial se distribuye como tarball en files.sa-mp.com. La versión estable actual es 0.3.7-R2-2-1, compatible con la mayoría de los gamemodes en circulación.
Cambia al directorio home del usuario samp y descarga el servidor:
cd /opt/samp
sudo -u samp wget https://files.sa-mp.com/samp037svr_R2-2-1.tar.gzEjecutar wget como sudo -u samp garantiza que el archivo ya queda con la propiedad correcta, evitando un chown manual posterior.
Extrae el archivo y elimina el tarball:
sudo -u samp tar -xzf samp037svr_R2-2-1.tar.gz --strip-components=1
sudo -u samp rm samp037svr_R2-2-1.tar.gzLa flag --strip-components=1 evita el subdirectorio extra samp03/ — los archivos van directamente a /opt/samp/.
El equipo SA-MP no publica checksums oficiales, pero comprueba el tamaño del archivo (~1.6 MB) y prueba que el binario samp03svr se ejecute sin error de segmentation fault. Si descargas desde mirrors no oficiales, prefiere fuentes auditadas por la comunidad open.mp.
Configurando server.cfg
El archivo server.cfg es el corazón de la configuración — define el nombre público, la contraseña rcon, el gamemode inicial, los plugins cargados y los límites de jugadores. Edítalo con cuidado: los errores de sintaxis hacen que el servidor no arranque sin mensaje claro.
Abre el archivo de configuración:
sudo -u samp nano /opt/samp/server.cfgReemplaza el contenido por una configuración mínima funcional:
echo Executing Server Config...
lanmode 0
rcon_password CAMBIA_ESTA_CONTRASENA_LARGA
maxplayers 50
port 7777
hostname Servidor SA-MP Hostini
gamemode0 grandlarc 1
filterscripts gl_actions
announce 1
query 1
chatlogging 0
weburl www.sa-mp.com
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
maxnpc 0
logtimeformat [%H:%M:%S]
language Englishgrandlarc es el gamemode por defecto que viene en el tarball. Cuando instales tu propio gamemode, sustituye el nombre en gamemode0. Cambia obligatoriamente el rcon_password antes de subir el servidor.
Contraseñas como changeme, admin o cadenas cortas son objetivo inmediato de bots que escanean internet en busca de servidores SA-MP. Usa 20+ caracteres aleatorios. Comando para generar: openssl rand -base64 24.
Liberando el puerto en el firewall
Ubuntu 24.04 viene con ufw instalado pero inactivo por defecto. Antes de habilitarlo, asegúrate de que SSH siga accesible — de lo contrario perderás acceso a la máquina.
Abre SSH y el puerto UDP de SA-MP:
sudo ufw allow 22/tcp
sudo ufw allow 7777/udp
sudo ufw enableCuando ufw pregunte sobre la desconexión, responde y. La regla de SSH se añadió antes del enable, por lo que la conexión actual permanece activa.
Confirma las reglas aplicadas:
sudo ufw status numberedDeberías ver las dos reglas listadas con estado ALLOW IN. Si tu proveedor tiene firewall de borde separado (security group, panel cloud), abre allí también 7777/UDP.
Ejecutándolo como servicio systemd
Ejecutar ./samp03svr directamente en la terminal funciona para pruebas, pero el proceso muere cuando te desconectas del SSH. Una service unit de systemd resuelve esto con reinicio automático y logs centralizados.
Crea el archivo de servicio:
sudo nano /etc/systemd/system/samp.servicePega el contenido siguiente:
[Unit]
Description=SA-MP Server
After=network.target
[Service]
Type=simple
User=samp
Group=samp
WorkingDirectory=/opt/samp
ExecStart=/opt/samp/samp03svr
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
LimitNOFILE=4096
[Install]
WantedBy=multi-user.targetRestart=on-failure reinicia el proceso si sale con código distinto de cero — útil para crashes de plugin. WorkingDirectory=/opt/samp garantiza que el binario encuentre server.cfg, gamemodes/ y plugins/.
Habilita e inicia el servicio:
sudo systemctl daemon-reload
sudo systemctl enable samp.service
sudo systemctl start samp.serviceenable configura el arranque automático en el boot. start levanta el servidor inmediatamente.
Verificación
Con el servicio en marcha, confirma tres cosas: el proceso está vivo, está escuchando en el puerto correcto y responde a queries externas.
Verifica el estado del servicio:
sudo systemctl status samp.serviceDeberías ver Active: active (running) y las últimas líneas del log del servidor mostrando Server Plugins, Filterscripts y Number of vehicle models.
Confirma que el puerto UDP 7777 está abierto:
sudo ss -ulnp | grep 7777La salida debe mostrar una línea con UNCONN 0 0 *:7777 *:* users:(("samp03svr",pid=...)). Si no aparece nada, el servidor no se ha bindeado al puerto — revisa el log con journalctl -u samp.service -n 50.
Prueba desde el cliente SA-MP en otra computadora: añade la IP de tu VPS a la lista de favoritos (puerto 7777) e intenta conectarte. Si aparece la pantalla de spawn, el servidor está completamente operativo.
Resolución de problemas
El servidor no arranca, journalctl muestra “samp03svr: command not found”
El binario existe pero falta permiso de ejecución, o las librerías de 32 bits no se instalaron. Confirma con:
ls -la /opt/samp/samp03svr
ldd /opt/samp/samp03svr
Si ldd devuelve not a dynamic executable o errores sobre libgcc_s.so.1, reinstala las librerías i386: sudo apt install --reinstall lib32gcc-s1 lib32stdc++6.
El servidor arranca pero nadie consigue conectarse
Casi siempre es el firewall — verifica tanto ufw local como el firewall del proveedor. Prueba el puerto externo con nmap -sU -p 7777 TU_IP_PUBLICA desde otra máquina. Si el puerto aparece como open|filtered, alguna capa está bloqueando UDP.
Crashes intermitentes cada pocas horas
Generalmente es un gamemode o plugin con leak de memoria. Monitorea con top -u samp y correlaciona con journalctl -u samp.service. Quita plugins uno a uno del server.cfg hasta identificar al culpable.
Próximos pasos
Con el servidor base online, considera los siguientes refinamientos:
- Instalar un gamemode personalizado (sustituye
grandlarcengamemode0por tu Pawn compilado engamemodes/) - Añadir plugins esenciales como
sscanf2ymysqlen/opt/samp/plugins/ - Configurar backup automático de
scriptfiles/vía cron - Implementar log rotation para evitar que
server_log.txtcrezca indefinidamente - Levantar un panel de monitoreo simple leyendo el query de SA-MP vía SACNL o similar
Si vas a poner un servidor SA-MP en producción, una VPS Hostini ya viene con protección DDoS en el perímetro — relevante porque los servidores de juegos son objetivo frecuente de ataques de saturación UDP, el mismo protocolo que SA-MP usa para gameplay.
Preguntas frecuentes
¿Por qué necesito instalar bibliotecas i386 en un Ubuntu de 64 bits?
El binario oficial samp03svr está compilado para 32 bits (i386) y no existe una compilación nativa de 64 bits. Para ejecutarlo en un Ubuntu de 64 bits necesitas habilitar la arquitectura i386 con dpkg --add-architecture e instalar lib32gcc-s1. Sin esas librerías el binario falla silenciosamente o devuelve un error del loader.
¿Cuál es la diferencia entre los puertos 7777 UDP y 7777 TCP?
SA-MP usa exclusivamente UDP para la comunicación cliente-servidor. El puerto 7777 TCP solo es necesario si habilitas el query info para sitios de listado. Para gameplay puro, abre únicamente UDP 7777 en el firewall — abrir TCP sin necesidad incrementa la superficie de ataque sin beneficio alguno.
¿Puedo ejecutar samp03svr directamente como root?
Técnicamente sí, pero es mala práctica. El servidor no necesita privilegios elevados para escuchar en el puerto 7777 (por encima de 1024). Crear un usuario dedicado samp limita el impacto de cualquier exploit en plugins o filterscripts. El servicio systemd de este tutorial ya se ejecuta con User=samp.
¿Cómo protejo mi rcon_password contra ataques de fuerza bruta?
Usa una contraseña de 20+ caracteres aleatorios, define maxplayers cercano al valor real para reducir slots vacíos, y configura rcon 1 solo cuando necesites administrar remotamente. Combínalo con fail2ban filtrando el log del servidor para banear IPs tras intentos fallidos — SA-MP registra RCON authentication failed en server_log.txt.
¿Por qué mi servidor no aparece en el listado interno del cliente SA-MP?
El listado master usa announce 1 en server.cfg y depende de DNS para servers.sa-mp.com. Verifica que announce esté habilitado, que el puerto UDP 7777 sea accesible desde internet (no solo localhost) y prueba con telnet o nmap desde una red externa. Puede tardar hasta 15 minutos en aparecer después del primer registro.
¿Qué pasa si cierro la terminal SSH con samp03svr ejecutándose manualmente?
El proceso recibe SIGHUP y termina junto con la sesión SSH. Por eso el tutorial usa systemd: desacopla el proceso de la sesión, provee reinicio automático ante crashes y centraliza los logs en journalctl. Alternativas como screen o tmux funcionan para pruebas, pero no para producción.