Tareas Admin
Notas sobre tareas de administración de nuestra infra.
Admin del Puerto
Notas aquí:
Actualización de emojis copiados
En la página de federación indicamos de qué instancias copiamos los emojis
Para que se actualicen en el front-end, parece que lo que hay que hacer es la siguiente secuencia de dos pasos:
(1) borrar el archivo pack.json
Es decir, desde la línea de comandos, como root:
# rm /var/lib/pleroma/static/emoji/stolen/pack.json
(una pensaría que esto se haría automáticamente al recargar los emojis, pero hasta ahora la experiencia ha sido que no es así)
(2) recargar los emojis
Esto desde admin-fe, en las settings de emoji:
Probablemente se actualice solo, pero no está de más presionar "Reload emoji" y también "Import packs from the server filesystem".
Limpieza de base de datos del Mar
desde /opt/akkoma, y como user con permisos sudo:
sudo -Hu akkoma MIX_ENV=prod mix pleroma.database prune_objects --keep-threads --keep-non-public --prune-orphaned-activities
dependiendo de hace cuánto se realizó con anterioridad, puede tomar algunos minutos. si ya ha pasado mucho tiempo, después de una primera ronda conviene volverlo a ejecutar agregando `--vacuum` al final.
tomar en cuenta que cada semana se hace respaldo de la base de datos en /tmp/ con el nombre "akkoma-YYYY-MM-DD". De vez en cuando hay que eliminar manualmente respaldos que sean de los meses anteriores.
El respaldo se realiza con el siguiente comando:
sudo -Hu postgres pg_dump -d pleroma --format=custom -f /tmp/akkoma-$(date -I).pgdump
Renovación de certificados TLS (Let's Encrypt)
Un cronjob ejecuta dos veces al mes el siguiente comando que renueva los certificados que están por expirar:
# certbot renew --nginx
Prosody
Adicionalmente, para Prosody, el servidor de XMPP, que requiere su propia copia del certificado de archipielago.uno, cada mes se ejecutan los siguientes dos comandos:
# prosodyctl --root cert import /etc/letsencrypt/live # systemctl restart prosody.service
Creación de nuevas islas
Las tres-eses (?)
1) subdominio
Primero hay que crear un subdominio dirigido a la dirección IP del Archipiélago I.
2) script
Con eso listo, tenemos un script en el directorio home de root que se ejecuta de la siguiente forma:
# ./creaisla.sh NOMBRE_DE_ISLA
El password que aparece tiene que copiarse y pegarse dos veces en la prompt. Hay que tomar nota de ese password y del generado para el wiki, pues hay que compartirlos a la nueva isla.
Más abajo en esta página hemos puesto los detalles de lo que hace el script.
3) sync
Agrega manualmente el nombre de la isla al archivo /root/sync.sh, que se ve algo así:
#!/bin/bash
users=(diez azul lind hache caogena aves ness miel vladomiro)
for u in ${users[*]}
do
echo $u
unison -batch /var/lichen/$u/ /home/$u/public_lichen/
cp -vu /home/$u/lichen.htpasswd /var/lichen/$u.htpasswd
chown -R $u: /home/$u/public_lichen/
done
Este script se ejecuta cada minuto y es el que mantiene sincronizados los directorios servidos públicamente desde /var/lichen/ con los directorios home/ de cada isla.
Detalles del script creaisla.sh
(Nota: los pasos de generación de password están ofuscados intencionalmente)
Lo primero que hace el script es crear le user, preguntándonos su password:
#!/bin/bash
u=$1
p="PASSWORD GENERADO AUTOMÁTICAMENTE"
echo "creando ${u}, ${p}"
adduser $u # en este paso hay que pegar dos veces el password
usermod -aG archipielago $u
luego crea el directorio (duplicado) para lichen, con los permisos correspondientes:
mkdir "/var/lichen/${u}"
unison -batch "/home/${u}/public_lichen" "/var/lichen/${u}"
chown -R www-data: "/var/lichen/${u}"
crea el directorio para el repo de git, y el enlace simbólico:
echo "creando repos..."
mkdir "/srv/cgit/repos/${u}"
ln -s "/srv/cgit/repos/${u}" "baul"
también haz un enlace simbólico para acceder al directorio de radio costa:
echo "creando enlace para radiocosta..."
ln -s "/srv/radiocosta" "/home/${u}/radiocosta"
después configura nginx usando una plantilla default de http, y llama a certbot para el certificado TLS:
echo "configurando nginx y certbot..."
sed "s/USER/${u}/" /etc/nginx/sites-available/template-lichen-http > "/etc/nginx/sites-available/${u}-archi1"
ln -s "/etc/nginx/sites-available/${u}-archi1" "/etc/nginx/sites-enabled/${u}-archi1"
systemctl reload nginx
certbot -d "${u}.archipielago.uno" --nginx
posteriormente crea la configuración para chamorrx en gemini:
echo "creando configuración para chamorrx en gemini..." geminiconfig="/opt/chamorrx/config.txt" cp $geminiconfig . cat >> $geminiconfig <agrega a la isla al wiki:
echo "agregando user a wiki..." pwiki="PASSWORD GENERADO AUTOMÁTICAMENTE" echo $pwiki sudo -u www-data htpasswd -b /var/lichen/wiki.htpasswd $u $pwikise crea la cuenta de xmpp:
echo "creando cuenta xmpp:" prosodyctl register $u "archipielago.uno" $py al final se genera la invitación al Mar:
# pleroma echo "generando invitación al Mar..." cd /opt/akkoma/; sudo -Hu akkoma MIX_ENV=prod mix pleroma.user invite --max-use 1; cd -bueno, al final final se imprime un aviso y recordatorio del paso 3)
echo "ya quedó!" echo "recuerda agregar a ${u} a /root/sync.sh"