#!/bin/sh # Instala o actualiza el gestor de /pedir/ en el servidor. # # sudo ./despliegue/instalar.sh # # Se lanza desde la raíz del repositorio. Se puede repetir: la segunda vez solo # actualiza el programa y las plantillas, y no toca ni la configuración ni los # datos. set -eu RAIZ=$(cd "$(dirname "$0")/.." && pwd) PROG=/opt/enrecal DATOS=/var/lib/enrecal LOGS=/var/log/enrecal CONF=/etc/enrecal if [ "$(id -u)" -ne 0 ]; then echo "Hay que lanzarlo con sudo." >&2 exit 1 fi # 1. El programa: se compila aquí si hay Go, o se usa el que se haya copiado a # despliegue/enrecal (ver README.md). if command -v go >/dev/null 2>&1; then echo "Compilando..." (cd "$RAIZ/gestor" && CGO_ENABLED=0 go build -trimpath -buildvcs=false -o "$RAIZ/despliegue/enrecal" .) elif [ ! -x "$RAIZ/despliegue/enrecal" ]; then echo "No hay Go en esta máquina ni un despliegue/enrecal ya compilado." >&2 echo "Compílalo en otra máquina y cópialo (ver despliegue/README.md)." >&2 exit 1 fi # 2. Usuario propio, sin shell ni carpeta personal. if ! id enrecal >/dev/null 2>&1; then useradd --system --no-create-home --shell /usr/sbin/nologin enrecal fi # 3. Carpetas. El programa y las plantillas fuera de la web pública. install -d -m 0755 "$PROG" "$PROG/plantillas" install -d -m 0750 -o enrecal -g enrecal "$DATOS" "$LOGS" install -d -m 0755 "$CONF" install -m 0755 "$RAIZ/despliegue/enrecal" "$PROG/enrecal" rm -f "$PROG"/plantillas/*.tmpl.html install -m 0644 "$RAIZ"/gestor/plantillas/*.tmpl.html "$PROG/plantillas/" if [ ! -f "$CONF/config.json" ]; then install -m 0644 "$RAIZ/despliegue/config.ejemplo.json" "$CONF/config.json" echo "Configuración nueva en $CONF/config.json" fi # 4. nginx: el límite de intentos va en http{} (conf.d) y el resto en un # fragmento que se incluye con una línea dentro del server{} de la web. if [ -d /etc/nginx ]; then install -d -m 0755 /etc/nginx/conf.d /etc/nginx/snippets install -m 0644 "$RAIZ/despliegue/nginx-zona.conf" /etc/nginx/conf.d/enrecal-zona.conf install -m 0644 "$RAIZ/despliegue/nginx-laenre.conf" /etc/nginx/snippets/enrecal.conf fi # 5. systemd. install -m 0644 "$RAIZ/despliegue/enrecal.service" /etc/systemd/system/enrecal.service systemctl daemon-reload systemctl enable enrecal >/dev/null 2>&1 systemctl restart enrecal sleep 1 systemctl --no-pager --lines=3 status enrecal || true cat <<'FIN' Listo. Si es la primera vez, faltan dos cosas: 1. En el server{} de www.laenre.net, añadir esta línea y recargar nginx: include /etc/nginx/snippets/enrecal.conf; sudo nginx -t && sudo systemctl reload nginx 2. Crear las cuentas con despliegue/cuenta.sh (ver despliegue/README.md). FIN