You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
senzapaura_es/despliegue/senzapaura.service

67 lines
2.3 KiB

# Servicio de systemd para el servidor de la web.
#
# Copiar a /etc/systemd/system/senzapaura.service y luego:
#
# sudo systemctl daemon-reload
# sudo systemctl enable --now senzapaura
# sudo systemctl status senzapaura
# journalctl -u senzapaura -f # para ver qué está pasando
#
# La web es un servidor de Node, no archivos sueltos: cada página se genera
# sabiendo quién la pide —si ha entrado, qué lleva en el carrito, qué ha
# comprado—, así que hay un proceso vivo permanentemente. Nginx se pone delante;
# esto es lo que mantiene el proceso en pie.
[Unit]
Description=Senza Paura — web
Documentation=file:///var/www/senzapaura/README.md
# La web no arranca sin base de datos, así que espera a que Postgres esté listo.
After=network-online.target postgresql.service
Wants=network-online.target
StartLimitIntervalSec=60
StartLimitBurst=5
[Service]
Type=simple
User=senzapaura
Group=senzapaura
WorkingDirectory=/var/www/senzapaura/current
# Las claves y la cadena de conexión viven aquí, fuera del repositorio.
# Debe ser 600 y de este usuario: contiene la clave de Stripe.
EnvironmentFile=/var/www/senzapaura/.env
Environment=HOST=127.0.0.1
Environment=PORT=3000
Environment=MEDIA_DIR=/var/www/senzapaura/media/audio
Environment=ESCUCHA_DIR=/var/www/senzapaura/media/escucha
Environment=ONDA_DIR=/var/www/senzapaura/media/ondas
Environment=IMAGEN_DIR=/var/www/senzapaura/media/imagenes
ExecStart=/usr/bin/node build/index.js
Restart=always
RestartSec=5
# Si se cae en bucle, que pare y se note, en vez de reiniciarse para siempre
# consumiendo la máquina.
# --- Cerrojos ---------------------------------------------------------------
# Un servidor web es lo que primero se intenta reventar. Estas líneas no cuestan
# nada y limitan lo que un proceso comprometido podría tocar.
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
RestrictSUIDSGID=true
# Lo único que necesita escribir es la carpeta de medios si algún día se sube
# audio desde el propio servidor. El resto del disco queda de solo lectura.
ReadWritePaths=/var/www/senzapaura/media
# Sin acceso a otras redes que no sean IP: no hace falta nada más.
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
[Install]
WantedBy=multi-user.target

Powered by TurnKey Linux.