Skill para deployment y operaciones de La Cajita TV. Usar cuando se trabaje con Nginx, Docker, systemd, SSL, Cloudflare, CI/CD, o cualquier tarea de infraestructura y despliegue.
Guía para deployment, infraestructura y operaciones.
Usuario (Web/Mobile)
│
│ HTTPS
▼
Cloudflare (CDN + WAF + SSL)
│
│ HTTP (puerto 80)
▼
Nginx (Reverse Proxy)
│
├─────────────────────────────────┐
│ │
▼ ▼
Frontend SPA FastAPI Backend
/dist (estático) Puerto 8000/8001
| Servicio | URL | Puerto |
|---|---|---|
| Frontend Admin | https://caja.segrd.com |
| 80 → Nginx |
| API Mobile | https://caja.segrd.com/api | 80 → 8000 |
| API Admin | https://caja.segrd.com/api | 80 → 8001 |
| Sajet (alternativo) | https://b5f8a23e7d06c2de5ef515ae93e16016.sajet.us | 80/443 |
# Archivo de configuración
/etc/nginx/sites-available/lacajita
/etc/nginx/sites-enabled/lacajita -> ../sites-available/lacajita
# Validar configuración
nginx -t
# Recargar
systemctl reload nginx
# Reiniciar
systemctl restart nginx
# Ver logs
tail -f /var/log/nginx/error.log
tail -f /var/log/nginx/access.log
server {
listen 80;
server_name caja.segrd.com;
# Frontend SPA
root /opt/adm-caja-unified/fastapi-playlists/Lacajita/Adm-Caj/dist;
location / {
try_files $uri $uri/ /index.html;
}
# API Backend (quita /api)
location /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://127.0.0.1:8001;
}
# Imágenes estáticas
location /img/ {
alias /opt/adm-caja-unified/fastapi-playlists/img/;
expires 30d;
}
}
# Estado
systemctl status lacajita-api
# Reiniciar
systemctl restart lacajita-api
# Ver logs
journalctl -u lacajita-api -f
# Estado
systemctl status lacajita-mobile
# Reiniciar
systemctl restart lacajita-mobile
# Ver logs
journalctl -u lacajita-mobile -f
# /etc/systemd/system/lacajita-api.service
[Unit]
Description=La Cajita TV API
After=network.target postgresql.service
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/adm-caja-unified/fastapi-playlists/Lacajita
ExecStart=/opt/adm-caja-unified/fastapi-playlists/Lacajita/venv/bin/uvicorn Api:app --host 127.0.0.1 --port 8001
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
cd /opt/adm-caja-unified/fastapi-playlists/Lacajita/Adm-Caj
# Build
npm run build
# Resultado en /dist
ls -la dist/
# Script existente
/opt/adm-caja-unified/fastapi-playlists/Lacajita/deploy/build-and-deploy.sh
# O manual:
cd /opt/adm-caja-unified/fastapi-playlists/Lacajita/Adm-Caj
npm run build
systemctl reload nginx
caja.segrd.com → Cloudflare Proxy → 24.199.80.16 (origen)
# Certificados existentes
ls /etc/letsencrypt/live/b5f8a23e7d06c2de5ef515ae93e16016.sajet.us/
# Renovar
certbot renew
# Nuevo certificado
certbot --nginx -d dominio.com
SSL es manejado por Cloudflare (no necesita cert en origen).