Tareas Admin

Notas sobre tareas de administración de nuestra infra.

Nuestra infra

Admin del Puerto

Notas aquí:

Admin Cerca

Actualización de emojis copiados

En la página de federación indicamos de qué instancias copiamos los emojis

Federación

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:

Admin FE - settings / 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.

Database maintenance tasks

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 $pwiki

se crea la cuenta de xmpp:

echo "creando cuenta xmpp:"

prosodyctl register $u "archipielago.uno" $p

y 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"