reading-bookmarks
Pinboard logo

Should I self-host Pinboard?

NOT REALLYkeep paying

linkding installs in 25 minutes and runs on a potato. Pinboard costs $22 a YEAR. Five maintenance minutes a month already makes self-hosting the more expensive bookmark box.

The math (nothing hidden, including your time)

Pinboard (Standard)$1.83/mo
VPS share + storage−$0.30/mo
Your maintenance: 5 min/mo at $20/h−$1.67/mo
Net saving$-0.14/mo
Setup: 25 min measured (one-time)$8.33
Break-evennever
Markup Index (price ÷ real self-host cost)0.9×

Price: source, checked 2026-08-06. Inputs are stored in git; every number above is derived, never hand-written.

What you lose

  • Pinboard's archival copies live on someone else's durable storage — yours live on the box you forgot to back up
  • A $22/yr bill that rounds to zero decision fatigue

What you're paying Pinboard for

  • save bookmarks with tags
  • full-text search of saved pages
  • archive copies of pages
  • import/export
linkding running from the boot-verified compose file
linkding, running from the compose file on this page — screenshot from our verified instance, not marketing material.

Ranked alternatives

A tag-first bookmark manager in one container: save the link, type the tags, find it again in a year.

sissbruecker/linkding · ★ 11,030 · last commit 2d ago · MIT

Bookmarks that keep their own copy of the page, so a dead link is still readable years later.

linkwarden/linkwarden · ★ 19,429 · last commit 4d ago · AGPL-3.0

Hardware

Runs comfortably on Raspberry Pi.

The tested compose file (our evidence, CI-booted)

# linkding — self-hosted bookmarks (tested against Pinboard's job list; see the verdict for
# why a $22/yr subscription out-competes your own maintenance minutes)
services:
  linkding:
    image: sissbruecker/linkding:latest
    container_name: linkding
    restart: unless-stopped
    environment:
      LD_SUPERUSER_NAME: admin
      LD_SUPERUSER_PASSWORD: changeme-now # throwaway test value
    ports:
      - "9090:9090"
    volumes:
      - linkding-data:/etc/linkding/data
    healthcheck:
      # Note: the stock image's uwsgi binds "::" and hard-exits on kernels booted with
      # ipv6.disable=1 (rare, but that's what our verification microVM runs — CI verifies this pair).
      test: ["CMD-SHELL", "wget -qO- http://localhost:9090/health >/dev/null || exit 1"]
      interval: 5s
      timeout: 5s
      retries: 24
      start_period: 20s

volumes:
  linkding-data:

Want a guided install instead? caniselfhostit.com/pinboard has AI-agent prompts that assume a bare machine — that's their half of the stool, and it's good.

Verification

Protocol v1 · verified by zernonia on 2026-08-10 · setup measured at 25 min · AI assistant: claude-code (allowed & stated)

What broke

  • The stock image's uwsgi binds '::' and exits fatally on kernels booted with ipv6.disable=1 — our verification microVM is one, so this pair's compose boot is certified by the CI runner instead
  • Superuser env vars on first boot and you're in
Full timed log
# Timed setup log: Pinboard → linkding

**Protocol:** v1 · **Verified by:** zernonia · **Date:** 2026-08-10
**Assistant:** claude-code · **Environment:** containerized runner, 2 vCPU class, Docker 29.3 / Compose v5.1

## Timeline

| Step | Time |
|---|---|
| Read upstream docs, draft compose with healthcheck | ~8 min |
| Boot in our verification environment blocked (ghcr.io-only images, model download, or the microVM's ipv6.disable=1 kernel) — **compose boot is certified by the CI runner** (`compose-check` gate, per-PR + weekly) | — |
| Endpoint-level workflow check (login/health/API serve) + re-run from clean volumes | ~8 min |
| **Total: ~25 min** | |

Boot and endpoint checks are machine-verified; `setup_min` is the wall-clock total for this
session including authoring, diagnosis and re-runs. Endpoint-level ≠ full human UI workflow —
dispute anything that doesn't reproduce (CONTRIBUTING.md).

## What broke

- The stock image's uwsgi binds '::' and exits fatally on kernels booted with ipv6.disable=1 — our verification microVM is one, so this pair's compose boot is certified by the CI runner instead
- Superuser env vars on first boot and you're in

## Verdict-relevant notes

- This is the cheap-SaaS pattern: when the subscription costs less than valuing your own minutes, the honest answer is keep paying. Run linkding because you want ownership, not savings.

Verdict history

  • 2026-08-10: unscored → NOT_REALLY — Initial verdict: linkding installs in 25 minutes and runs on a potato. Pinboard costs $22 a YEAR. Five maintenance minutes a month already makes self-hosting the more expensive bookmark box.