Guía de despliegue

Alojar Linkwarden en VPS: gestión de marcadores de equipo

Desplegar en un VPS Cloud →

Tutorial

Alojar Linkwarden en VPS: gestión de marcadores de equipo

Autoalojamiento8 min de lectura8 pasos

Linkwarden es un gestor de marcadores colaborativo de código abierto bajo licencia AGPL-3.0, concebido para los equipos que comparten una vigilancia activa. Organiza los enlaces en colecciones, permite permisos precisos por miembro y ofrece una extensión de navegador que cada persona puede usar. Esta guía explica cómo desplegarlo en un VPS con acceso root, configurar el reverse proxy y entregar a su agencia un entorno listo para usar.

Contenido· Por qué alojar Linkwarden uno mismo1/9
  1. 01Por qué alojar Linkwarden uno mismo
  2. 02Lo que Linkwarden aporta a una agencia
  3. 03Requisitos previos antes de la instalación
  4. 04Despliegue paso a paso
  5. 05Endurecimiento tras la instalación
  6. 06Linkwarden o Karakeep: dos usos distintos
  7. 07Linkwarden vs Karakeep — tabla comparativa
  8. 08Resolución de problemas: errores comunes en la instalación
  9. 09El paso siguiente: centralizar todos los servicios de la agencia

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

  1. 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/linkwarden
  2. Crear el archivo Compose

    Cree un archivo docker-compose.yml con 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.

  3. Configurar la variable NEXTAUTH_URL con cuidado

    La variable NEXTAUTH_URL debe 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 por https:// y no por http://.

    Un NEXTAUTH_URL mal 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á en http:// 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.

  4. Iniciar los contenedores

    Desde /opt/linkwarden, ejecute:

    docker compose up -d

    Se 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 running con docker compose ps.

  5. 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.

  6. Generar el certificado TLS

    Si aún no lo ha hecho, genere un certificado Let's Encrypt con Certbot:

    certbot --nginx -d su-dominio.com

    Certbot 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.

  7. Crear la primera cuenta de administrador

    Abra https://su-dominio.com en 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.

  8. Distribuir la extensión de navegador

    La extensión de Linkwarden está disponible en Chrome Web Store y en Firefox Add-ons. En la primera configuración, cada miembro indica la URL de la instancia (https://su-dominio.com) y genera un token de API desde Configuración → Tokens de acceso. Los marcadores guardados desde la extensión llegan directamente a la colección elegida por el usuario.

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

CriterioLinkwardenKarakeep
Uso principalVigilancia colaborativa de equipoCaptura personal asistida por IA
Colecciones compartidasSí, con permisos por miembroNo (uso individual)
Anotaciones comunesNo
Extensión de navegador multiusuarioSí (cuenta única)
Resumen del contenido con IANoSí (modelo local o API)
Recursos mínimos2 vCPU / 2 GB RAM2 vCPU / 4 GB RAM (modelo local)
LicenciaAGPL-3.0AGPL-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.

Centralice también los servicios de sus clientes

La agencia que autoaloja sus herramientas internas ya domina su infraestructura. El siguiente paso es gestionar los dominios, alojamientos y VPS de sus clientes bajo su propia marca, en un único espacio de revendedor.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva