Conjunto de scripts para automatizar la configuración de Nginx para múltiples proyectos Docker en tu VPS.
Crea automáticamente configuraciones de Nginx para tus proyectos.
Características:
- ✅ Configuración interactiva (paso a paso)
- ✅ Soporte para WebSockets
- ✅ Configuración de tamaños de archivo
- ✅ Creación automática de logs
- ✅ Validación de configuración
- ✅ Backup automático si sobrescribes
- ✅ Apertura automática de puertos en firewall
- ✅ Integración con Certbot para SSL
Muestra todas tus configuraciones de Nginx con detalles.
Elimina configuraciones de forma segura con backup automático.
# Opción A: Clona desde tu repo
git clone https://github.com/tu-usuario/nginx-config-script.git
cd nginx-scripts
# Opción B: Sube manualmente con scp
scp setup-nginx.sh remove-nginx-config.sh list-nginx-configs.sh root@TU_IP:/root/chmod +x setup-nginx.sh remove-nginx-config.sh list-nginx-configs.shsudo ./setup-nginx.shEl script te guiará paso a paso:
Nombre del proyecto: my-app
Dominio: app.example.com
Puerto local: 3010
Tamaño máximo: 100
WebSockets: s
SSL con Certbot: n
Ejemplo para diferentes proyectos:
| Proyecto | Dominio | Puerto |
|---|---|---|
| My App | app.example.com | 3010 |
| Cloud | cloud.example.com | 8080 |
| Git | git.example.com | 8929 |
| Admin | admin.example.com | 9000 |
./list-nginx-configs.shMuestra:
📋 Configuraciones de Nginx
Total de configuraciones: 3
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Proyecto: my-app
Dominio: app.example.com
Puerto: 3010
SSL: ✓ Habilitado
sudo ./remove-nginx-config.shDespués de crear la configuración con el script:
# 1. Asegúrate de que el DNS apunte a tu servidor
# 2. Instala Certbot (si no lo tienes)
sudo dnf install -y certbot python3-certbot-nginx
# 3. Obtén el certificado
sudo certbot --nginx -d app.example.comCertbot:
- ✅ Obtendrá el certificado automáticamente
- ✅ Modificará tu configuración de Nginx
- ✅ Configurará renovación automática
-
En Cloudflare DNS, añade un registro A:
- Type:
A - Name:
app(o tu subdominio) - IPv4:
TU_IP_VPS - Proxy:
🟠 Proxied← Activa esto
- Type:
-
En SSL/TLS settings:
- Modo:
Full(no "Full strict") - Always Use HTTPS:
ON
- Modo:
No necesitas Certbot - Cloudflare maneja el SSL automáticamente.
-
En Cloudflare DNS:
- Proxy:
⚪ DNS only(nube gris)
- Proxy:
-
Usa Certbot en tu servidor:
sudo certbot --nginx -d app.example.com
Los scripts abren automáticamente los puertos HTTP/HTTPS, pero puedes hacerlo manualmente:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reloadsudo ufw allow 80/tcp
sudo ufw allow 443/tcpCada proyecto genera:
/etc/nginx/conf.d/
├── my-app.conf
├── cloud.conf
└── admin.conf
/var/log/nginx/
├── my-app_access.log
├── my-app_error.log
├── cloud_access.log
└── cloud_error.log
# Ver logs en tiempo real
sudo tail -f /var/log/nginx/my-app_error.log
# Probar configuración antes de aplicar
sudo nginx -t
# Recargar Nginx (sin downtime)
sudo systemctl reload nginx
# Reiniciar Nginx
sudo systemctl restart nginx
# Ver estado de Nginx
sudo systemctl status nginx
# Editar una configuración
sudo nano /etc/nginx/conf.d/my-app.confOtro servicio está usando el puerto 80.
sudo lsof -i :80
sudo systemctl stop httpd # Si Apache está corriendoEl contenedor Docker no está corriendo:
docker compose ps
docker compose up -dEl puerto en Nginx no coincide con el del contenedor:
# Verifica el puerto del contenedor
docker compose ps
# Edita la configuración de Nginx
sudo nano /etc/nginx/conf.d/my-app.confEspera 5-10 minutos después de configurar Cloudflare:
# Verifica la propagación DNS
nslookup app.example.com
dig app.example.com/home/usuario/proyectos/my-app/
├── docker-compose.yml # Configuración de Docker
├── .env # Variables de entorno (NO subir a Git)
├── .env.example # Plantilla de variables
├── .gitlab-ci.yml # Pipeline de CI/CD
├── .gitignore # Archivos a ignorar
├── storage/ # Datos persistentes
├── config/ # Configuraciones
└── postgres/ # Base de datos
/etc/nginx/conf.d/
└── my-app.conf # Configuración de Nginx
/var/log/nginx/
├── my-app_access.log # Logs de acceso
└── my-app_error.log # Logs de errores
# 1. En tu VPS
cd /home/usuario/proyectos
git clone https://github.com/tu-usuario/nuevo-proyecto.git
cd nuevo-proyecto
cp .env.example .env
nano .env # Configura las variables
docker compose up -d
# 2. Configura Nginx
sudo ./setup-nginx.sh
# Ingresa: nombre, dominio, puerto, etc.
# 3. Configura DNS en Cloudflare
# Añade registro A apuntando a tu VPS
# 4. (Opcional) Configura SSL
sudo certbot --nginx -d new-project.example.com
# 5. Verifica
curl https://new-project.example.comPara tus docker-compose.yml:
# Puertos
PORT=3010 # Puerto externo
# Base de datos
DB_USERNAME=usuario
DB_PASSWORD=password_seguro_sin_caracteres_especiales
DB_DATABASE=nombre_db
# Rutas
UPLOAD_LOCATION=./storage
CONFIG_LOCATION=./config
DB_DATA_LOCATION=./postgresBuenas prácticas:
- ✅ Usa contraseñas fuertes sin caracteres especiales problemáticos (
&,#,$, etc.) - ✅ Mantén el
.envfuera de Git (usa.gitignore) - ✅ Expón contenedores solo en
127.0.0.1(no0.0.0.0) - ✅ Usa Cloudflare Proxy para protección DDoS
- ✅ Actualiza regularmente Nginx y Docker
- ✅ Revisa logs periódicamente
Si tienes problemas:
- Revisa los logs:
sudo tail -f /var/log/nginx/error.log - Verifica la configuración:
sudo nginx -t - Comprueba el estado del contenedor:
docker compose ps - Verifica el firewall:
sudo firewall-cmd --list-all
Scripts de uso libre para tus proyectos.
Creado con ❤️ para simplificar el deployment de proyectos Docker