SafeLine WAF en Docker: instalación en 15 minutos
En pocas palabras: Instalar SafeLine WAF con Docker toma menos de 15 minutos: un solo script descarga las imágenes, crea los contenedores y arranca los servicios en 2 o 3 minutos. Necesitás Linux con Docker 20.10.6+ y accedés al panel en el puerto 9443, protegido desde el arranque.
Instalar SafeLine WAF en Docker toma menos de 15 minutos: un script único descarga las imágenes, crea los contenedores y arranca los servicios en 2 o 3 minutos. Necesitás un servidor Linux con Docker 20.10.6+ y accedés al panel en el puerto 9443, con protección activa desde el arranque.
SafeLine es un firewall de aplicaciones web (WAF) de código abierto desarrollado por Chaitin. Se despliega con Docker y protege sitios contra ataques como inyección SQL, XSS y RCE usando análisis semántico en vez de reglas manuales. Corre como proxy inverso delante de tu aplicación, inspecciona cada request y bloquea el tráfico malicioso desde el primer minuto, sin que tengas que escribir una sola regla.
En 30 segundos
- Un solo comando: el script de instalación descarga imágenes, crea contenedores, configura la red y PostgreSQL en 2 a 3 minutos.
- Requisitos mínimos: 1 CPU, 1 GB de RAM y 5 GB de disco. No hace falta un servidor grande.
- Panel en el puerto 9443: la primera vez te pide configurar autenticación TOTP con QR (Google Authenticator, Microsoft Authenticator, la que uses).
- Protección inmediata: bloquea OWASP Top 10 (SQLi, XSS, RCE, SSRF, path traversal) sin reglas manuales.
- No sos ingeniero de seguridad: si sabés correr
docker compose, lo tenés funcionando.
¿Qué es SafeLine WAF y por qué necesitás un firewall para aplicaciones web?
SafeLine es un WAF de código abierto de Chaitin que se pone delante de tu aplicación web y filtra el tráfico malicioso antes de que llegue al servidor. A diferencia de los firewalls tradicionales que trabajan a nivel de red, un WAF entiende HTTP: lee las URLs, los headers, el body de cada request y decide si eso es un usuario legítimo o alguien tirándote un payload.
Ponele que tenés un WordPress con un formulario de contacto. Alguien manda un campo con ' OR 1=1-- intentando una inyección SQL. Sin WAF, ese request llega a tu base de datos y depende de que tu código esté bien escrito (spoiler: no siempre lo está). Con SafeLine adelante, el request se bloquea antes de tocar tu app.
Lo que diferencia a SafeLine de la vieja escuela es el análisis semántico. Los WAF clásicos como ModSecurity funcionan con reglas: listas enormes de patrones regex que hay que mantener, actualizar y afinar para que no bloqueen tráfico bueno. SafeLine, en cambio, intenta entender la intención del request. ¿Es perfecto? No. Pero te ahorra el infierno de configurar cientos de reglas a mano. Tema relacionado: proteger secretos en aplicaciones Docker.
¿Qué requisitos necesitás antes de instalar SafeLine en Docker?
Los requisitos son bajos, y esa es una de las gracias. Según la guía oficial de instalación, necesitás un servidor Linux modesto y poco más. Fijate que con 1 GB de RAM ya arranca, algo raro en el mundo de las herramientas de seguridad.
- Sistema operativo: Ubuntu 20.04+, Debian 11+ o CentOS 7+. Cualquier distro reciente zafa.
- Docker 20.10.6+ y Docker Compose 2.0.0+: versiones más viejas pueden fallar al crear los contenedores.
- Hardware: 1 núcleo de CPU, 1 GB de RAM y 5 GB de disco libre.
- Un dominio o IP pública apuntando a tu servidor. Sin esto, SafeLine está instalado pero no intercepta nada.
Si vas a levantar esto en un VPS, cualquier plan básico alcanza y sobra. Para infraestructura en Argentina, un VPS de donweb.com con Ubuntu ya cumple con estos números sin despeinarse.
¿Cómo instalar Docker y Docker Compose en tu servidor Linux?
Si Docker no está instalado, el script oficial lo resuelve en un comando. Corré esto en tu servidor (con permisos de root o sudo):
curl -fsSL https://get.docker.com | bashDespués verificá que Docker Compose quedó bien:
docker compose versionSi te devuelve una versión 2.0.0 o superior, listo. ¿Y si no aparece nada o tira error? Casi siempre es porque el servicio de Docker no arrancó: probá systemctl start docker y volvé a chequear. Ojo con una cosa: en algunas instalaciones viejas viene el comando separado docker-compose (con guión), que es la versión 1 y ya está discontinuada. SafeLine pide la sintaxis nueva sin guión.
Instalación de SafeLine: el comando único que configura todo
Acá viene lo bueno: toda la instalación de SafeLine es un solo comando. Este script hace el trabajo pesado (descarga las imágenes de Docker, crea los contenedores, arma la red interna, configura PostgreSQL y levanta todos los servicios) en 2 a 3 minutos.
bash -c "$(curl -fsSLk https://waf.chaitin.com/release/latest/manager.sh)"Mientras corre, se crean tres contenedores que conviene conocer, porque si algo se rompe vas a mirar acá:
- Tengine: el proxy inverso (un fork de Nginx) que recibe todo el tráfico entrante.
- Detector: el motor de análisis semántico que inspecciona cada request y decide si pasa o se bloquea.
- PostgreSQL: guarda la configuración y los logs de ataques.
Subís el comando, esperás un par de minutos, ves los contenedores levantar uno por uno, y cuando el script termina te tira las credenciales iniciales y la URL del panel en la misma consola. Copialas antes de cerrar la terminal (sí, en serio, más de uno las perdió). Lo explicamos a fondo en evitar interrupciones críticas de DNS.
¿Cómo acceder al dashboard y configurar la autenticación TOTP?
El panel de SafeLine vive en https://<IP-de-tu-servidor>:9443. Abrilo en el navegador. La primera vez te va a saltar el aviso de certificado autofirmado (es normal, aceptalo) y después te pide configurar autenticación TOTP: escaneás el código QR con tu app de autenticación y listo.
El TOTP es ese código de seis dígitos que rota cada 30 segundos. Sirve cualquier app estándar: Google Authenticator, Microsoft Authenticator, Authy, la que ya tengas. El tema es que sin TOTP configurado no entrás al panel, así que tené el teléfono a mano antes de arrancar este paso.
¿Cómo agregar tu primer sitio y configurar el DNS?
Para proteger un sitio, entrás al dashboard, vas a la sección de sitios y cargás tres datos: el dominio, la dirección del backend (por ejemplo 127.0.0.1 si tu app corre en el mismo servidor) y el puerto. SafeLine usa 80/443 por defecto, o podés setear uno custom si lo estás encadenando detrás de otro proxy. La protección empieza al instante, sin tocar reglas.
Falta el último paso, y es el que más gente olvida. Tenés que apuntar el registro A de tu dominio a la IP del servidor donde corre SafeLine. ¿Por qué? Porque si el DNS sigue apuntando directo a tu app, el tráfico nunca pasa por el WAF y toda la instalación no sirve de nada. Podés verificar que el DNS resolvió bien con dig tudominio.com o nslookup tudominio.com.
¿Qué ataques bloquea SafeLine desde el primer minuto?
SafeLine cubre el grueso del OWASP Top 10 apenas lo levantás, sin configuración adicional. La lista de protecciones activas por defecto incluye los ataques más comunes contra aplicaciones web. Para más detalles técnicos, mirá comparar rendimiento de contenedores cloud.
- Inyección SQL (SQLi): intentos de manipular tu base de datos vía inputs.
- Cross-Site Scripting (XSS): inyección de scripts en el navegador de tus usuarios.
- Ejecución remota de código (RCE) y SSRF: los ataques que más daño hacen.
- Path traversal, LDAP injection y XXE: el clásico intento de leer archivos que no deberían.
- Fuerza bruta y HTTP flood: mitigación de bots que martillan tu login.
La diferencia con un WAF de reglas es que SafeLine no depende de conocer el patrón exacto del ataque. Al analizar la semántica del request, atrapa variantes que un regex fijo dejaría pasar. Eso sí: ningún WAF es infalible, y tomarlo como excusa para no parchear tu app es un error caro.
SafeLine vs ModSecurity vs Cloudflare WAF: ¿cuál te conviene?
Depende de qué priorices: control total sobre tu infraestructura, cero mantenimiento de reglas, o un servicio administrado en la nube. Esta tabla resume las diferencias prácticas.
| Característica | SafeLine | ModSecurity | Cloudflare WAF |
|---|---|---|---|
| Modelo | Código abierto, self-hosted | Código abierto, self-hosted | Servicio en la nube |
| Método de detección | Análisis semántico | Reglas (regex) | Reglas + ML |
| Configuración de reglas | No requerida | Manual, extensa | Administrada |
| Instalación | 1 comando, 2-3 min | Compilación + reglas OWASP CRS | Cambio de DNS |
| Requisitos | 1 CPU, 1 GB RAM | Depende del servidor web | Ninguno (nube) |
| Dónde corre tu tráfico | Tu servidor | Tu servidor | Red de terceros |

Si querés que tus datos no salgan de tu infraestructura y odiás mantener reglas, SafeLine es difícil de superar. Si ya vivís en el ecosistema de un proveedor de CDN, su WAF administrado te ahorra la operación a cambio de rutear el tráfico por su red.
Errores comunes al instalar SafeLine WAF en Docker
- Olvidarse de cambiar el DNS: instalás todo, agregás el sitio y te preguntás por qué no bloquea nada. El registro A sigue apuntando a tu app original. El tráfico tiene que pasar por SafeLine primero.
- Usar una versión vieja de Docker: con Docker Compose 1.x (el
docker-composecon guión) la creación de contenedores puede fallar. Actualizá a la sintaxisdocker composesin guión. - No abrir el puerto 9443 en el firewall: si tenés un firewall de nube o
ufwactivo, el panel no carga. Habilitá 9443, más 80 y 443 para el tráfico web. - Perder las credenciales iniciales: el script las muestra una sola vez al terminar. Cerrás la terminal y quedás afuera. Copialas apenas aparecen.
Preguntas Frecuentes
¿Cuánto tarda instalar SafeLine WAF en Docker?
Menos de 15 minutos en total, y la instalación propiamente dicha del WAF toma 2 a 3 minutos. El script único descarga las imágenes de Docker, crea los contenedores, configura la red y PostgreSQL de forma automática. El resto del tiempo se va en instalar Docker (si no lo tenés) y configurar el DNS.
¿Necesito experiencia en seguridad para usar SafeLine?
No. Si sabés correr docker compose, podés tener SafeLine protegiendo tus aplicaciones. La protección arranca sin que tengas que escribir ni una regla, porque usa análisis semántico en lugar de listas de patrones manuales. Es una de las razones por las que se recomienda a principiantes. Ya lo cubrimos antes en almacenamiento económico para logs.
¿Cuáles son los requisitos mínimos de hardware?
1 núcleo de CPU, 1 GB de RAM y 5 GB de disco libre. Además necesitás un servidor Linux (Ubuntu 20.04+, Debian 11+ o CentOS 7+) con Docker 20.10.6+ y Docker Compose 2.0.0+, y un dominio o IP pública apuntando al servidor.
¿En qué puerto se accede al panel de SafeLine?
En el puerto 9443, vía https://<IP-del-servidor>:9443. La primera vez que entrás te pide configurar autenticación TOTP escaneando un código QR con una app como Google Authenticator o Microsoft Authenticator. Sin TOTP configurado no vas a poder acceder al dashboard.
¿SafeLine es gratis?
SafeLine es un proyecto de código abierto de Chaitin, y la versión community que se instala con el comando descrito no tiene costo de licencia. Todo el tráfico corre en tu propia infraestructura, así que el único gasto real es el del servidor donde lo alojás.
Conclusión
SafeLine bajó la barrera de entrada de los WAF a un punto que hace unos años era impensado. Antes montar un firewall de aplicaciones serio significaba compilar ModSecurity, pelearte con el OWASP Core Rule Set y afinar reglas durante días. Ahora es un comando y tres minutos.
¿Qué hago si arranco hoy? Levantá un servidor Linux con Docker, corré el script de instalación, configurá el TOTP y, lo más importante, no te olvides de apuntar el DNS. Ese último paso es el que separa un WAF que protege de una instalación decorativa. Probalo en un sitio de staging antes de mandarlo a producción y revisá los logs de la primera semana para descartar falsos positivos.
Fuentes
- SafeLine WAF Docker Setup: Complete Beginner’s Guide – guía paso a paso de instalación en Docker
- Deploy SafeLine WAF with Docker Compose – despliegue con Docker Compose
- Deploying free WAF SafeLine using Docker – instalación del WAF gratuito
- Install SafeLine WAF on Linux VPS – tutorial para VPS Linux
- Cloudflare: qué es un Web Application Firewall (WAF) – concepto y funcionamiento






