Lemmy es una plataforma descentralizada de redes sociales diseñada para fomentar la creación de comunidades en línea de manera abierta y colaborativa. Inspirada en el formato de foros de discusión tradicionales y sitios como Reddit, Lemmy permite a los usuarios crear y participar en comunidades temáticas, publicar contenido, votar en publicaciones y comentarios, y participar en debates con otros usuarios.
Una de las características más destacadas de Lemmy es su integración dentro del fediverso (una contracción de "federación" y "universo"). El fediverso es un ecosistema de redes sociales descentralizadas que se comunican entre sí a través de protocolos abiertos, como ActivityPub. Esto permite a los usuarios de Lemmy interactuar no solo con otras instancias de Lemmy, sino también con plataformas federadas como Mastodon, Pleroma, Peertube, entre otras. De esta forma, Lemmy fomenta una comunicación más libre, sin depender de una única empresa o servidor centralizado, garantizando la autonomía y el control de los datos por parte de los usuarios y comunidades.
En este tutorial, aprenderás cómo instalar Lemmy, configurar tu propia instancia y conectarla al fediverso para que puedas empezar a crear y participar en comunidades de forma descentralizada.
Primeros pasos
Para instalar Lemmy hay varias opciones, para este tutorial hemos optado por la opción más sencilla que es usar un PlayBook de Ansible donde se instala todo lo necesario. En voidnull tenemos un curso de Ansible por si te interesa echarle un vistazo:

El PlayBook es compatible con diferentes distros, pero en este caso utilizaremos Debian 12 y la siguiente configuración de recursos del servidor:
- 4vcores
- 8GB de RAM
- 50GB de disco SSD
Además de esto, tendremos que tener un dominio apuntando a la IP del servidor.
Configuración SSH
Una configuración previa a todo, es tener acceso por clave SSH para acceder por SSH al servidor sin contraseña. Para ello tendremos que generar -si no la tenemos- y copiarla al servidor.
Creamos la llave SSH con el usuario root de nuestro sistema (si no la tenemos creada de antes):
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"Y la copiamos al servidor:
ssh-copy-id [IP_SERVIDOR]Comprobamos que funciona correctamente:
ssh root@[IP_SERVIDOR]Descargar repositorio con el PlayBook
Lo primero que haremos, será descargar el repositorio donde se encuentra el PlayBook:
git clone https://github.com/LemmyNet/lemmy-ansible.gitEntramos dentro del directorio:
cd lemmy-ansible/Comprobamos que estamos en la última versión:
git checkout $(git describe --tags)Configuración del PlayBook
A continuación, configuraremos los datos de nuestro nodo de Lemmy, para ello tendremos que copiar algunos ficheros y editarlos a nuestro gusto.
Creamos un directorio con nuestro dominio:
mkdir -p inventory/host_vars/[NombreDominio]Copiamos la configuración base del nodo:
cp examples/config.hjson inventory/host_vars/arrel.top/config.hjsonSi lo editamos, podremos cambiar algunas cosas como la cuenta de correo que se utilizará para validar los registros así como la configuración de correo.
Ahora copiamos los hosts implicados:
cp examples/hosts inventory/hostsEditaremos el fichero inventory/hosts y modificaremos para poner nuestro dominio y correo electrónico para validar el SSL:
[DOMINIO] ansible_user=root domain=[DOMINIO] letsencrypt_contact_email=[EMAIL] lemmy_base_dir=/srv/lemmy pictrs_safety=false lemmy_web_port=9633Copiamos la configuración de PostgreSQL, aquí podemos editar el fichero para configurarlo a nuestras necesidades.
cp examples/customPostgresql.conf inventory/host_vars/[DOMINIO]/customPostgresql.confSi necesitas saber como configurarlo para adaptarlo a los recursos de tu servidor, puedes revisar este otro artículo que explica el funcionamiento de PGTune:

Seguimos configurando, esta vez con las variables del PlayBook, aquí podemos cambiar lo que necesitemos, pero evitad tocar todo lo que contenga {{ }}.
cp examples/vars.yml inventory/host_vars/arrel.top/vars.ymlInstalación de Lemmy
Ahora que ya tenemos todo configurado, podemos iniciar la instalación utilizando el PlayBook. Este PlayBook, lo que hará será instalar Docker y configurar los contenedores necesarios para Lemmy.
Ejecutamos el siguiente comando:
ansible-playbook -i inventory/hosts lemmy.ymlSalida del comando
PLAY [Install Lemmy] *******************************************
TASK [Assert that Ansible version is >= 2.11.0] ***********************
ok: [DOMINIO] -> localhost] => {
"changed": false,
"msg": "All assertions passed"
}
TASK [Check lemmy_base_dir] ***********************************
skipping: [DOMINIO]
TASK [Check for legacy passwords/postgres file] ********************
ok: [DOMINIO] -> localhost]
TASK [Legacy use of passwords/postgres file] **********************
skipping: [DOMINIO]
TASK [Check for vars.yml file] ********************************
ok: [DOMINIO] -> localhost]
TASK [Missing vars.yml file] *********************************
skipping: [DOMINIO]
TASK [Install python for Ansible] *******************************
ok: [DOMINIO]
TASK [Gather facts] ******************************************
ok: [DOMINIO]
TASK [Ensure target system is Debian or Ubuntu] ******************
ok: [DOMINIO] => {
"changed": false,
"msg": "All assertions passed"
}
TASK [Install dependencies] **********************************
changed: [DOMINIO]
TASK [Add Docker GPG apt Key] *****************************
skipping: [DOMINIO]
TASK [Add Docker Repository] ******************************
skipping: [DOMINIO]
TASK [Get architecture using dpkg] *****************************
ok: [DOMINIO]
TASK [Download Docker GPG Key] ****************************
changed: [DOMINIO]
TASK [Add Docker apt repo] *********************************
changed: [DOMINIO]
TASK [Install docker-ce and docker-compose] **********************
changed: [DOMINIO]
TASK [Copy docker config] ************************************
changed: [DOMINIO]
TASK [Request initial letsencrypt certificate] **********************
changed: [DOMINIO]
TASK [Create lemmy folder] ***********************************
changed: [DOMINIO] => (item={'path': '/srv/lemmy/[DOMINIO]/', 'owner': 'root'})
changed: [DOMINIO] => (item={'path': '/srv/lemmy/[DOMINIO]/volumes/', 'owner': 'root'})
changed: [DOMINIO] => (item={'path': '/srv/lemmy/[DOMINIO]/volumes/pictrs/', 'owner': '991'})
changed: [DOMINIO] => (item={'path': '/var/cache/lemmy/[DOMINIO]/', 'owner': 'www-data'})
TASK [Generate random port for lemmy service] **********************
ok: [DOMINIO]
TASK [Distribute nginx proxy_params configuration] *******************
changed: [DOMINIO]
TASK [Add template files] ****************************************
changed: [DOMINIO] => (item={'src': 'templates/docker-compose.yml', 'dest': '/srv/lemmy/[DOMINIO]/docker-compose.yml', 'mode': '0600'})
changed: [DOMINIO] => (item={'src': 'templates/nginx_internal.conf', 'dest': '/srv/lemmy/[DOMINIO]/nginx_internal.conf', 'mode': '0644'})
changed: [DOMINIO] => (item={'src': 'templates/nginx.conf', 'dest': '/etc/nginx/sites-available/[DOMINIO].conf', 'mode': '0644'})
TASK [Gather stats on site enabled config] ***************************
ok: [DOMINIO]
TASK [Remove if regular file (legacy) instead of symlink] **************
skipping: [DOMINIO]
TASK [Enable nginx site] *****************************
changed: [DOMINIO]
TASK [Add the config.hjson] **********************************
changed: [DOMINIO]
TASK [Add the customPostgresql.conf] *******************************
changed: [DOMINIO]
TASK [Enable and start docker service] **************************
ok: [DOMINIO]
TASK [Start docker-compose] ****************************
changed: [DOMINIO]
TASK [Certbot renewal cronjob] *****************************
changed: [DOMINIO]
RUNNING HANDLER [Reload nginx] *****************************
changed: [DOMINIO]
PLAY RECAP **************************************
[DOMINIO] : ok=25 changed=15 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0
Accediendo por primera vez
Una vez haya finalizado la instalación del PlayBook, podremos acceder a nuestro dominio e configurar el primer usuario:

Una vez hemos configurado los datos de nuestro usuario, hacemos clic sobre el botón "Crear cuenta" y seguimos con la configuración:

Finalmente, abajo del todo le damos a "Crear" para inicializar nuestro nodo de Lemmy:

Y listo! Ya tenemos nuestra instancia de Lemmy!
Más sobre ./voidNull
- 📖 Aprende todos sobre los comandos de GNU/Linux en nuestro Diccionario "De la A a la Z: Los comandos de GNU/Linux"
- 💪 ¡Forma parte de la Comunidad de ./voidNull!
- 🤖 Disfruta de todos nuestros Cursos sobre Ansible, Proxmox, Home Assistant entre otros.
- 📩 Mantente actualizado con lo último en GNU/Linux y Software Libre. Recibe nuestra Newsletter mensual.


Comentarios