No estás usando esta distribución?

Selecciona una versión o distribución diferente

GoToSocial es una implementación ligera y eficiente de un servidor para el Fediverso, compatible con ActivityPub, el protocolo utilizado por plataformas descentralizadas como Mastodon. Diseñado para ser fácil de desplegar y operar, GoToSocial permite a los usuarios alojar su propia instancia y conectarse con otras redes sociales federadas sin necesidad de una infraestructura pesada.

A diferencia de otras opciones como Mastodon, GoToSocial se enfoca en ser liviano y accesible, ideal para servidores con recursos limitados. Actualmente, su interfaz web está en desarrollo, pero ofrece una API completa que permite la integración con clientes de terceros.

En este tutorial, veremos cómo instalar y configurar GoToSocial en Debian 12, asegurando que tu servidor esté listo para federarse con el resto del Fediverso.

Preparación del entorno

Antes de comenzar con la instalación de GoToSocial, es importante asegurarse de que el sistema está actualizado. Para ello, ejecuta el siguiente comando:

apt update
apt upgrade

A continuación, creamos un directorio donde descargaremos todos los archivos necesarios para la instalación de GoToSocial. Para ello, ejecuta:

mkdir -p /gotosocial/storage/certs
cd /gotosocial

Ahora, utilizando la última versión disponible, configuramos la versión de la release mediante variables.

GTS_VERSION=0.17.4
GTS_TARGET=linux_amd64

Y descargamos el fichero comprimido:

wget https://github.com/superseriousbusiness/gotosocial/releases/download/v${GTS_VERSION}/gotosocial_${GTS_VERSION}_${GTS_TARGET}.tar.gz

Copiamos el fichero de configuración:

cp example/config.yaml .

Configuración de GoToSocial

Ahora que hemos copiado todos los archivos necesarios, es momento de iniciar la configuración. Para ello, debemos editar el archivo de configuración principal, donde definiremos los parámetros esenciales para el funcionamiento de GoToSocial, como la URL del servidor, la base de datos y otras opciones clave. Editamos el fichero:

nano config.yaml

Tendremos que editar estos valores:

# host: Configura un nombre de dominio
host: "gotosocial.dominio.com"

# Ejecutar en modo de lista de permitidos es obligatorio para los nodos de Website League.
instance-federation-mode: "allowlist"

# Hace que los clientes que requieren Mastodon sean compatibles.
instance-inject-mastodon-version: true

# instance-languages: Establece los idiomas preferidos para ti o tus usuarios.
# https://en.wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags
instance-languages: ["es"]

# Si esta es una instancia de un solo usuario, puedes cambiar este valor a tu usuario.
# Al acceder al dominio de la instancia, se redirigirá a tu perfil.
landing-page-user: ""

# Activa esta opción si estás creando un nodo multiusuario y deseas aceptar registros.
accounts-registration-open: false

# Si vienes de Cohost, probablemente quieras activar esto. No es tan bueno como los "crímenes federados de CSS",
# pero al menos permite personalizar el CSS del perfil.
accounts-allow-custom-css: true

# Ajusta el límite de caracteres para publicaciones, estableciendo un valor más flexible.
# (Se ha probado con 50,000 caracteres sin problemas).
statuses-max-chars: 50000

# Configura GoToSocial para ejecutarse como servidor web
# y establece SQLite como la base de datos predeterminada.
port: 443
db-type: "sqlite"
db-address: "sqlite.db"

# Esto debería ser correcto, pero cámbialo si estás utilizando un directorio diferente.
storage-local-base-path: "/gotosocial/storage"

# Configura GoToSocial para obtener un certificado SSL gratuito de Let's Encrypt.
letsencrypt-enabled: true
letsencrypt-cert-dir: "/gotosocial/storage/certs"
letsencrypt-email-address: "your@awesome-email.here"

Probemos que funciona correctamente

Ha llegado el momento de poner todo en marcha y comprobar que la configuración funciona correctamente. Para ello, ejecutamos:

./gotosocial --config-path ./config.yaml server start

El proceso comenzará a cargar todos los componentes... Debemos esperar hasta que aparezcan las siguientes dos líneas:

timestamp="18/02/2025 16:18:40.803" func=admin.(*Processor).FillWorkerQueues level=INFO msg=rehydrate!
timestamp="18/02/2025 16:18:40.803" func=router.(*Router).letsEncryptTLS.func2 level=INFO msg="letsencrypt listening on 0.0.0.0:80"
timestamp="18/02/2025 16:18:40.803" func=admin.(*Processor).FillWorkerQueues level=INFO delivery=0 federator=0 client=0 errors=0 msg="recovered queued tasks"
timestamp="18/02/2025 16:18:40.803" func=router.(*Router).Start.func1 level=INFO msg="listening on 0.0.0.0:443"

En este punto, nuestro servidor de GoToSocial estará activo. Si accedemos al dominio configurado, deberíamos ver lo siguiente:

Ahora que hemos verificado que todo funciona correctamente, podemos detener el proceso utilizando Control + D. A continuación, procederemos a crear el usuario administrador, quien tendrá permisos para gestionar la instancia y configurar opciones clave del servidor.

./gotosocial --config-path ./config.yaml admin account create --username [NombreUsuario] --email [Correo] --password '[ContraseñaSegura]'
💡
La contraseña debe ser altamente segura; de lo contrario, el sistema no permitirá su creación. Asegúrate de usar una combinación robusta de caracteres.

Si queremos que el usuario tenga privilegios de administrador para gestionar la instancia, debemos asignarle permisos de administración durante su creación.

./gotosocial --config-path ./config.yaml admin account promote --username [NombreUsuario]

Configurar servicio de SystemD

Para configurar el servicio correctamente, primero debemos crear un usuario dedicado y ajustar los permisos de los archivos. Para ello, ejecutamos los siguientes comandos:

useradd -r gotosocial
groupadd gotosocial
usermod -a -G gotosocial gotosocial

Y cambiamos los permisos:

chown -R gotosocial:gotosocial /gotosocial

Copiamos el fichero de configuración:

cp /gotosocial/example/gotosocial.service /etc/systemd/system/

Editamos el fichero y descomentamos la siguiente línea:

AmbientCapabilities=CAP_NET_BIND_SERVICE

Y recargamos servicios:

systemctl enable --now gotosocial.service

Una vez iniciado, podemos comprobar el estado del servicio para asegurarnos de que se ha iniciado correctamente y está en funcionamiento.

Feb 18 17:00:51 gotosocial gotosocial[27271]: timestamp="18/02/2025 17:00:51.692" func=router.(*Router).letsEncryptTLS.func2 level=INFO msg="letsencrypt listening on 0.0.0.0:80"
Feb 18 17:00:51 gotosocial gotosocial[27271]: timestamp="18/02/2025 17:00:51.692" func=router.(*Router).Start.func1 level=INFO msg="listening on 0.0.0.0:443"
Feb 18 17:00:51 gotosocial gotosocial[27271]: timestamp="18/02/2025 17:00:51.692" func=admin.(*Processor).FillWorkerQueues level=INFO delivery=0 federator=0 client=0 errors=0 msg="recover>

Accediendo a la configuración de la cuenta

Si accedemos a nuestra URL y añadimos /settings, podremos iniciar sesión con nuestro usuario y modificar la configuración de nuestra cuenta según nuestras preferencias.

Además si hemos configurado la cuenta como admin, tendremos toda la parte de moderación y administración.

Configurar cuenta en cliente

Podemos utilizar clientes como Tusky o Semaphore para acceder a nuestra instancia. Solo necesitamos ingresar el nombre de la instancia e iniciar sesión con nuestras credenciales.

Por ejemplo, en Semaphore:

O en Tusky:

Conclusión

Hemos instalado y configurado GoToSocial en Debian 12, permitiéndonos disponer de una instancia ligera y eficiente dentro del Fediverso. A lo largo del proceso, hemos actualizado el sistema, descargado los archivos necesarios, configurado los parámetros clave y puesto en marcha el servicio.

Con nuestra instancia en funcionamiento, ya podemos interactuar con otras redes federadas y utilizar clientes compatibles como Tusky o Semaphore para gestionar nuestra cuenta de manera más cómoda. Además, al contar con una configuración basada en SQLite y un consumo de recursos reducido, GoToSocial es una excelente opción para quienes buscan una solución autoalojada sin necesidad de infraestructura pesada.


Más sobre ./voidNull

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación