From 9e995f02f0012a0799b3149655c697897e476ea1 Mon Sep 17 00:00:00 2001 From: LRVT <21357789+l4rm4nd@users.noreply.github.com> Date: Sat, 10 May 2025 00:06:56 +0200 Subject: [PATCH] chore: add linkwarden --- README.md | 1 + examples/linkwarden/.env | 11 +++++ examples/linkwarden/README.md | 8 +++ examples/linkwarden/docker-compose.yml | 68 ++++++++++++++++++++++++++ 4 files changed, 88 insertions(+) create mode 100644 examples/linkwarden/.env create mode 100644 examples/linkwarden/README.md create mode 100644 examples/linkwarden/docker-compose.yml diff --git a/README.md b/README.md index 81c9fd6..ab77a43 100644 --- a/README.md +++ b/README.md @@ -249,6 +249,7 @@ Digital [archiving](https://en.wikipedia.org/wiki/Archival_science) and [preserv - [Archivebox](examples/archivebox) - ArchiveBox is a powerful, self-hosted internet archiving solution to collect, save, and view websites offline. - [Shiori](examples/shiori) - Simple bookmark manager and website archiver built with Go. - [Readeck](examples/readeck) - Readeck is a simple web application that lets you save the precious readable content of web pages you like and want to keep forever. +- [Linkwarden](examples/linkwarden) - Self-hosted collaborative bookmark manager to collect, organize, and preserve webpages, articles, and documents. ### Document Management diff --git a/examples/linkwarden/.env b/examples/linkwarden/.env new file mode 100644 index 0000000..74d9dca --- /dev/null +++ b/examples/linkwarden/.env @@ -0,0 +1,11 @@ +# change this env to your fqdn url +NEXTAUTH_URL=http://localhost:3000/api/v1/auth +#NEXTAUTH_URL=https://linkwarden.example.com/api/v1/auth + +# define a strong secret key +NEXTAUTH_SECRET=unplug6-coherent-outlast-undergo-plow + +# database settings +PG_PASS=linkwarden +PG_USER=linkwarden +PG_DB=linkwarden diff --git a/examples/linkwarden/README.md b/examples/linkwarden/README.md new file mode 100644 index 0000000..4a7505b --- /dev/null +++ b/examples/linkwarden/README.md @@ -0,0 +1,8 @@ +# References + +- https://docs.linkwarden.app/self-hosting/installation +- https://github.com/linkwarden/linkwarden + +# Notes + + diff --git a/examples/linkwarden/docker-compose.yml b/examples/linkwarden/docker-compose.yml new file mode 100644 index 0000000..9756b03 --- /dev/null +++ b/examples/linkwarden/docker-compose.yml @@ -0,0 +1,68 @@ +services: + + linkwarden: + image: ghcr.io/linkwarden/linkwarden:latest + container_name: linkwarden-app + environment: + - DATABASE_URL=postgresql://${PG_USER:-linkwarden}:${PG_PASS:-linkwarden}@postgres:5432/${PG_DB:-linkwarden} + restart: unless-stopped + env_file: .env + ports: + - 3000:3000 + expose: + - 3000 + volumes: + - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/linkwarden/data:/data/data + depends_on: + - postgres + - meilisearch + #networks: + # - internal + # - tier-2 + #labels: + # - traefik.enable=true + # - traefik.docker.network=proxy + # - traefik.http.routers.linkwarden.rule=Host(`linkwarden.example.com`) + # - traefik.http.services.linkwarden.loadbalancer.server.port=3000 + # # Optional part for traefik middlewares + # - traefik.http.routers.linkwarden.middlewares=local-ipwhitelist@file + + postgres: + image: docker.io/library/postgres:16-alpine + container_name: linkwarden-psql + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"] + start_period: 20s + interval: 30s + retries: 5 + timeout: 5s + volumes: + - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/linkwarden/psql:/var/lib/postgresql/data + environment: + POSTGRES_PASSWORD: ${PG_PASS:-linkwarden} + POSTGRES_USER: ${PG_USER:-linkwarden} + POSTGRES_DB: ${PG_DB:-linkwarden} + expose: + - 5432 + env_file: + - .env + #networks: + # - internal + + meilisearch: + image: getmeili/meilisearch:v1.12.8 + container_name: linkwarden-search + restart: unless-stopped + env_file: + - .env + volumes: + - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/linkwarden/meili_data:/meili_data + #networks: + # - internal + +#networks: +# tier-2: +# external: true +# internal: +# internal: true