Sign inSign up

yngf73/linkbank

By yngf73

Updated 21 days ago

A fast, self-hostable bookmark manager with a proper folder tree.

Image
0

2.9K

yngf73/linkbank repository overview

LinkBank

A fast, self-hostable bookmark manager with a proper nested folder tree. One container, one SQLite file, no external services — runs happily on a Raspberry Pi, a NAS, or any small VPS.

LinkBank

Features

  • Nested folder tree with drag-and-drop, rename, move/copy, trash + undo
  • Search across folders and bookmarks; tags with coloured labels
  • Multi-user — first-run admin setup, invite links, roles, safe deletion
  • Capture from a browser extension and a PWA share target (→ Inbox)
  • Link-rot checking (scheduled + on-demand) with a Broken-links view
  • Encrypted notes at rest (AES-256-GCM); import/export (Netscape HTML)
  • SQLite or PostgreSQL — same image, chosen by an env var
  • Dark/light theme and whole-UI zoom

Quick start

docker run -d --name linkbank \
  -p 3000:3000 \
  -v linkbank-data:/app/data \
  -e ORIGIN=https://links.example.com \
  -e PROTOCOL_HEADER=x-forwarded-proto \
  -e HOST_HEADER=x-forwarded-host \
  yngf73/linkbank:latest

Or with Compose — grab docker-compose.yml from the repo, set ORIGIN, and docker compose up -d. The whole database is the single file under the /app/data volume; back that up and you're safe. Migrations run automatically on start, so upgrades are just docker compose pull && docker compose up -d.

On first visit you'll get a one-time setup screen to create the admin account.

Supported tags & architectures

Images are multi-arch: linux/amd64 and linux/arm64.

  • latest — the newest release
  • 1, 1.2, 1.2.3 — pin to a major / minor / exact version

Key environment variables

VariablePurpose
ORIGINRequired in production — the exact public URL (login/CSRF depend on it).
PROTOCOL_HEADER / HOST_HEADERx-forwarded-proto / x-forwarded-host behind a TLS proxy so Secure cookies work.
DATABASE_URLA postgres://… URL to use PostgreSQL instead of SQLite.
REGISTRATIONopen / invite / closed (default closed).
NOTES_ENCRYPTION_KEY32-byte key (openssl rand -base64 32) to encrypt notes at rest.
LINK_CHECK_INTERVAL_HOURSLink-rot sweep interval (0 disables; default 24).
FAVICON_ALLOW_INSECURE_TLS1 to fetch favicons from self-signed LAN https sites.
TLS_KEY_PATH / TLS_CERT_PATHServe HTTPS directly with a self-signed cert (no proxy).

SQLite must live on local disk / a named volume, not a CIFS/NFS mount — network file locking breaks SQLite. Postgres has no such constraint.

License

AGPL-3.0-or-later

Tag summary

Content type

Image

Digest

sha256:8ad27b5fc

Size

88.8 MB

Last updated

21 days ago

docker pull yngf73/linkbank