bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Despliegue de Lemmy en

calendar_month Jul 03, 2026 schedule 26 min de lectura visibility 10 vistas
Развёртывание Lemmy на VPS: собственный сервер федеративной социальной сети
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Despliegue de Lemmy en un VPS: su propio servidor de red social federada

TL;DR

En esta guía detallada, configuraremos paso a paso su propio servidor Lemmy en un servidor privado virtual (VPS) o un servidor dedicado. Aprenderá cómo preparar el sistema operativo Ubuntu 24.04 LTS, instalar Docker y Docker Compose, desplegar Lemmy utilizando PostgreSQL y configurar el servidor web Caddy para obtener certificados HTTPS automáticamente. Como resultado, obtendrá una red social federada Lemmy completamente funcional, independiente y escalable, lista para usar y administrar.

  • Configuración de un entorno Ubuntu 24.04 LTS seguro y actualizado (año 2026).
  • Despliegue de Lemmy con Docker Compose para simplificar la gestión de componentes.
  • Configuración de PostgreSQL como base de datos para Lemmy.
  • Uso de Caddy para la gestión automática de certificados HTTPS (Let's Encrypt).
  • Instrucciones detalladas para la copia de seguridad y el mantenimiento de su instancia de Lemmy.
  • Respuestas a preguntas frecuentes y consejos para la resolución de problemas.

Qué configuramos y por qué

Diagrama: Qué configuramos y por qué
Diagrama: Qué configuramos y por qué

En el panorama digital actual, donde las redes sociales centralizadas a menudo son criticadas por la censura, la recopilación de datos y los algoritmos opacos, las plataformas federadas ofrecen una alternativa atractiva. Lemmy es uno de esos proyectos: una plataforma libre y de código abierto para la agregación de enlaces y discusiones, similar a Reddit, pero construida sobre el protocolo ActivityPub. Esto significa que su servidor Lemmy (también llamado "instancia") puede interactuar con otras instancias de Lemmy, así como con servidores de otras redes federadas como Mastodon, Kbin y Pixelfed.

Al configurar su propia instancia de Lemmy en un VPS, obtiene control total sobre su red social. Usted define las reglas de moderación, elige con qué otras instancias de la federación interactuar y garantiza la privacidad de los datos de sus usuarios. Es una solución ideal para crear comunidades de nicho, foros privados para equipos o simplemente para aquellos que buscan un espacio de comunicación independiente, libre del dictado corporativo.

Al final, el lector obtendrá un servidor Lemmy completamente funcional, accesible a través de su propio nombre de dominio, con cifrado HTTPS automático, copias de seguridad configuradas y una comprensión de cómo mantener el sistema actualizado. Se convertirá en el administrador de su propia micro-red social, capaz de integrarse con el universo federado más amplio.

Existen alternativas, como el uso de servicios gestionados en la nube (aunque para Lemmy no hay tantos como para, por ejemplo, WordPress) u otras plataformas autoalojadas (Mastodon para microblogs, Kbin como un agregador de contenido más amplio). Sin embargo, la elección de una solución autoalojada en un VPS para Lemmy se debe a varias ventajas clave:

  • Control total: Usted posee todos los datos, gestiona el software y la infraestructura sin intermediarios.
  • Flexibilidad y personalización: Posibilidad de ajustar finamente todos los parámetros del servidor, instalar plugins y temas que pueden no estar disponibles en plataformas gestionadas.
  • Privacidad: Ausencia de terceros que puedan recopilar o vender los datos de sus usuarios.
  • Eficiencia económica: A menudo, con un cierto nivel de uso, un VPS propio resulta más económico que una suscripción a un servicio gestionado, especialmente a largo plazo.
  • Aprendizaje y desarrollo de habilidades: El proceso de instalación y configuración proporciona una experiencia invaluable en el trabajo con tecnologías de servidor.

Estas ventajas hacen que el autoalojamiento en un VPS sea una opción atractiva para desplegar Lemmy, permitiéndole crear una comunidad en línea única e independiente.

Qué configuración de VPS se necesita para esta tarea

Diagrama: Qué configuración de VPS se necesita para esta tarea
Diagrama: Qué configuración de VPS se necesita para esta tarea

La elección de un VPS adecuado es crucial para el funcionamiento estable y eficiente de su instancia de Lemmy. Los requisitos de recursos pueden variar según el número esperado de usuarios, la actividad y el volumen de datos almacenados. A continuación se presentan las configuraciones mínimas y recomendadas para el año 2026.

Requisitos mínimos para una instancia pequeña (hasta 50 usuarios activos)

  • CPU: 2 núcleos (de procesadores modernos, por ejemplo, Intel Xeon E3/E5 o AMD EPYC).
  • RAM: 4 GB DDR4. Lemmy y PostgreSQL son bastante intensivos en recursos, y 4 GB es el mínimo absoluto para un funcionamiento estable.
  • Disco: 50 GB SSD. Para el sistema operativo, imágenes de Docker, la base de datos y un pequeño volumen de cargas de usuario. Un SSD es obligatorio para un buen rendimiento de la base de datos.
  • Red: Puerto de 1 Gbit/s con tráfico ilimitado o un margen suficiente (mínimo 1 TB/mes).

Plan de VPS recomendado para una instancia mediana (hasta 500 usuarios activos)

Para un funcionamiento más cómodo y la posibilidad de crecimiento, se recomienda la siguiente configuración:

  • CPU: 4 núcleos (de procesadores modernos).
  • RAM: 8 GB DDR4. Esto proporcionará un búfer suficiente para PostgreSQL y Lemmy, así como para el almacenamiento en caché.
  • Disco: 100-200 GB NVMe SSD. NVMe acelerará significativamente las operaciones de disco, lo cual es crítico para el rendimiento de la base de datos y la carga de archivos multimedia.
  • Red: Puerto de 1 Gbit/s con tráfico ilimitado.

Al elegir un proveedor, puede considerar un VPS con las características indicadas para asegurar una base sólida para su servidor Lemmy.

Cuándo se necesita un servidor dedicado (Dedicated Server)

Si planea ejecutar una instancia grande de Lemmy con miles de usuarios activos, un gran volumen de archivos multimedia, o si desea alojar varios servicios que consumen muchos recursos en una sola máquina, debería considerar un servidor dedicado. Los servidores dedicados ofrecen recursos garantizados, un mayor rendimiento de E/S de disco y, a menudo, configuraciones de red más flexibles. Esto también es relevante para aquellos que requieren hardware específico (por ejemplo, GPU para ciertas tareas) o el máximo nivel de aislamiento.

Para instancias de Lemmy muy grandes que pueden atender a miles de usuarios, se puede considerar un servidor dedicado adecuado. En un servidor así, podrá asignar más núcleos de CPU, aumentar significativamente la cantidad de RAM (por ejemplo, 32 GB o más), usar arreglos RAID para los discos para mejorar la fiabilidad y la velocidad, y obtener control total sobre la tarjeta de red.

Ubicación: qué factores influye

La elección de la ubicación geográfica de su VPS también es importante:

  • Latencia: Ubique el servidor lo más cerca posible de su audiencia principal para minimizar los retrasos al acceder al sitio.
  • Legislación: Tenga en cuenta las leyes de privacidad de datos (GDPR, CCPA, etc.) y la libertad de expresión en el país donde se encuentra el servidor. Esto puede ser crítico para la moderación de contenido y el procesamiento de datos de usuario.
  • Costo: Los precios de los VPS pueden variar significativamente en diferentes regiones.
  • Conectividad de red: Algunas ubicaciones tienen mejor conectividad con ciertas regiones del mundo.

Para la mayoría de los proyectos, la elección óptima será un VPS en un centro de datos ubicado en Europa Occidental o América del Norte, lo que proporciona un buen equilibrio entre legislación, conectividad y costo.

Preparación del servidor

Preparación del servidor

Diagrama: Preparación del servidor
Diagrama: Preparación del servidor

Antes de instalar Lemmy, es necesario realizar una configuración básica del sistema operativo. Utilizaremos Ubuntu Server 24.04 LTS, ya que es una plataforma estable, ampliamente utilizada y con soporte a largo plazo.

1. Conexión SSH y actualización inicial

Conéctese a su VPS como usuario root, utilizando la dirección IP proporcionada por su proveedor. Si usa Windows, puede utilizar PuTTY o el cliente SSH integrado de PowerShell/CMD. Para Linux/macOS:


ssh root@SU_DIRECCIÓN_IP

Después de iniciar sesión correctamente, actualice la lista de paquetes e instale todas las actualizaciones disponibles. Esto garantizará que el sistema esté actualizado y seguro.


sudo apt update             # Actualizar la lista de paquetes
sudo apt upgrade -y         # Instalar actualizaciones disponibles sin confirmación
sudo apt autoremove -y      # Eliminar dependencias innecesarias

2. Creación de un nuevo usuario con permisos sudo

Trabajar como usuario root no es seguro. Crearemos un nuevo usuario y le otorgaremos permisos sudo.


adduser lemmyadmin          # Crear un nuevo usuario llamado lemmyadmin
usermod -aG sudo lemmyadmin # Añadir el usuario lemmyadmin al grupo sudo

Establezca una contraseña segura para el nuevo usuario cuando el sistema lo solicite. Luego, salga de la sesión root e inicie sesión como el nuevo usuario:


exit                        # Salir de la sesión root
ssh lemmyadmin@SU_DIRECCIÓN_IP # Iniciar sesión como el nuevo usuario

3. Configuración de claves SSH (recomendado)

Para mejorar la seguridad, se recomienda utilizar claves SSH en lugar de contraseñas. Si aún no tiene un par de claves, genérelas en su computadora local:


ssh-keygen -t rsa -b 4096 -C "[email protected]"

Luego, copie la clave pública al servidor:


ssh-copy-id lemmyadmin@SU_DIRECCIÓN_IP

Después de esto, desactive la autenticación por contraseña en el archivo /etc/ssh/sshd_config en el servidor. Ábralo para editar:


sudo nano /etc/ssh/sshd_config

Busque las líneas:


#PasswordAuthentication yes

Y cámbielas a:


PasswordAuthentication no
PermitRootLogin no

Reinicie el servicio SSH:


sudo systemctl restart sshd

Intente conectarse de nuevo por SSH usando la clave. Si todo funciona, habrá mejorado la seguridad con éxito.

4. Configuración del firewall (UFW)

El firewall UFW (Uncomplicated Firewall) está instalado por defecto en Ubuntu. Lo configuraremos para permitir solo los puertos necesarios:


sudo ufw allow OpenSSH        # Permitir SSH (puerto 22)
sudo ufw allow http           # Permitir HTTP (puerto 80)
sudo ufw allow https          # Permitir HTTPS (puerto 443)
sudo ufw enable               # Habilitar UFW
sudo ufw status verbose       # Verificar el estado de UFW

Cuando se le solicite confirmación, escriba y. UFW ahora está activo y protege su servidor.

5. Instalación de Fail2ban

Fail2ban protege el servidor contra ataques de fuerza bruta, bloqueando las direcciones IP desde las cuales se producen múltiples intentos fallidos de inicio de sesión. Lo instalaremos:


sudo apt install fail2ban -y  # Instalar Fail2ban
sudo systemctl enable fail2ban # Habilitar el inicio automático de Fail2ban
sudo systemctl start fail2ban  # Iniciar Fail2ban

Fail2ban está configurado por defecto para proteger SSH. Puede crear un archivo /etc/fail2ban/jail.local para personalizar las reglas, pero para la mayoría de los usuarios, la configuración predeterminada es suficiente.

6. Configuración de la zona horaria y sincronización de la hora

Asegúrese de que la zona horaria del servidor esté configurada correctamente. Esto es importante para el registro y el funcionamiento adecuado de las aplicaciones.


sudo timedatectl set-timezone Europe/Moscow # Reemplace con su zona horaria
timedatectl status                          # Verificar el estado

Ubuntu 24.04 LTS utiliza systemd-timesyncd para la sincronización de la hora a través de NTP, lo cual suele ser suficiente. Asegúrese de que el servicio esté activo:


timedatectl show-timesync --value # Mostrar el estado de sincronización

Si se requiere una sincronización más avanzada, puede instalar chrony:


sudo apt install chrony -y
sudo systemctl enable chrony
sudo systemctl start chrony
chronyc sources -v

Su servidor ahora está configurado, protegido y listo para la instalación del software principal de Lemmy.

Instalación de software — paso a paso

Diagrama: Instalación de software — paso a paso
Diagrama: Instalación de software — paso a paso

Para desplegar Lemmy, utilizaremos Docker y Docker Compose. Este enfoque simplifica significativamente la gestión de dependencias, el aislamiento de componentes y la actualización del sistema. Caddy se utilizará como servidor web y proxy inverso con HTTPS automático.

1. Instalación de Docker y Docker Compose

Primero, instalaremos Docker Engine. Utilizaremos el repositorio oficial de Docker para obtener las versiones más recientes (para 2026, probablemente será Docker 26.x+).


# Actualizar paquetes e instalar dependencias necesarias para el repositorio de Docker
sudo apt update
sudo apt install -y ca-certificates curl gnupg

# Añadir la clave GPG oficial de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Añadir el repositorio de Docker a las fuentes de APT
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Actualizar la lista de paquetes con el nuevo repositorio
sudo apt update

# Instalar Docker Engine, Docker CLI y containerd
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Añadir su usuario al grupo docker para trabajar sin sudo
sudo usermod -aG docker lemmyadmin

Después de añadir el usuario al grupo docker, deberá cerrar y volver a iniciar la sesión SSH, o ejecutar newgrp docker para que los cambios surtan efecto. Verifiquemos la instalación de Docker:


docker run hello-world # Ejecutar un contenedor de prueba de Docker

Si ve el mensaje "Hello from Docker!", significa que Docker está instalado correctamente. El plugin Docker Compose ya está instalado junto con Docker Engine.

2. Instalación de Caddy (proxy inverso y HTTPS)

Caddy es un servidor web potente y fácil de usar con soporte HTTPS automático a través de Let's Encrypt. Lo instalaremos desde el repositorio oficial de Caddy.


# Instalar los paquetes necesarios para el repositorio de Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https

# Añadir la clave GPG de Caddy
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg

# Añadir el repositorio de Caddy
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

# Actualizar la lista de paquetes e instalar Caddy
sudo apt update
sudo apt install -y caddy

# Verificar el estado de Caddy
sudo systemctl status caddy

Caddy debería estar instalado y en ejecución. Lo configuraremos más tarde.

3. Clonación del repositorio Lemmy Docker Compose

Lemmy proporciona archivos oficiales de Docker Compose para un despliegue conveniente. Los clonaremos y los configuraremos a nuestra medida.


# Instalar Git, si aún no está instalado
sudo apt install -y git

# Ir al directorio de inicio del usuario
cd ~

# Clonar el repositorio oficial de Lemmy Docker Compose
git clone https://github.com/LemmyNet/lemmy-docker-compose.git
cd lemmy-docker-compose

# Cambiar a una versión estable (por ejemplo, v0.19.x o v0.20.x, actual para 2026)
# Verifique los lanzamientos actuales en GitHub LemmyNet/lemmy-docker-compose
git checkout tags/0.19.3 -b 0.19.3-branch # Ejemplo para la versión 0.19.3. Reemplace con la actual.

Importante: Siempre verifique las versiones estables actuales de Lemmy en el repositorio oficial de GitHub y use la etiqueta correspondiente para git checkout. Para 2026, es probable que estén disponibles las versiones 0.19.x o incluso 0.20.x.

4. Configuración del archivo .env y docker-compose.yml

En el directorio lemmy-docker-compose se encuentran los archivos de configuración. Copie los ejemplos para una configuración posterior:


cp lemmy.env.example .env       # Copiar el archivo de variables de entorno
cp docker-compose.yml.example docker-compose.yml # Copiar el archivo principal de Docker Compose

Ahora edite el archivo .env. Este es un archivo clave que contiene secretos y configuraciones principales:


nano .env

En este archivo, deberá cambiar los siguientes parámetros (los ejemplos son válidos para 2026):

  • LEMMY_HOSTNAME=your.lemmy.domain.com: Especifique su nombre de dominio a través del cual Lemmy será accesible.
  • LEMMY_DATABASE_NAME=lemmy: Nombre de la base de datos (puede dejarlo por defecto).
  • LEMMY_DATABASE_USER=lemmy: Usuario de la base de datos (puede dejarlo por defecto).
  • LEMMY_DATABASE_PASSWORD=SU_CONTRASEÑA_MUY_COMPLEJA: Asegúrese de cambiarla por una contraseña compleja y única.
  • LEMMY_DATABASE_HOST=lemmy_db: Host de la base de datos (por defecto, no lo cambie).
  • LEMMY_DATABASE_PORT=5432: Puerto de la base de datos (por defecto, no lo cambie).
  • LEMMY_APU_KEY=SU_CLAVE_SECRETA_APU: Genere una cadena aleatoria de 32+ caracteres.
  • PICTRS_API_KEY=SU_CLAVE_SECRETA_PICTRS: Genere una cadena aleatoria de 32+ caracteres. Pict-rs es un servicio para el procesamiento de imágenes.

Guarde los cambios (Ctrl+O, Enter, Ctrl+X).

En el archivo docker-compose.yml, es posible que deba realizar cambios mínimos si desea utilizar Caddy en lugar de Nginx (que viene por defecto). En el docker-compose.yml.example estándar, Lemmy a menudo incluye Nginx. Eliminaremos o comentaremos la sección de Nginx y nos aseguraremos de que el servicio Lemmy esté disponible en el puerto 8536 (o en otro especificado en la configuración de Lemmy) para Caddy. Si ha clonado el repositorio actual, es posible que Caddy ya se ofrezca como opción o que se requiera una adaptación mínima para su uso.

Para simplificar, asumiremos que los servicios lemmy-ui y lemmy en docker-compose.yml no exponen sus puertos al exterior (es decir, no hay secciones ports: que mapeen 8536 o 1234 al sistema host), sino que solo están disponibles dentro de la red Docker. Caddy se comunicará con ellos por sus nombres de servicio.

5. Inicio de Lemmy

Ahora que todo está configurado, puede iniciar Lemmy:


docker compose build --no-cache # Construir las imágenes de Lemmy (puede llevar tiempo)
docker compose up -d            # Iniciar todos los servicios en segundo plano

Después de iniciar, verifique el estado de los contenedores:


docker compose ps

Debería ver que todos los servicios (lemmy_db, lemmy, lemmy_ui, pict-rs) están en estado "running".

En esta etapa, Lemmy está funcionando dentro de la red Docker, pero aún no es accesible desde el exterior. Para ello, necesitamos la configuración de Caddy, que se describirá en la siguiente sección.

Configuración

Diagrama: Configuración
Diagrama: Configuración

Ahora que los componentes principales de Lemmy están en funcionamiento en Docker, es necesario configurar el acceso externo a través del servidor web Caddy, que actuará como proxy inverso y gestionará automáticamente los certificados HTTPS.

1. Configuración de registros DNS

Antes de configurar Caddy, asegúrese de que su dominio (por ejemplo, your.lemmy.domain.com) apunte a la dirección IP de su VPS. Agregue o actualice un registro A en su registrador de nombres de dominio:

  • Tipo: A
  • Nombre/Host: your.lemmy.domain.com (o @ si es un dominio raíz)
  • Valor/Dirección IP: SU_DIRECCIÓN_IP_VPS

Espere unos minutos para que los cambios de DNS se propaguen por la red (esto puede tardar hasta varias horas).

2. Configuración de Caddyfile

Caddy utiliza un archivo de configuración llamado Caddyfile. Ábralo para editar:


sudo nano /etc/caddy/Caddyfile

Elimine todo el contenido predeterminado e inserte la siguiente configuración, reemplazando your.lemmy.domain.com con su dominio real:


your.lemmy.domain.com {
    # Habilitar compresión GZIP automática
    encode gzip

    # Proxy inverso para archivos estáticos de la UI
    handle /pictrs/ {
        reverse_proxy pict-rs:8080
    }
    handle /api/ {
        reverse_proxy lemmy:8536
    }
    handle /feeds/ {
        reverse_proxy lemmy:8536
    }
    handle /nodeinfo/ {
        reverse_proxy lemmy:8536
    }
    handle /ap/ {
        reverse_proxy lemmy:8536
    }
    handle /actor/ {
        reverse_proxy lemmy:8536
    }
    handle /inbox/ {
        reverse_proxy lemmy:8536
    }
    handle /outbox/ {
        reverse_proxy lemmy:8536
    }
    handle /well-known/ {
        reverse_proxy lemmy:8536
    }
    handle /person/ {
        reverse_proxy lemmy:8536
    }

    # Proxy inverso para la UI
    reverse_proxy lemmy-ui:1234 {
        # Encabezados para el correcto funcionamiento de WebSocket y otras funciones
        header_up Host {host}
        header_up X-Real-IP {remote_ip}
        header_up X-Forwarded-For {remote_ip}
        header_up X-Forwarded-Proto {scheme}
    }

    # Habilitar registro
    log {
        output file /var/log/caddy/lemmy_access.log
        format console
    }
}

Explicaciones del Caddyfile:

  • your.lemmy.domain.com: Caddy solicitará y renovará automáticamente los certificados HTTPS para este dominio.
  • encode gzip: Habilita la compresión GZIP para acelerar la carga.
  • handle /pictrs/: Redirige las solicitudes al servicio Pict-rs (procesamiento de imágenes).
  • handle /api/ y otros: Redirigen las solicitudes a la API de Lemmy.
  • reverse_proxy lemmy-ui:1234: Proxy principal para la interfaz de usuario de Lemmy.
  • lemmy, lemmy-ui, pict-rs: Estos son los nombres de los servicios en su docker-compose.yml. Caddy, ejecutándose en la máquina host, no puede ver directamente los contenedores por sus nombres si no están en la misma red Docker o si Caddy no se ejecuta como un contenedor en la misma red. Para que Caddy funcione correctamente con los contenedores Docker, Caddy debe ejecutarse como un contenedor Docker en la misma red, o debe especificar explícitamente las direcciones IP de los contenedores o usar un proxy Docker.

Corrección para Caddy en el host: Si Caddy se ejecuta en el host y Lemmy en Docker, Caddy no podrá resolver los nombres lemmy, lemmy-ui, pict-rs. Hay dos soluciones principales:

  1. Ejecutar Caddy como un contenedor Docker en la misma red que Lemmy. Esto es más complejo, pero preferible.
  2. Modificar docker-compose.yml para que Lemmy y Lemmy-UI publiquen sus puertos en el host (por ejemplo, lemmy:8536 en 127.0.0.1:8536), y entonces Caddy hará proxy a localhost:8536. Esto es más sencillo para este tutorial.

Vamos a modificar docker-compose.yml para que Lemmy y Pict-rs estén disponibles en localhost. Abra docker-compose.yml:


nano docker-compose.yml

Encuentre las secciones lemmy, lemmy-ui y pict-rs. Agregue o modifique la sección ports para que se vean así:


# ...
services:
  lemmy:
    image: dessalines/lemmy:0.19.3 # Reemplace con la versión actual
    # ...
    ports:
      - "127.0.0.1:8536:8536" # API/Backend de Lemmy

  lemmy-ui:
    image: dessalines/lemmy-ui:0.19.3 # Reemplace con la versión actual
    # ...
    ports:
      - "127.0.0.1:1234:1234" # UI de Lemmy

  pict-rs:
    image: kaniini/pict-rs:0.4.0 # Reemplace con la versión actual
    # ...
    ports:
      - "127.0.0.1:8080:8080" # Pict-rs (proxy de imágenes)
# ...

Guarde docker-compose.yml, luego reinicie Lemmy para aplicar los cambios de puertos:


docker compose down
docker compose up -d

Ahora el Caddyfile debe ser ajustado para usar localhost:


your.lemmy.domain.com {
    encode gzip

    handle /pictrs/ {
        reverse_proxy 127.0.0.1:8080 # Proxy inverso para Pict-rs
    }
    handle /api/ {
        reverse_proxy 127.0.0.1:8536 # Proxy inverso para la API de Lemmy
    }
    handle /feeds/ {
        reverse_proxy 127.0.0.1:8536
    }
    handle /nodeinfo/ {
        reverse_proxy 127.0.0.1:8536
    }
    handle /ap/ {
        reverse_proxy 127.0.0.1:8536
    }
    handle /actor/ {
        reverse_proxy 127.0.0.1:8536
    }
    handle /inbox/ {
        reverse_proxy 127.0.0.1:8536
    }
    handle /outbox/ {
        reverse_proxy 127.0.0.1:8536
    }
    handle /well-known/ {
        reverse_proxy 127.0.0.1:8536
    }
    handle /person/ {
        reverse_proxy 127.0.0.1:8536
    }

    reverse_proxy 127.0.0.1:1234 { # Proxy inverso para la UI de Lemmy
        header_up Host {host}
        header_up X-Real-IP {remote_ip}
        header_up X-Forwarded-For {remote_ip}
        header_up X-Forwarded-Proto {scheme}
    }

    log {
        output file /var/log/caddy/lemmy_access.log
        format console
    }
}

Guarde Caddyfile.

3. Verificación y reinicio de Caddy

Verifique la sintaxis del Caddyfile y reinicie Caddy para aplicar la nueva configuración:


sudo caddy validate --config /etc/caddy/Caddyfile # Verificación de sintaxis
sudo systemctl reload caddy                       # Reiniciar Caddy
sudo systemctl status caddy                       # Verificar estado

Si todo está en orden, Caddy debería iniciarse correctamente y comenzar a escuchar en los puertos 80 y 443. Verifique los registros de Caddy en busca de errores, especialmente los relacionados con la obtención de certificados HTTPS:


sudo journalctl -u caddy --no-pager

Debería ver mensajes indicando que Caddy ha obtenido correctamente los certificados de Let's Encrypt.

4. Verificación de funcionalidad

Abra su dominio (https://your.lemmy.domain.com) en un navegador web. Debería ver la interfaz de Lemmy. Si no, verifique lo siguiente:

  • DNS: Asegúrese de que su dominio apunte correctamente a la IP de su VPS.
  • Firewall (UFW): Asegúrese de que los puertos 80 y 443 estén abiertos.
  • Registros de Caddy: Verifique sudo journalctl -u caddy --no-pager en busca de errores.
  • Registros de Docker: Verifique los registros de los contenedores de Lemmy: docker compose logs lemmy, docker compose logs lemmy-ui, docker compose logs pict-rs.

Después de que la página de Lemmy se cargue correctamente, registre el primer usuario. Este usuario se convertirá automáticamente en el administrador de la instancia.

5. Configuración adicional de Lemmy (lemmy.hjson)

El archivo lemmy.hjson (o lemmy.toml dependiendo de la versión) contiene la configuración de Lemmy. Se encuentra en el volumen del contenedor Docker de Lemmy. Para editarlo, deberá conectarse al contenedor o montarlo como un volumen. La forma más sencilla es agregar volumes en docker-compose.yml para el archivo de configuración.

En su docker-compose.yml, en la sección lemmy, agregue (o modifique) el volumen:


# ...
services:
  lemmy:
    image: dessalines/lemmy:0.19.3
    # ...
    volumes:
      - ./lemmy.hjson:/app/lemmy.hjson # Ruta al archivo de configuración
    # ...

Luego, cree el archivo lemmy.hjson en el mismo directorio que docker-compose.yml:


touch lemmy.hjson
nano lemmy.hjson

Ejemplo del contenido de lemmy.hjson (la versión actual puede tener otros parámetros, consulte la documentación oficial):


{
  "hostname": "your.lemmy.domain.com",
  "database": {
    "url": "postgres://lemmy:ВАШ_ОЧЕНЬ_СЛОЖНЫЙ_ПАРОЛЬ@lemmy_db:5432/lemmy"
  },
  "federation": {
    "enabled": true,
    "allowed_instances": [],
    "blocked_instances": []
  },
  "captcha": {
    "enabled": false
  },
  "log_level": "info",
  "port": 8536
}

Importante: Asegúrese de que hostname coincida con su dominio. La contraseña en database.url debe coincidir con LEMMY_DATABASE_PASSWORD de .env. Después de modificar lemmy.hjson, reinicie Lemmy:


docker compose restart lemmy

Ahora su instancia de Lemmy está completamente configurada y lista para usar.

Copias de seguridad y mantenimiento

Diagrama: Copias de seguridad y mantenimiento
Diagrama: Copias de seguridad y mantenimiento

Las copias de seguridad regulares y el mantenimiento oportuno son clave para el funcionamiento estable y seguro de su instancia de Lemmy. La pérdida de datos puede ser catastrófica, por lo que el enfoque de las copias de seguridad debe ser fiable.

1. Qué respaldar

Para una recuperación completa de Lemmy, necesitará tres componentes principales:

  1. Base de datos PostgreSQL: Contiene toda la información sobre usuarios, publicaciones, comentarios, comunidades, federación y configuraciones. Este es el componente más importante.
  2. Archivos de configuración de Lemmy: El archivo .env (con secretos) y lemmy.hjson.
  3. Datos de usuario (archivos multimedia): Las imágenes y otros archivos subidos por los usuarios se almacenan en el volumen del contenedor Docker pict-rs.

2. Script sencillo de copia de seguridad automática

Crearemos un script sencillo que realizará la copia de seguridad de estos componentes. Usaremos pg_dump para la base de datos y tar para los archivos.


# Переход в домашнюю директорию пользователя
cd ~
mkdir -p lemmy_backups # Создание директории для бэкапов

# Создание скрипта бэкапа
nano ~/backup_lemmy.sh

Pegue el siguiente contenido en el archivo backup_lemmy.sh:


#!/bin/bash

# Настройки
BACKUP_DIR="/home/lemmyadmin/lemmy_backups" # Директория для хранения бэкапов
TIMESTAMP=$(date +%Y%m%d%H%M%S)
DOCKER_COMPOSE_DIR="/home/lemmyadmin/lemmy-docker-compose" # Путь к вашей директории lemmy-docker-compose
DB_CONTAINER="lemmy_db" # Имя контейнера базы данных
DB_USER="lemmy"         # Пользователь базы данных из .env
DB_NAME="lemmy"         # Имя базы данных из .env
DB_PASSWORD="ВАШ_ОЧЕНЬ_СЛОЖНЫЙ_ПАРОЛЬ" # Пароль базы данных из .env
PICTRS_VOLUME="lemmy-docker-compose_pict-rs_data" # Имя тома pict-rs (проверьте docker volume ls)

# Очистка старых бэкапов (например, старше 7 дней)
find "$BACKUP_DIR" -type f -name ".tar.gz" -mtime +7 -delete
find "$BACKUP_DIR" -type f -name ".sql" -mtime +7 -delete

echo "--- Начинаем процесс резервного копирования Lemmy ($TIMESTAMP) ---"

# 1. Бэкап базы данных PostgreSQL
echo "Создание бэкапа базы данных..."
export PGPASSWORD=$DB_PASSWORD
docker exec -t $DB_CONTAINER pg_dump -U $DB_USER -d $DB_NAME > "$BACKUP_DIR/lemmy_db_backup_$TIMESTAMP.sql"
if [ $? -eq 0 ]; then
    echo "Бэкап базы данных успешно создан: $BACKUP_DIR/lemmy_db_backup_$TIMESTAMP.sql"
else
    echo "Ошибка при создании бэкапа базы данных!"
fi
unset PGPASSWORD

# 2. Бэкап файлов конфигурации (.env и lemmy.hjson)
echo "Копирование файлов конфигурации..."
cp "$DOCKER_COMPOSE_DIR/.env" "$BACKUP_DIR/lemmy_env_backup_$TIMESTAMP.env"
cp "$DOCKER_COMPOSE_DIR/lemmy.hjson" "$BACKUP_DIR/lemmy_hjson_backup_$TIMESTAMP.hjson"
cp "$DOCKER_COMPOSE_DIR/docker-compose.yml" "$BACKUP_DIR/lemmy_docker-compose_$TIMESTAMP.yml"
echo "Файлы конфигурации скопированы."

# 3. Бэкап пользовательских данных (pict-rs volume)
echo "Создание архива пользовательских данных (pict-rs)..."
# Останавливаем pict-rs для консистентного бэкапа, если это возможно, или используем rsync
# Для простоты, мы создадим tar архив тома.
# Получаем путь к тому pict-rs на хост-системе
PICTRS_VOLUME_PATH=$(docker volume inspect $PICTRS_VOLUME --format '{{ .Mountpoint }}')
if [ -d "$PICTRS_VOLUME_PATH" ]; then
    tar -czf "$BACKUP_DIR/lemmy_pict-rs_data_$TIMESTAMP.tar.gz" -C "$PICTRS_VOLUME_PATH" .
    if [ $? -eq 0 ]; then
        echo "Бэкап pict-rs данных успешно создан: $BACKUP_DIR/lemmy_pict-rs_data_$TIMESTAMP.tar.gz"
    else
        echo "Ошибка при создании бэкапа pict-rs данных!"
    fi
else
    echo "Путь к тому pict-rs не найден или не существует."
fi

echo "--- Процесс резервного копирования завершен ---"

Importante: Reemplace ВАШ_ОЧЕНЬ_СЛОЖНЫЙ_ПАРОЛЬ con la contraseña real de su archivo .env. Además, asegúrese de que el nombre del volumen PICTRS_VOLUME coincida con el nombre que Docker asignó a su volumen pict-rs (normalmente es -docker-compose_pict-rs_data). Puede verificar esto con docker volume ls.

Haga el script ejecutable:


chmod +x ~/backup_lemmy.sh

3. Dónde almacenar las copias de seguridad

Almacenar las copias de seguridad en el mismo servidor que los datos operativos es altamente desaconsejable. En caso de fallo de hardware o compromiso del servidor, perderá tanto los datos como las copias de seguridad. Se recomienda utilizar:

  • Almacenamiento externo compatible con S3: Amazon S3, DigitalOcean Spaces, Backblaze B2, MinIO. Esta es la opción más fiable y escalable. Utilice utilidades como rclone, restic o borgbackup para cifrar y subir las copias de seguridad.
  • VPS separado: Puede configurar un segundo VPS, menos potente, para recibir copias de seguridad a través de SFTP/RSYNC.
  • Ordenador local: Para instancias muy pequeñas, puede descargar periódicamente las copias de seguridad a su ordenador.

Por ejemplo, si desea subir copias de seguridad a un almacenamiento compatible con S3 usando rclone, necesita instalar rclone, configurarlo (rclone config) y luego añadir el comando a su script backup_lemmy.sh:


# ... (после создания всех бэкапов)
echo "Загрузка бэкапов на удаленное хранилище S3..."
rclone sync "$BACKUP_DIR" "remote_s3_name:lemmy-backups" # Замените remote_s3_name на ваше имя удаленного хранилища
if [ $? -eq 0 ]; then
    echo "Бэкапы успешно загружены на S3."
else
    echo "Ошибка при загрузке бэкапов на S3!"
fi

4. Programación de copias de seguridad con Cron

Configuraremos Cron para ejecutar el script de copia de seguridad diariamente. Abra la tabla de Cron para su usuario:


crontab -e

Añada la siguiente línea al final del archivo para que el script se ejecute cada día a las 3:00 de la madrugada:


0 3   * /home/lemmyadmin/backup_lemmy.sh >> /home/lemmyadmin/lemmy_backup.log 2>&1

Esto ejecutará el script diariamente y registrará la salida en el archivo lemmy_backup.log para su seguimiento.

5. Actualizaciones: Continuas vs. Ventana de mantenimiento

Las actualizaciones de Lemmy y sus componentes (Docker, Caddy) son importantes para la seguridad y para obtener nuevas funcionalidades.

  • Actualización del SO y paquetes base: Ejecute regularmente sudo apt update && sudo apt upgrade -y (por ejemplo, una vez a la semana).
  • Actualización de Docker y Caddy: Realice las actualizaciones a medida que salgan nuevas versiones estables, utilizando los mismos comandos que en la instalación.
  • Actualización de Lemmy: Esto requiere detener los contenedores, obtener las nuevas imágenes y ejecutarlas.
    
    cd ~/lemmy-docker-compose
    git pull origin main # Обновление репозитория lemmy-docker-compose
    # Если вы использовали ветку тега, вам, возможно, придется переключиться на новый тег
    # git fetch --tags
    # git checkout tags/НОВАЯ_ВЕРСИЯ -b НОВАЯ_ВЕРСИЯ-branch
    
    docker compose down # Остановка всех контейнеров Lemmy
    docker compose pull # Загрузка новых образов
    docker compose up -d # Запуск новых контейнеров
    docker image prune -f # Удаление старых неиспользуемых образов
                

    Esto causará una interrupción breve del servicio (unos minutos), por lo que es mejor realizarlo durante la llamada "ventana de mantenimiento", un momento en el que la actividad de los usuarios es mínima.

Siempre revise los lanzamientos oficiales de Lemmy y lemmy-docker-compose en GitHub antes de actualizar, para familiarizarse con los cambios y posibles instrucciones de migración.

Solución de problemas + Preguntas frecuentes

Esta sección recopila respuestas a preguntas frecuentes y soluciones a problemas comunes que pueden surgir durante el despliegue y la operación de Lemmy.

¿Qué configuración mínima de VPS es adecuada para Lemmy?

Para una instancia pequeña de Lemmy (hasta 50 usuarios activos), un VPS con 2 núcleos de CPU, 4 GB de RAM y un disco SSD de 50 GB es el mínimo adecuado. Es importante que el disco sea SSD, ya que el rendimiento de la base de datos depende en gran medida de la velocidad de E/S. El canal de red debe ser de al menos 1 Gbit/s con un volumen de tráfico suficiente (mínimo 1 TB/mes). Esta configuración permitirá ejecutar Lemmy, PostgreSQL y Pict-rs con un rendimiento aceptable, pero para el crecimiento y un trabajo más cómodo, se recomienddan 4 núcleos de CPU, 8 GB de RAM y 100-200 GB de NVMe SSD.

¿Qué elegir: VPS o dedicado para esta tarea?

La elección entre un VPS y un servidor dedicado depende de la escala de su proyecto. Para la mayoría de las instancias de Lemmy, diseñadas para cientos o incluso miles bajos de usuarios, un VPS es suficiente y más económico. Un VPS proporciona un buen aislamiento de recursos y flexibilidad. Un servidor dedicado se vuelve necesario cuando se requiere el máximo rendimiento, recursos garantizados, un volumen muy grande de almacenamiento de datos (terabytes), o si planea alojar muchos otros servicios que consumen muchos recursos. Los servidores dedicados también brindan control total sobre el hardware, lo que puede ser importante para requisitos específicos o cargas muy altas.

Lemmy no se inicia después de docker compose up -d. ¿Qué hacer?

Primero, verifique los registros de cada contenedor. Vaya al directorio lemmy-docker-compose y ejecute:


docker compose ps             # Проверить статус контейнеров
docker compose logs lemmy     # Проверить логи основного сервиса Lemmy
docker compose logs lemmy_ui  # Проверить логи пользовательского интерфейса
docker compose logs lemmy_db  # Проверить логи базы данных PostgreSQL
docker compose logs pict-rs   # Проверить логи сервиса изображений

Busque errores, como problemas de conexión a la base de datos (contraseña incorrecta en .env), conflictos de puertos, o la ausencia de archivos necesarios. Asegúrese de que todas las variables en .env sean correctas, especialmente las contraseñas y el nombre de dominio.

HTTPS no funciona, el navegador muestra el error "conexión no segura".

Esto suele estar relacionado con problemas en la configuración de Caddy o DNS. Verifique lo siguiente:

  • Registros DNS: Asegúrese de que su registro A para el dominio de Lemmy (por ejemplo, your.lemmy.domain.com) apunte a la dirección IP de su VPS. Use dig your.lemmy.domain.com o herramientas en línea.
  • Firewall (UFW): Asegúrese de que los puertos 80 (HTTP) y 443 (HTTPS) estén abiertos. sudo ufw status verbose.
  • Caddyfile: Verifique la sintaxis de /etc/caddy/Caddyfile en busca de errores tipográficos. Asegúrese de que el dominio esté especificado correctamente.
  • Registros de Caddy: Revise los registros de Caddy en busca de errores al obtener certificados de Let's Encrypt: sudo journalctl -u caddy --no-pager. Si hay errores como "rate limit exceeded" o "DNS problem", espere e intente de nuevo.
  • Conflictos de puertos: Asegúrese de que ningún otro servicio esté utilizando los puertos 80 o 443.

Lemmy funciona muy lento o muestra errores 50x.

El funcionamiento lento o los errores del servidor suelen indicar una falta de recursos o problemas con la base de datos. Verifique:

  • Uso de recursos del VPS: Use htop para monitorear la CPU y la RAM. Si la RAM está llena o la CPU está constantemente al 100%, es posible que su VPS carezca de recursos.
  • Registros de contenedores Docker: Revise los registros de lemmy y lemmy_db en busca de errores relacionados con el rendimiento o la conexión.
  • Estadísticas de Docker: docker stats mostrará el uso de CPU, RAM e I/O para cada contenedor.
  • Base de datos: Asegúrese de que PostgreSQL funcione de manera estable y no esté sobrecargado. En instancias muy activas, puede ser necesaria la optimización de PostgreSQL.

¿Cómo actualizar Lemmy a una nueva versión?

La actualización de Lemmy generalmente se reduce a los siguientes pasos:

  1. Vaya al directorio lemmy-docker-compose.
  2. Detenga los contenedores actuales: docker compose down.
  3. Actualice el repositorio lemmy-docker-compose (git pull o git checkout a la nueva etiqueta de versión).
  4. Descargue las nuevas imágenes de Docker: docker compose pull.
  5. Inicie los contenedores con las nuevas imágenes: docker compose up -d.
  6. (Opcional) Elimine las imágenes antiguas no utilizadas: docker image prune -f.

Siempre lea las notas de la versión para la nueva versión de Lemmy, ya que a veces pueden ser necesarios pasos adicionales de migración de la base de datos o cambios de configuración.

¿Cómo restaurar datos desde una copia de seguridad?

La restauración de datos implica varios pasos:

  1. Detenga Lemmy: docker compose down.
  2. Restaure la base de datos: Primero, elimine la base de datos actual (si es un nuevo despliegue) o límpiela. Luego, cargue su archivo .sql de copia de seguridad en el contenedor PostgreSQL:
    
    cat "$BACKUP_DIR/lemmy_db_backup_$TIMESTAMP.sql" | docker exec -i lemmy_db psql -U lemmy -d lemmy
                
    Asegúrese de que el contenedor lemmy_db esté en ejecución para esto.
  3. Restaure los archivos de configuración: Copie .env y lemmy.hjson de la copia de seguridad a su directorio lemmy-docker-compose.
  4. Restaure los datos de usuario: Descomprima lemmy_pict-rs_data_$TIMESTAMP.tar.gz en el volumen Docker correspondiente. Es posible que deba determinar la ruta del volumen usando docker volume inspect lemmy-docker-compose_pict-rs_data.
  5. Inicie Lemmy: docker compose up -d.

Después de la restauración, verifique los registros y la funcionalidad de Lemmy.

Olvidé la contraseña de administrador de Lemmy. ¿Cómo la restablezco?

Si olvidó la contraseña de administrador, puede restablecerla ejecutando comandos dentro del contenedor PostgreSQL. Primero, encuentre el ID del usuario administrador en la tabla person, luego actualice la contraseña (estableciéndola en NULL) y restablezca el token de sesión. Después de esto, podrá iniciar sesión con ese nombre de usuario sin contraseña y establecer una nueva contraseña a través de la interfaz web.


# Подключиться к контейнеру PostgreSQL
docker exec -it lemmy_db psql -U lemmy -d lemmy

# Внутри psql:
# 1. Найти ID вашего пользователя-администратора (замените 'your_admin_username' на имя пользователя)
SELECT id, name FROM person WHERE name = 'your_admin_username';
# Запомните ID (например, 1)

# 2. Обновить пароль и очистить токен сессии для этого ID
UPDATE person SET password_hashed = NULL, matrix_user_id = NULL, email_verified = false WHERE id = 1;
UPDATE person_agg SET auth_token = NULL WHERE person_id = 1;

# 3. Выйти из psql
\q

# Перезапустить контейнер Lemmy
docker compose restart lemmy

Ahora podrá iniciar sesión en Lemmy con su nombre de usuario sin contraseña, y el sistema le pedirá que establezca una nueva contraseña.

Conclusiones y próximos pasos

Схема: Выводы и следующие шаги
Diagrama: Conclusiones y próximos pasos

¡Felicidades! Ha desplegado con éxito su propia instancia de Lemmy en un VPS, la ha configurado para funcionar con una base de datos PostgreSQL y ha asegurado el acceso a través de Caddy con HTTPS automático. Ahora tiene una red social federada completamente funcional, lista para recibir usuarios e integrarse con Fediverse. Este proceso no solo le ha proporcionado una plataforma de trabajo, sino que también ha profundizado su comprensión de la administración de servidores, Docker y los servidores web.

¿Qué hacer a continuación?

  • Moderación y gestión: Familiarícese con las herramientas de moderación de Lemmy, configure las reglas de la comunidad y decida con qué otras instancias de Lemmy o ActivityPub desea interactuar de forma federada.
  • Escalado y optimización: A medida que su instancia crezca, es posible que deba optimizar la configuración de PostgreSQL, aumentar los recursos del VPS o incluso considerar un servidor dedicado para la base de datos si la carga se vuelve demasiado alta.
  • Comunidad y promoción: Invite a amigos, comparta el enlace a su instancia para comenzar a formar una comunidad activa. Participe en Fediverse para que su instancia se convierta en parte de una red más amplia.

¿Te fue útil esta guía?

Despliegue de Lemmy en VPS: servidor propio de red social federada
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.