Por qué alojar Linkwarden uno mismo
La objeción más habitual es la carga operativa: un servicio más que actualizar, respaldar y asegurar — mejor quedarse en un SaaS. Es legítima, pero parte de una premisa inexacta: una herramienta bien contenedorizada como Linkwarden no exige más mantenimiento que una imagen Docker estándar. La actualización se reduce a descargar la nueva imagen y reiniciar el servicio. La copia de seguridad afecta a un único volumen de base de datos. El TLS lo gestiona un reverse proxy ya presente en el VPS.
Lo que sí resuelve el autoalojamiento es la dependencia de un SaaS cuyas condiciones de acceso pueden cambiar de un día para otro. Varios equipos han perdido el acceso a una vigilancia compartida tras el cierre o la compra de una herramienta de terceros. En su VPS, los datos pertenecen a su organización, las colecciones siguen accesibles sea cual sea el contexto comercial del proveedor, y usted controla la política de retención.
Lo que Linkwarden aporta a una agencia
- Colecciones compartidas — cada proyecto o cliente dispone de su propia colección, accesible al equipo implicado sin exponer las demás carpetas.
- Permisos por miembro — los permisos se gestionan a nivel de colección: lector, colaborador o gestor, según el rol de cada uno.
- Anotaciones comunes — los miembros de una colección pueden dejar notas en cada enlace, lo que evita duplicar búsquedas y capitaliza la vigilancia.
- Extensión de navegador multiusuario — cada colaborador instala la extensión en su navegador y guarda directamente en la colección de destino, sin abrir la interfaz web.
- Archivado de las páginas — Linkwarden conserva una copia local de las páginas guardadas, lo que evita perder un recurso desaparecido de la web.
- API REST — los enlaces se integran en otras herramientas internas mediante la API, sin depender de una interfaz gráfica.
- Control total de los datos — ningún análisis del comportamiento, ninguna sindicación externa de los marcadores hacia terceros.
Requisitos previos antes de la instalación
Un VPS con 2 vCPU y 2 GB de RAM basta para una agencia de 5 a 15 personas con un uso normal: las colecciones cargan rápido y el archivado de las páginas se ejecuta en segundo plano sin afectar a la navegación. Por debajo de 1 GB de RAM, el proceso Node.js de Next.js puede ser eliminado por el OOM killer bajo carga.
Prevea de 10 a 20 GB de almacenamiento según el volumen de páginas archivadas: cada captura de pantalla y cada copia de página pesa entre 100 KB y 2 MB. Un VPS {{vps.power.name}} con SSD se adapta a esta carga.
En cuanto a la red, el puerto 443 debe estar abierto y un nombre de dominio debe apuntar a la IP del VPS antes de generar el certificado TLS. Linkwarden requiere Docker y Docker Compose, disponibles en todas las distribuciones Linux principales. Se necesita una base de datos PostgreSQL — está incluida en el archivo Compose oficial.
Despliegue paso a paso
Preparar el directorio de trabajo
Conéctese por SSH a su VPS como root o mediante un usuario con sudo, y cree la carpeta que albergará los archivos de configuración:
mkdir -p /opt/linkwarden && cd /opt/linkwardenCrear el archivo Compose
Cree un archivo
docker-compose.ymlcon el contenido siguiente. Los valores entre ángulos deben sustituirse antes de arrancar:services: postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_DB: linkwarden POSTGRES_USER: linkwarden POSTGRES_PASSWORD: <contrasena-db> volumes: - postgres_data:/var/lib/postgresql/data linkwarden: image: ghcr.io/linkwarden/linkwarden:latest restart: unless-stopped depends_on: - postgres environment: DATABASE_URL: postgresql://linkwarden:<contrasena-db>@postgres:5432/linkwarden NEXTAUTH_SECRET: <cadena-aleatoria-32-caracteres> NEXTAUTH_URL: https://su-dominio.com volumes: - linkwarden_data:/data/data ports: - "127.0.0.1:3000:3000" volumes: postgres_data: linkwarden_data:Para generar el valor de
NEXTAUTH_SECRET, ejecute en el servidor:openssl rand -base64 32.Configurar la variable NEXTAUTH_URL con cuidado
La variable
NEXTAUTH_URLdebe corresponder exactamente a la URL pública de su instancia, protocolo incluido. Si su instancia está detrás de un reverse proxy TLS, el valor debe empezar porhttps://y no porhttp://.Un
NEXTAUTH_URLmal formado produce el error siguiente en la primera carga de la interfaz:Error: NEXTAUTH_URL is not configured. Please set NEXTAUTH_URL in your .env. Si el valor está enhttp://mientras el proxy sirve HTTPS, la sesión no se crea y la página de inicio de sesión se recarga en bucle sin ningún mensaje de error visible.Iniciar los contenedores
Desde
/opt/linkwarden, ejecute:docker compose up -dSe descargan las imágenes y PostgreSQL arranca en primer lugar. Linkwarden espera a que la base esté lista antes de inicializar el esquema. Compruebe que los dos contenedores están en estado
runningcondocker compose ps.Configurar el reverse proxy (nginx)
Linkwarden escucha en
127.0.0.1:3000. Añada un bloque de servidor nginx para proxificar el tráfico HTTPS:server { listen 443 ssl; server_name su-dominio.com; ssl_certificate /etc/letsencrypt/live/su-dominio.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/su-dominio.com/privkey.pem; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }Recargue nginx con
nginx -t && systemctl reload nginx.Generar el certificado TLS
Si aún no lo ha hecho, genere un certificado Let's Encrypt con Certbot:
certbot --nginx -d su-dominio.comCertbot modifica automáticamente el bloque nginx para añadir las rutas del certificado y la redirección de HTTP hacia HTTPS. La renovación es automática mediante el timer de systemd que instala el paquete.
Crear la primera cuenta de administrador
Abra
https://su-dominio.comen un navegador. Linkwarden propone crear la primera cuenta en el primer acceso. Esa cuenta se convierte en la administradora de la instancia. Después, invite a cada colaborador desde el panel Configuración → Miembros indicando su dirección de correo electrónico.
Endurecimiento tras la instalación
Restrinja el acceso directo al puerto 3000 desde el exterior — solo debe responder en la interfaz local: compruebe que la línea ports de su Compose apunta a 127.0.0.1:3000:3000 y no a 0.0.0.0:3000:3000.
Active las actualizaciones automáticas de la imagen con Watchtower o programe un docker compose pull && docker compose up -d semanal en un cron.
Respalde el volumen postgres_data con un dump diario: docker compose exec postgres pg_dump -U linkwarden linkwarden > /opt/backups/linkwarden-$(date +%F).sql. Conserve los dumps fuera del servidor (S3, almacenamiento remoto) para resistir un fallo de disco.
Linkwarden o Karakeep: dos usos distintos
Karakeep (antes Hoarder) y Linkwarden se citan a menudo juntos en las comparativas de gestores de marcadores self-hosted, pero no responden a la misma necesidad.
Karakeep se centra en la captura inteligente: extrae y resume automáticamente el contenido de las páginas gracias a un modelo de lenguaje local o remoto. Es una herramienta pensada para un uso individual, donde el valor viene de la IA que ordena y clasifica. No expone la noción de colección compartida ni la gestión de permisos por miembro.
Linkwarden está pensado para la colaboración: la noción central es la colección compartida, accesible a varios miembros con permisos diferenciados. Las anotaciones son comunes, no personales. La extensión de navegador se conecta a la instancia de la organización, no a una cuenta personal. Para una agencia que quiere centralizar la vigilancia de sus equipos de proyecto, Linkwarden es la herramienta adecuada. Para quien busca una biblioteca personal enriquecida por la IA, Karakeep responde mejor.
Linkwarden vs Karakeep — tabla comparativa
Desplace la tabla
| Criterio | Linkwarden | Karakeep |
|---|---|---|
| Uso principal | Vigilancia colaborativa de equipo | Captura personal asistida por IA |
| Colecciones compartidas | Sí, con permisos por miembro | No (uso individual) |
| Anotaciones comunes | Sí | No |
| Extensión de navegador multiusuario | Sí | Sí (cuenta única) |
| Resumen del contenido con IA | No | Sí (modelo local o API) |
| Recursos mínimos | 2 vCPU / 2 GB RAM | 2 vCPU / 4 GB RAM (modelo local) |
| Licencia | AGPL-3.0 | AGPL-3.0 |
Resolución de problemas: errores comunes en la instalación
La página de inicio de sesión se recarga en bucle sin mensaje de error.
Causa probable: NEXTAUTH_URL está definido en http:// mientras el reverse proxy sirve HTTPS. NextAuth genera una cookie segura que el navegador se niega a reenviar por una conexión no cifrada. Corrija el valor en el Compose y reinicie con docker compose up -d --force-recreate.
La interfaz se muestra pero las imágenes de las colecciones no cargan.
La ruta del volumen linkwarden_data no está montada correctamente. Compruebe que el volumen está declarado en la sección volumes del archivo Compose y que ningún montaje bind anterior haya dejado la carpeta vacía.
Error ECONNREFUSED en los logs de Linkwarden al arrancar.
Linkwarden arranca antes de que PostgreSQL esté listo para aceptar conexiones. Añada un healthcheck al servicio postgres y una condición depends_on: postgres: condition: service_healthy al servicio linkwarden para imponer el orden.
La extensión de navegador muestra «Imposible contactar con el servidor».
Compruebe que la URL introducida en los parámetros de la extensión no lleva barra final (https://su-dominio.com y no https://su-dominio.com/). Algunas versiones de la extensión son sensibles a este detalle.
El archivado de las páginas no funciona.
El proceso de archivado invoca a Chromium en modo headless desde el contenedor. En los VPS con menos de 1,5 GB de RAM, el proceso termina antes de la captura. Aumente los recursos del VPS o desactive el archivado automático en Configuración → Archivado si la RAM está limitada.
El paso siguiente: centralizar todos los servicios de la agencia
Una agencia que autoaloja su vigilancia con Linkwarden ya ha cruzado la línea: gestiona sus propios datos, sus propias actualizaciones, sus propias copias de seguridad. Es la postura de un equipo que sabe qué hace funcionar.
El siguiente paso lógico es centralizar también los dominios, alojamientos y VPS de sus clientes en un espacio de revendedor bajo su propia marca — sin multiplicar las interfaces ni perder la visibilidad sobre las renovaciones. Es exactamente lo que permite la oferta para agencias de ServOrbit.
Si desea profundizar en el autoalojamiento de herramientas de equipo, los artículos sobre Outline (wiki colaborativo) y la automatización de servidores con Ansible completan esta guía.