Project guide

Linkding

A compact bookmark manager for saving references, docs and articles without browser-sync sprawl.

Complexity: Low Django application with SQLite or PostgreSQL

What it is

  • Linkding is a simple self-hosted bookmark manager focused on fast saving, tags and readable search.
  • It works well as a personal or small-team archive for articles, docs, runbooks and release links.

When it is a good fit

  • You want one place for operational notes, documentation links and references.
  • You care more about retrieval and structure than about social or collaborative features.
  • You want a service that stays understandable after six months of neglect.

When it is not the best choice

  • You need a full wiki or document editor.
  • You expect advanced permissions and large multi-team workflows.

Minimum VPS requirements

  • 1 vCPU is enough.
  • 512 MB to 1 GB RAM is generally sufficient.
  • Disk usage is usually small unless you deliberately archive many snapshots.

Starter install

  • The official install page is refreshingly short: run the container, mount `/etc/linkding/data`, then create the first user from inside the container.
  • That is also the path I would take on a small VPS. The service is narrow enough that there is rarely a reason to complicate the first deployment.
services:
  linkding:
    image: sissbruecker/linkding:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:9090:9090"
    volumes:
      - ./data:/etc/linkding/data
  • Bring the container up with `docker compose up -d` and confirm that the login page loads through nginx.
  • Create the first admin account with `docker compose exec linkding python manage.py createsuperuser` and fill the prompts interactively.
  • Keep the default image unless you really need page archiving. The larger variants pull in a browser runtime and are noticeably heavier on a small host.
  • Once the first user is in place, test one browser integration before declaring the setup done.

Deployment notes

  • SQLite keeps the initial deployment short and is usually enough for a small collection.
  • Place the data volume next to your other service directories so backup routines stay consistent.
  • If browser extensions are used, document the public URL once and avoid changing it casually.

Reverse proxy / nginx notes

  • A standard nginx host with forwarded headers is enough.
  • Keep request body limits reasonable if you enable archiving or richer uploads.
  • Use one canonical hostname so bookmarklet and extension flows do not drift.

Data, volumes and backups

  • Back up the application data and any archived content together.
  • Bookmark metadata is small, so frequent snapshots are cheap and worth doing.
  • Retain a plain copy of the Compose file and environment values used by the service.

Updates and maintenance

  • Check storage growth if page archiving is enabled.
  • Upgrade periodically and verify login plus tag search after each update.
  • Clean dead links only when they create real clutter; the archive value often outweighs perfection.

Common pitfalls

  • Changing the external URL later can break saved browser-side integrations until they are reconfigured.
  • Archiving every page can turn a tiny service into a larger storage consumer.
  • Treating it like a wiki leads to frustration because the product is intentionally narrow.

Alternatives

  • Wallabag if read-later and article extraction matter more.
  • A small wiki if you need authored pages rather than saved links.