Snac
SNAC (Social Networks Are Crap)
El programa snac es un servidor ActivityPub que permite tener una instancia del fediverso autoalojada. Es compatible parcialmente con el protocolo de Mastodon (que amplía ActivityPub) de manera que puede usarse con clientes terceros como Tusky.
Instalación y configuración en Debian (bookworm)
A día de hoy no existe paquete en esta versión. Es necesario emplear la versión de la rama testing y como el programa está hecho en C portable no tiene dependencias especiales.
Al instalar ese paquete se crea un servicio para systemd, se inicializa un directorio de trabajo en /var/lib/snac
y se crea el usuario y el grupo correspondiente. La configuración está en /var/lib/snac/server.json
y basta con editarlo y ajustar un par de cosas para que el sistema quede listo para crear cuentas y empezar a utilizarlo.
El programa está diseñado para ser empleado con un servidor web haciendo de proxy delante de él y que se comunique con el interfaz de red local (127.0.0.1
). Si el servidor es nginx es muy sencillo de configurar porque es el empleado en desarrollo y el propio paquete ya incluye una configuración utilizable.
En caso de que el servidor sea Apache la cosa se complica más y se puede decir que la configuración, aunque funcional, está aún en testeo. Lo primero que hay que hacer es desactivar la configuración que incluye el paquete si se tienen varios servidores virtuales en la instalación.
$ sudo a2disconf snac2
Después se debe incluir en el dominio principal que tendrá la instalación. Bien en el principal (taquiones.net en mi caso) o bien en un subdominio (social.esferas.org como ejemplo).
La configuración que mejor parece funcionar es la siguiente:
ProxyPreserveHost On
# Main web access point
<Location /social>
ProxyPass http://127.0.0.1:8001/social
</Location>
# WebFinger
<Location /.well-known/webfinger>
ProxyPass http://127.0.0.1:8001/.well-known/webfinger
</Location>
# NodeInfo (optional)
<Location /.well-known/nodeinfo>
ProxyPass http://127.0.0.1:8001/.well-known/nodeinfo
</Location>
# Mastodon API (entry points)
<Location /api/v1/ >
ProxyPass http://127.0.0.1:8001/api/v1/
</Location>
<Location /api/v2/>
ProxyPass http://127.0.0.1:8001/api/v2/
</Location>
# Mastodon API (OAuth support)
<Location /oauth>
ProxyPass http://127.0.0.1:8001/oauth
</Location>
Se debe prestar atención a las barras inclinadas de los URL finales. Dejo aquí una versión descargable directamente: