Linkwarden: Gestor de marcadores colaborativo autoalojado

Publicado por


linkwarden
Open Source · Autoalojado

Linkwarden: Gestor de marcadores colaborativo autoalojado

Recopila, lee, anota y preserva páginas web con capturas automáticas, PDF y búsqueda de texto completo. Despliegue con Docker Compose, PostgreSQL y Meilisearch.

Vídeo tutorial en YouTube

Mira el vídeo completo sobre cómo instalar y usar Linkwarden: Gestor de marcadores colaborativo autoalojado en el canal GENBYTE:

¿Qué es Linkwarden: Gestor de marcadores colaborativo autoalojado?

Linkwarden es un gestor de marcadores colaborativo, open source y autoalojado diseñado para recopilar, leer, anotar y preservar contenido web en un solo lugar. Ante la inevitabilidad del link rot, Linkwarden captura automáticamente una captura de pantalla, un PDF y un archivo HTML único de cada página guardada, garantizando su accesibilidad aunque el original desaparezca. Ofrece una experiencia de lectura tipo "read-it-later" con resaltado y anotaciones, organización por colecciones, subcolecciones y etiquetas, búsqueda de texto completo, modo oscuro/claro, aplicaciones móviles nativas, extensión de navegador, sincronización con Floccus, RSS, SSO (solo autoalojado y enterprise), claves API, acciones en lote, administración de usuarios, internacionalización, subida de imágenes y PDF, iconos personalizados y más. El proyecto está construido con TypeScript, Next.js, React, PostgreSQL, Meilisearch y Rust (monolith para capturas), y se distribuye como imagen Docker multi-arquitectura en ghcr.io/linkwarden/linkwarden.

Captura automática de screenshot, PDF y HTML de cada enlace para preservar el contenido frente al link rot, con lector integrado, anotaciones y búsqueda full-text.

Características principales

Preservación automática

Captura screenshot, PDF y archivo HTML single-file de cada página web guardada, con opción de envío a Wayback Machine.

Lector y anotaciones

Vista de lectura limpia con resaltado de texto y notas personales sobre el contenido archivado.

Organización flexible

Colecciones, subcolecciones, nombre, descripción y múltiples etiquetas por enlace. Etiquetado automático opcional con IA local.

Colaboración y permisos

Compartir colecciones públicamente o colaborar con varios usuarios, personalizando permisos por miembro.

Búsqueda y filtrado

Búsqueda de texto completo, filtros y ordenación para recuperación rápida.

Multiplataforma

Aplicaciones nativas iOS y Android, extensión de navegador, sincronización con Floccus, shortcut iOS, subida desde SingleFile.

Autenticación y API

Integración SSO (solo autoalojado/enterprise), claves API, acciones en lote, administración de usuarios, i18n, subida de imágenes y PDF, iconos personalizados, suscripción RSS.

Requisitos del sistema

  • Docker y Docker Compose
  • PostgreSQL 16 (contenedor oficial postgres:16-alpine)
  • Meilisearch v1.13.3 (getmeili/meilisearch:v1.13.3)
  • Mínimo 2 GB RAM recomendados para contenedores y build
  • Puerto 3000 disponible en el host para la interfaz web
  • Archivo .env con variables requeridas (ver .env.sample del repositorio)

Instalación con Docker Compose

Clonar el repositorio y preparar variables de entorno

Clona el repositorio oficial y copia el archivo de ejemplo de variables de entorno. Edita .env con tus valores (POSTGRES_PASSWORD, MEILI_MASTER_KEY, NEXTAUTH_SECRET, etc.).

git clone https://github.com/linkwarden/linkwarden.git
cd linkwarden
cp .env.sample .env
# Edita .env con tus valores

Levantar la pila con Docker Compose

El docker-compose.yml define tres servicios: postgres, linkwarden y meilisearch. Linkwarden expone el puerto 3000 y depende de los otros dos. Los volúmenes persisten datos de PostgreSQL, Meilisearch y datos de la aplicación en ./data.

docker compose up -d

Verificar estado y logs

Comprueba que los tres contenedores estén healthy. Linkwarden incluye healthcheck HTTP en puerto 3000.

docker compose ps
docker compose logs -f linkwarden

Acceder al proyecto

Interfaz web

Accede a http://localhost:3000 (o la IP/host donde se ejecute Docker) tras la inicialización. La primera carga ejecutará migraciones de Prisma y arrancará el worker en segundo plano.

Casos de uso

  • Archivo personal de artículos, documentación y recursos técnicos con preservación a largo plazo.
  • Equipos de investigación o redacción que necesitan compartir y anotar fuentes web de forma colaborativa.
  • Gestión de conocimiento organizativo con control de permisos y búsqueda full-text.
  • Sustituto autoalojado de servicios tipo Pocket/Instapaper/Readwise con propiedad total de los datos.
  • Integración en flujos de trabajo mediante API keys, extensión de navegador, Floccus, RSS y shortcuts iOS.

Configuración avanzada

Variables de entorno clave

El archivo .env.sample (no incluido en la investigación) define variables como DATABASE_URL, MEILI_MASTER_KEY, NEXTAUTH_SECRET, NEXTAUTH_URL, OPENAI_API_KEY (para etiquetado IA), S3_* (para almacenamiento de objetos), entre otras. Consulta el .env.sample del repositorio para la lista completa.

# Ejemplo de variables mínimas
POSTGRES_PASSWORD=tu_password_seguro
MEILI_MASTER_KEY=clave_meilisearch
NEXTAUTH_SECRET=secreto_largo_aleatorio
NEXTAUTH_URL=http://localhost:3000

Almacenamiento de objetos (S3 compatible)

Linkwarden soporta S3 para screenshots, PDFs y subidas. Configura S3_ENDPOINT, S3_BUCKET, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_REGION y S3_PUBLIC_URL en .env.

S3_ENDPOINT=https://s3.tu-proveedor.com
S3_BUCKET=linkwarden
S3_ACCESS_KEY_ID=xxx
S3_SECRET_ACCESS_KEY=yyy
S3_REGION=us-east-1
S3_PUBLIC_URL=https://cdn.tu-dominio.com

Actualización de imagen

Para actualizar a la última versión, descarga la nueva imagen y recrea el contenedor linkwarden. Las migraciones de Prisma se ejecutan automáticamente al arranque (prisma migrate deploy).

docker compose pull linkwarden
docker compose up -d linkwarden

Gestión y mantenimiento

Backup de volúmenes

Los datos críticos residen en ./pgdata (PostgreSQL), ./meili_data (Meilisearch) y ./data (archivos de la app). Realiza copias de seguridad de estos directorios.

tar -czf linkwarden-backup-$(date +%F).tar.gz pgdata meili_data data

Migraciones de base de datos

Al arrancar, el contenedor ejecuta prisma migrate deploy automáticamente. Para ejecutar manualmente o inspeccionar:

docker compose exec linkwarden sh -c 'cd /data && npx prisma migrate deploy –schema=/data/packages/prisma/schema.prisma'

Limpieza de caché y rebuild

Si hay problemas de build o caché, elimina volúmenes de build y reconstruye.

docker compose down -v
docker compose build –no-cache
docker compose up -d

Stack técnico

  • TypeScript
  • Next.js (React 19)
  • Node.js 22 (runtime)
  • PostgreSQL 16
  • Meilisearch v1.13
  • Rust (monolith v2.10.1 para captura single-file)
  • Playwright (Chromium headless shell para screenshots/PDF)
  • Prisma ORM
  • Yarn 4 (Berry)
  • Docker multi-stage build
  • Tailwind CSS (inferido por ecosistema Next.js)
  • React Native (apps móviles)

Referencias oficiales

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *