Cuenta de externas, arreglos de seguridad, títulos arriba y despliegue
- Rol «externas» para la asamblea de externas: pide sin cupo, siempre con el colectivo de fuera y su contacto, y sus solicitudes salen en naranja hasta que la asamblea de la Enre las confirma. - /pedir/ explica en una línea que los colectivos externos piden fecha en la asamblea de externas, los lunes de 19:00 a 20:00. - Seguridad: argon2 limitado a dos cálculos a la vez y el intento se cuenta antes de calcular (60 accesos simultáneos llevaban el proceso a 3,8 GB); bloqueo por cuenta a 20 fallos para que no se pueda dejar fuera a la asamblea; avisos por sesión en vez de por URL; sig sin «..»; eventos de 31 días como mucho; parámetros de argon2 acotados. - Títulos pegados arriba en todas las páginas; la franja de la enredadera recupera ese alto para seguir llenando la pantalla. - despliegue/: instalar.sh, cuenta.sh, servicio de systemd con el proceso encerrado, fragmento de nginx que además deja de servir .git y las notas internas, y configuración de ejemplo. Ninguna contraseña en el repositorio.
This commit is contained in:
parent
ce3127baff
commit
7d5dbeec60
24 changed files with 606 additions and 96 deletions
77
despliegue/instalar.sh
Executable file
77
despliegue/instalar.sh
Executable file
|
|
@ -0,0 +1,77 @@
|
|||
#!/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
|
||||
Loading…
Add table
Add a link
Reference in a new issue