v2.2.0 Self-hosted · one Docker container · free

Your family's start page. On your own server.

BookmarkHub is a free bookmark manager for families and small teams. You look after the links to the family services, everyone keeps their own bookmarks – and nothing ends up in somebody else's cloud.

632 downloads so far

BookmarkHub on a desktop browser: categories with bookmark cards and favicons BookmarkHub on an iPhone as a home screen app

Yep. 28.

That's how many bookmark, read-later and dashboard apps I tried before I built my own. I wanted one place my family actually uses as their start page: their own bookmarks, plus a collection I maintain for all the services on our NAS – the ones you spent countless hours setting up and nobody can find.

Version 2 is a complete rewrite: one container instead of a pile of them, proper security, automatic backups, 33 languages – and the code is on GitHub now.

What it does

Everything a family or a small team needs – and nothing that phones home.

  • Secure sign-in

    Strong password hashing, rate-limited logins, a random start password instead of admin/admin, and a forced password change on first login.

  • Two-factor authentication

    TOTP with any authenticator app, plus one-time recovery codes.

  • Sharing your way

    Every bookmark is visible to only me, everyone, or chosen people.

  • Import

    Bring your bookmarks from any browser (HTML export) or a JSON file – with a preview and duplicate detection.

  • Categories & drag and drop

    Sort categories and bookmarks with mouse, touch or keyboard. Card, list and compact views.

  • Dead-link check

    Checks your links about once a week in the background and gives you a “Broken” filter to clean up.

  • Favicons

    Fetched by your server, never by the browser. A tidy letter avatar when there is none, and “Reload all icons” in the admin area.

  • Admin switches

    Turn off every outgoing request of the server – favicons, link check, update check – with one click each.

  • Update notice

    Opt-in: tells admins when a new version is out. Off until you switch it on.

  • Home screen app

    Add it to your iPhone or Android home screen. Respects notch, Dynamic Island and home indicator.

  • 33 languages

    Including right-to-left for Arabic and Hebrew. Picks the browser language automatically.

  • Light & dark

    Follows your system – or pick one.

On your phone

Screenshots from a demo instance with made-up data. They follow your light or dark setting.

BookmarkHub on an iPhone as a home screen app
Family services, school, news – one tap away.
Sharing dialog: only me, everyone or chosen people
Share with everyone – or just the kids.
Admin area with switches for outgoing requests
You decide what your server may fetch.

Install

Requirements

  • Docker with Compose – Synology Container Manager, Portainer, Unraid or a plain Linux box.
  • linux/amd64 or linux/arm64 (Intel/AMD NAS, Raspberry Pi 4/5, Apple silicon).
  • Recommended: an HTTPS reverse proxy in front of it, e.g. on your Synology.
  • Running it under a sub-path like /bookmarks? Set BASE_PATH.

In four steps

  1. Create a folder bookmarkhub and save the docker-compose.yml below in it.
  2. Start it: docker compose up -d
  3. Get your start password – it is printed once: docker logs bookmarkhub
  4. Open http://your-nas:3131, sign in as admin and choose your own password.
docker-compose.yml
services:
  bookmarkhub:
    image: ghcr.io/olivermandic/bookmarkhub:latest
    pull_policy: always
    container_name: bookmarkhub
    restart: unless-stopped
    ports:
      - "3131:3131"
    environment:
      - TZ=Europe/Berlin
      # - BASE_PATH=/bookmarks
    volumes:
      - ./data:/app/data
      - ./backups:/app/backups

Prefer a fixed version? Use ghcr.io/olivermandic/bookmarkhub:2.2.0. All options are in the README.

Synology Container Manager

Project → Create → choose the folder, paste the compose file, done. Then look at the container's log for the start password.

Portainer

Stacks → Add stack → paste the compose file → Deploy. The start password is in the container logs.

Coming from 1.x?

2.x is a fresh start: one container instead of several. Export your bookmarks as an HTML bookmark file, import them in 2.2, then stop the old containers.

Update

docker compose pull && docker compose up -d

Synology: Container Manager → Project → bookmarkhub → Action → Build. Portainer: open the stack → Pull and redeploy.

Backup

Everything lives in data/ and backups/. BookmarkHub creates backups automatically and keeps 14 daily and 8 weekly ones. Put both folders into your NAS backup and you're set.

Forgot the admin password?

docker exec -it bookmarkhub reset-admin-password

Asks for a new password (add --random for a one-time one). Bookmarks and settings stay untouched. No shell? Create an empty file data/RESET_ADMIN_PASSWORD and restart.

Privacy, honestly

The app

  • Your visitors' browsers only talk to your server. Font and icons are self-hosted – no CDN, no Google Fonts, no tracking.
  • The only cookie is the session cookie that keeps you signed in.
  • Your server does fetch the bookmarked websites – for favicons and for the dead-link check. Both can be switched off in the admin area.
  • The update check is opt-in, runs on the server and sends no user data – it just reads the latest version number from GitHub.

This website

  • No cookies. Font, images and scripts come from this server.
  • Visitor statistics with Plausible – self-hosted on my own server, cookieless, no personal data.
  • The download number is fetched by this server from GitHub at most once a day. Your browser never contacts GitHub.

Privacy policy

Free – for non-commercial use

BookmarkHub is licensed under the PolyForm Noncommercial License 1.0.0. Use it at home, in your club or school, fork it, change it – forks and contributions are welcome. Commercial use is not allowed, and the copyright notice has to stay (attribution).

Say thanks

BookmarkHub is free. If it saves your family some searching and you'd like to buy me a coffee, I'm happy about it – no obligation at all.

Thank you via PayPal

Speaks your language

The app comes in 33 languages. This page follows your browser language where available.

33 de Deutsch · German en English it Italiano · Italian fr Français · French es Español · Spanish ja 日本語 · Japanese ko 한국어 · Korean zh-CN 简体中文 · Chinese (Simplified) zh-TW 繁體中文 · Chinese (Traditional) ar العربية · Arabic tr Türkçe · Turkish pt-BR Português (Brasil) · Portuguese (Brazil) pt-PT Português (Portugal) · Portuguese (Portugal) el Ελληνικά · Greek ru Русский · Russian hr Hrvatski · Croatian nb Norsk bokmål · Norwegian Bokmål sv Svenska · Swedish fi Suomi · Finnish da Dansk · Danish pl Polski · Polish sk Slovenčina · Slovak cs Čeština · Czech hu Magyar · Hungarian ro Română · Romanian he עברית · Hebrew ga Gaeilge · Irish nl Nederlands · Dutch id Bahasa Indonesia · Indonesian th ไทย · Thai vi Tiếng Việt · Vietnamese hi हिन्दी · Hindi uk Українська · Ukrainian