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.
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.).
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.
Verificar estado y logs
Comprueba que los tres contenedores estén healthy. Linkwarden incluye healthcheck HTTP en puerto 3000.
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.
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_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 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.
Migraciones de base de datos
Al arrancar, el contenedor ejecuta prisma migrate deploy automáticamente. Para ejecutar manualmente o inspeccionar:
Limpieza de caché y rebuild
Si hay problemas de build o caché, elimina volúmenes de build y reconstruye.
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
- Repositorio oficial GitHub: https://github.com/linkwarden/linkwarden
- Sitio web y demo: https://linkwarden.app
- Documentación de autoalojamiento: https://docs.linkwarden.app/self-hosting/installation
- Demo en vivo: https://demo.linkwarden.app
- Extensión de navegador: https://github.com/linkwarden/browser-extension
- Comunidad Discord: https://discord.com/invite/CtuYV47nuJ
- Roadmap público: https://github.com/orgs/linkwarden/projects/1
- Traducciones (Crowdin): https://crowdin.com/project/linkwarden
- Seguridad (reportar vulnerabilidades): mailto:[email protected]
Apoya el canal GENBYTE
¿Te ha sido útil este contenido?
Suscríbete a YouTube
Newsletter GENBYTE
Ko-fi
Contacto: [email protected]
