2.1 KiB
2.1 KiB
Linkwarden
Self-hosted bookmark manager with link archiving.
Access
- Tailscale: linkwarden.bunny-wyvern.ts.net
- LAN:
http://192.168.2.114:5001
Containers
| Container | Image | Role |
|---|---|---|
linkwarden |
ghcr.io/linkwarden/linkwarden:latest |
Web app |
linkwarden-db |
postgres:16-alpine |
PostgreSQL database |
linkwarden-tailscale-sidecar |
tailscale/tailscale:latest |
Tailscale node |
Compose File
Path: /home/artanis/DockerFiles/linkwarden/docker-compose.yml
services:
postgres:
image: postgres:16-alpine
container_name: linkwarden-db
restart: always
pull_policy: always
volumes:
- /home/artanis/DockerFiles/linkwarden/pgdata:/var/lib/postgresql/data
linkwarden:
container_name: linkwarden
image: ghcr.io/linkwarden/linkwarden:latest
restart: always
pull_policy: always
ports:
- 5001:3000
volumes:
- /home/artanis/DockerFiles/linkwarden/data:/data/data
environment:
- DATABASE_URL=postgresql://postgres:<redacted>@postgres:5432/postgres
- NEXTAUTH_URL=https://linkwarden.bunny-wyvern.ts.net/api/v1/auth
- NEXTAUTH_SECRET=<redacted>
depends_on:
- postgres
linkwarden-tailscale-sidecar:
image: tailscale/tailscale:latest
container_name: linkwarden-tailscale-sidecar
restart: unless-stopped
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
volumes:
- linkwarden_tailscale_state:/var/lib/tailscale
environment:
- TS_AUTHKEY=<redacted>
- TS_HOSTNAME=linkwarden
- TS_STATE_DIR=/var/lib/tailscale
network_mode: "service:linkwarden"
volumes:
linkwarden_tailscale_state:
Data Layout
| Path | Contents |
|---|---|
/home/artanis/DockerFiles/linkwarden/pgdata |
PostgreSQL data directory |
/home/artanis/DockerFiles/linkwarden/data |
Linkwarden app data (archived pages, assets) |
Notes
NEXTAUTH_URLmust point to the Tailscale URL for auth to work correctly- A Meilisearch service was previously considered (commented out in compose) but not deployed