Instalación de Linkwarden en un VPS: un gestor de marcadores autoalojado con etiquetas y colecciones
TL;DR
En esta guía detallada, configuraremos paso a paso Linkwarden, un potente gestor de marcadores autoalojado, en su Virtual Private Server (VPS). Aprenderá a preparar un servidor basado en Ubuntu 24.04 LTS, instalar Docker, desplegar Linkwarden usando Docker Compose, configurar acceso seguro a través de HTTPS con Caddy e implementar una estrategia de copia de seguridad para proteger sus datos.
- Configuración de Linkwarden en un VPS para un control total sobre sus marcadores.
- Uso de Docker y Docker Compose para una fácil instalación y gestión.
- Garantía de seguridad con HTTPS (Caddy) y protección básica del servidor.
- Despliegue en Ubuntu 24.04 LTS con versiones de software actualizadas para 2026.
- Implementación de un sistema de copia de seguridad para la conservación de datos.
- Obtención de un gestor de marcadores completo con etiquetas, colecciones y búsqueda.
Qué configuramos y por qué
Instalaremos Linkwarden, una solución de código abierto y autoalojada para guardar, organizar y archivar enlaces web. En un mundo donde la información cambia constantemente y los artículos y sitios web desaparecen, Linkwarden le permite guardar no solo enlaces, sino también copias completas de páginas web, asegurando su disponibilidad permanente. Es la herramienta ideal para quienes trabajan activamente con información, realizan investigaciones, recopilan recursos útiles o simplemente desean tener un archivo confiable de sus sitios web favoritos.
Al final, obtendrá un gestor de marcadores completamente funcional y privado, accesible desde cualquier parte del mundo a través de su propio dominio. Estará equipado con una potente búsqueda, la capacidad de añadir etiquetas y crear colecciones, así como una función de archivo de páginas para que el contenido no desaparezca. Esto significa un control total sobre sus datos y la ausencia de dependencia de servicios de terceros que pueden cambiar sus políticas o dejar de existir.
Alternativas y por qué autoalojado en un VPS
Existen muchas soluciones para la gestión de marcadores. Estas incluyen servicios en la nube como Pocket, Raindrop.io, Instapaper, así como otras opciones autoalojadas, por ejemplo, Wallabag o Shaarli.
- Servicios en la nube: Son convenientes, no requieren configuración, pero usted confía sus datos a un tercero, y la funcionalidad a menudo está limitada por suscripciones de pago. Usted no controla el almacenamiento de datos ni su confidencialidad.
- Otras soluciones autoalojadas: Wallabag y Shaarli también son excelentes proyectos, pero Linkwarden se destaca por su interfaz moderna, desarrollo activo y un conjunto de funciones que a menudo están más orientadas a la "archivación" y "gestión del conocimiento" que simplemente a "guardar para leer más tarde".
La elección de una solución autoalojada en un VPS le otorga soberanía total sobre sus datos. Usted decide dónde y cómo se almacenan sus marcadores, quién tiene acceso a ellos y qué funciones utiliza. Esto es especialmente importante para desarrolladores, investigadores, equipos que necesitan una base de conocimientos privada, o cualquier persona que valore la confidencialidad y el control. Un VPS proporciona la flexibilidad y escalabilidad necesarias para este tipo de aplicaciones, permitiéndole aumentar fácilmente los recursos o añadir otros servicios al mismo servidor si es necesario.
Qué configuración de VPS se necesita para esta tarea
Linkwarden es una aplicación relativamente ligera, especialmente para uso individual o un equipo pequeño. Sin embargo, cuantas más enlaces guarde y con mayor frecuencia utilice la función de archivo de páginas (que guarda el HTML completo y los medios), más recursos se necesitarán.
Requisitos mínimos (para 1-5 usuarios, hasta 1000 enlaces):
- CPU: 1 vCPU (procesador moderno, por ejemplo, Intel Xeon E5 o AMD EPYC).
- RAM: 2 GB (para el funcionamiento estable de Docker, Linkwarden y la base de datos).
- Disco: 40-60 GB SSD (para el sistema operativo, imágenes de Docker, la base de datos de Linkwarden y páginas archivadas. El SSD acelera significativamente el trabajo).
- Red: 100 Mbit/s (suficiente para la mayoría de las tareas, si no hay una carga/descarga intensiva de datos archivados).
Configuración recomendada (para 5-20 usuarios, hasta 10000 enlaces o archivado activo):
- CPU: 2 vCPU.
- RAM: 4 GB.
- Disco: 80-120 GB SSD (o NVMe para un rendimiento máximo).
- Red: 1 Gbit/s.
Para alquilar un VPS con estas características, puede considerar un VPS con las características indicadas, adecuado para la mayoría de las tareas de despliegue de Linkwarden.
Cuándo se necesita un servidor dedicado y no un VPS
Un servidor dedicado puede ser necesario si:
- Planea usar Linkwarden para un equipo muy grande (cientos de usuarios).
- Archivará una enorme cantidad de páginas (terabytes de datos), lo que requiere volúmenes significativos de almacenamiento y alta velocidad de entrada/salida.
- El servidor albergará otros servicios que consumen muchos recursos, además de Linkwarden.
- Necesita el máximo rendimiento y aislamiento que un VPS no puede proporcionar debido a la infraestructura compartida.
- Se requieren configuraciones de hardware específicas no disponibles en un VPS (por ejemplo, arreglos RAID, tarjetas de red especializadas).
Ubicación: en qué influye
La elección de la ubicación del VPS influye en varios factores:
- Latencia: Cuanto más cerca esté el servidor de usted y sus usuarios principales, menor será la latencia y más rápida será la respuesta de la interfaz web.
- Aspectos legales: La legislación del país donde se encuentra el servidor, puede afectar la privacidad y el procesamiento de datos. Tenga esto en cuenta si sus datos son sensibles.
- Disponibilidad de la red: En algunas regiones, la infraestructura de red está más desarrollada y es más estable.
- Costo: Los precios de los VPS pueden variar según la región.
Para la mayoría de los usuarios de Linkwarden, es suficiente elegir una ubicación geográficamente cercana a la audiencia principal para garantizar una latencia mínima.
Preparación del servidor
Antes de instalar Linkwarden, es necesario realizar una configuración básica de seguridad e instalar las utilidades necesarias en su VPS. Utilizaremos Ubuntu 24.04 LTS (Noble Numbat) como sistema operativo principal, ya que es una de las plataformas más populares y mejor soportadas para servidores.
Conéctese a su VPS por SSH, utilizando los datos proporcionados por su proveedor. Normalmente, esto se ve así:
ssh root@SU_DIRECCIÓN_IP
1. Actualización del sistema
En primer lugar, actualice la lista de paquetes y los paquetes instalados a las versiones más recientes.
sudo apt update # Actualizar la lista de paquetes disponibles
sudo apt upgrade -y # Actualizar los paquetes instalados
sudo apt autoremove -y # Eliminar paquetes innecesarios
2. Creación de un nuevo usuario con permisos sudo
Trabajar con la cuenta root no es seguro. Cree un nuevo usuario y concédale permisos sudo.
sudo adduser linkwardenuser # Crear un nuevo usuario llamado linkwardenuser
sudo usermod -aG sudo linkwardenuser # Añadir el usuario al grupo sudo
Después de crear el usuario, salga de la sesión root e inicie sesión con el nuevo usuario:
exit
ssh linkwardenuser@SU_DIRECCIÓN_IP
3. Configuración de claves SSH (recomendado)
Para mejorar la seguridad, se recomienda usar claves SSH en lugar de contraseñas. Si aún no tiene una clave SSH, genérela en su máquina local:
ssh-keygen -t rsa -b 4096 # Generar una nueva clave SSH (en la máquina local)
Luego, copie la clave pública a su VPS:
ssh-copy-id linkwardenuser@SU_DIRECCIÓN_IP # Copiar la clave pública al servidor
Después de esto, puede deshabilitar la autenticación por contraseña en el archivo /etc/ssh/sshd_config, cambiando PasswordAuthentication yes a PasswordAuthentication no y reiniciando el servicio SSH. Esto aumentará significativamente la seguridad.
4. Configuración del firewall (UFW)
Habilite Uncomplicated Firewall (UFW) y permita solo los puertos necesarios: SSH (22), HTTP (80) y HTTPS (443).
sudo apt install ufw -y # Instalar UFW, si no está instalado
sudo ufw allow OpenSSH # Permitir conexiones SSH
sudo ufw allow http # Permitir HTTP (puerto 80)
sudo ufw allow https # Permitir HTTPS (puerto 443)
sudo ufw enable # Habilitar el firewall
sudo ufw status # Verificar el estado del firewall
Confirme la habilitación presionando 'y'.
5. Instalación de Fail2Ban
Fail2Ban ayuda a proteger el servidor contra ataques de fuerza bruta, bloqueando las direcciones IP desde las cuales se producen numerosos intentos fallidos de inicio de sesión.
sudo apt install fail2ban -y # Instalar Fail2Ban
sudo systemctl enable fail2ban # Habilitar el inicio automático de Fail2Ban
sudo systemctl start fail2ban # Iniciar Fail2Ban
Puede crear un archivo de configuración /etc/fail2ban/jail.local para una configuración más detallada, pero la instalación básica ya proporciona una buena protección SSH.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Asegúrese de que la sección [sshd] esté activa (enabled = true).
6. Instalación de utilidades básicas
Instale utilidades útiles que pueden ser necesarias durante el proceso de instalación y depuración.
sudo apt install curl wget git htop unzip -y # Instalar curl, wget, git, htop y unzip
Ahora su servidor está listo para la instalación de Linkwarden.
Instalación de software — paso a paso
Linkwarden se implementa mejor utilizando Docker y Docker Compose, lo que garantiza aislamiento, portabilidad y facilidad de gestión. Instalaremos Docker Engine y Docker Compose, y luego implementaremos Linkwarden.
1. Instalación de Docker Engine (válido para 2026)
Para Ubuntu 24.04 LTS, se recomienda instalar Docker desde el repositorio oficial de Docker.
# Eliminar versiones antiguas de Docker, si las hay
for pkg in docker.io docker-doc docker-compose docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; do sudo apt remove $pkg -y; done
# Instalar los paquetes necesarios para usar el repositorio HTTPS
sudo apt update
sudo apt install ca-certificates curl gnupg -y
# 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
# 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 teniendo en cuenta el nuevo repositorio
sudo apt update
# Instalar Docker Engine, Docker CLI y Containerd (las versiones serán actuales para 2026, por ejemplo, Docker 26.x)
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# Añadir el usuario actual al grupo docker para no usar sudo en los comandos docker
sudo usermod -aG docker $USER
# Aplicar cambios de grupo (es necesario salir y volver a iniciar sesión en la sesión SSH)
# Para ello, salga de la sesión SSH actual y vuelva a iniciar sesión: exit, luego ssh linkwardenuser@SU_DIRECCIÓN_IP
Después de volver a iniciar sesión en la sesión SSH, verifique la instalación de Docker:
docker run hello-world # Ejecutar un contenedor de prueba para verificar la instalación de Docker
Debería ver el mensaje "Hello from Docker!".
2. Instalación de Docker Compose (si no está instalado como plugin)
A partir de Docker Engine 20.10, Docker Compose se incluye como un plugin docker compose. Si lo instaló con docker-compose-plugin, no se requiere una instalación separada. Puede verificar su presencia:
docker compose version # Verificar la versión del plugin Docker Compose (por ejemplo, v2.24.x)
Si el comando docker compose version funciona, entonces Docker Compose está instalado. Si no, o si prefiere la sintaxis antigua docker-compose, instálelo por separado:
# Descargar la versión actual de Docker Compose (por ejemplo, 2.24.x para 2026)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Otorgar permisos de ejecución
sudo chmod +x /usr/local/bin/docker-compose
# Crear un enlace simbólico (opcional, para mayor comodidad)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# Verificar la versión
docker-compose --version # Verificar la versión de Docker Compose (por ejemplo, Docker Compose version 2.24.5)
3. Creación de un directorio para Linkwarden
Cree un directorio donde se almacenarán los archivos de configuración de Linkwarden.
mkdir ~/linkwarden # Crear el directorio linkwarden en la carpeta de inicio del usuario
cd ~/linkwarden # Ir al directorio creado
4. Descarga del archivo docker-compose.yml
Linkwarden proporciona un archivo oficial docker-compose.yml. Descárguelo.
wget https://raw.githubusercontent.com/linkwarden/linkwarden/main/docker-compose.yml # Descargar el archivo docker-compose.yml
Abra el archivo docker-compose.yml para revisarlo. Contendrá los servicios linkwarden (la aplicación en sí) y db (la base de datos PostgreSQL).
5. Creación del archivo .env
Cree un archivo .env para almacenar variables de entorno y secretos. Esta es la mejor manera de gestionar la configuración sin modificar el archivo principal docker-compose.yml.
nano .env # Crear y abrir el archivo .env para editar
Pegue el siguiente contenido, cambiando los valores por los suyos:
# Linkwarden Application Settings
# -----------------------------
# You MUST change the SECRET_KEY to a strong, random string.
# Generate one using openssl rand -base64 32 or similar.
SECRET_KEY=SU_CLAVE_SECRETA_AQUÍ # ¡Asegúrese de generar una clave única!
NEXTAUTH_URL=https://linkwarden.SU_DOMINIO.ru # URL a través de la cual Linkwarden será accesible
# Database Settings (PostgreSQL)
# -----------------------------
# You MUST change POSTGRES_PASSWORD to a strong, random password.
POSTGRES_USER=linkwardenuser
POSTGRES_PASSWORD=SU_CONTRASEÑA_DE_BASE_DE_DATOS_AQUÍ # ¡Asegúrese de generar una contraseña única!
POSTGRES_DB=linkwarden
# Docker Volumes for data persistence
# ----------------------------------
# These define where Linkwarden and PostgreSQL data will be stored on your host.
# Ensure these paths exist and Docker has permissions to write to them.
LINKWARDEN_DATA_DIR=./linkwarden_data
POSTGRES_DATA_DIR=./postgres_data
# Optional: Timezone for Linkwarden
# Find your timezone here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TZ=Europe/Moscow
# Optional: Enable email for account recovery, invitations etc.
# SMTP_HOST=smtp.your-email-provider.com
# SMTP_PORT=587
# [email protected]
# SMTP_PASSWORD=YOUR_EMAIL_PASSWORD
# SMTP_FROM=Linkwarden
Importante:
- Reemplace
SU_CLAVE_SECRETA_AQUÍpor una cadena aleatoria. Puede generarla con el comandoopenssl rand -base64 32. - Reemplace
SU_CONTRASEÑA_DE_BASE_DE_DATOS_AQUÍpor una contraseña segura y compleja. - Especifique su dominio en
NEXTAUTH_URL. - Asegúrese de que
LINKWARDEN_DATA_DIRyPOSTGRES_DATA_DIRapunten a directorios existentes o que se crearán.
Guarde el archivo (Ctrl+X, Y, Enter).
6. Creación de directorios para datos
Cree los directorios especificados en .env para almacenar los datos de Linkwarden y PostgreSQL.
mkdir linkwarden_data # Crear directorio para los datos de Linkwarden
mkdir postgres_data # Crear directorio para los datos de PostgreSQL
7. Inicio de Linkwarden
Ahora está listo para iniciar Linkwarden usando Docker Compose.
docker compose up -d # Iniciar los servicios de Linkwarden y PostgreSQL en segundo plano
Este comando descargará las imágenes Docker necesarias (linkwarden/linkwarden y postgres), creará los contenedores y los iniciará. El proceso puede tardar varios minutos dependiendo de la velocidad de su conexión a internet.
8. Verificación del estado de los contenedores
Asegúrese de que todos los contenedores estén en ejecución y funcionando correctamente.
docker compose ps # Mostrar el estado de los contenedores en ejecución
Debería ver el estado Up para ambos servicios. Si algún servicio tiene el estado Exited o Restarting, revise los logs:
docker compose logs linkwarden # Ver los logs del contenedor linkwarden
docker compose logs db # Ver los logs del contenedor de la base de datos
En este punto, Linkwarden está funcionando en su servidor, pero solo es accesible a través de puertos internos (normalmente 3000 para Linkwarden). Para acceder desde el exterior y garantizar la seguridad, necesitaremos configurar un servidor proxy inverso con HTTPS.