Linkding¶
Self-Hosted Bookmark Manager
Linkding is a minimal bookmark manager you can host yourself. It features tagging, full-text search, browser extension support, and a clean interface for organizing and archiving web links.
Why Choose Linkding?¶
- Lightweight - minimal resource usage, fast search
- Browser extensions - available for Firefox and Chrome
- Search - search across bookmark titles, descriptions, tags, and URLs
- Tagging - organize bookmarks with tags
- REST API - integrate with other tools and scripts
Install¶
Infrastructure as Code
This Linkding instance is deployed using OpenTofu with the official Docker image (plus variant for HTML snapshots). The infrastructure configuration manages container provisioning and persistent storage.
The canonical configuration is maintained at Benoit/OpenTofu.
Infrastructure Configuration¶
The OpenTofu configuration provisions:
- Incus instance running official Linkding Docker image (
plusvariant for HTML snapshots) - Persistent storage volume for
/etc/linkding/datadirectory containing:- SQLite database with bookmarks and tags
- Archived HTML snapshots
- User data and settings
About the plus variant
The plus image includes a bundled Chromium installation that enables archiving websites as HTML snapshots. This comes with trade-offs: significantly larger image size, more runtime memory for Chromium, and more disk space for storing snapshots.
resource "incus_storage_volume" "linkding_etc_linkding_data" {
name = "linkding_etc_linkding_data"
pool = incus_storage_pool.default.name
}
resource "incus_instance" "linkding" {
name = "linkding"
image = "docker:sissbruecker/linkding:1.45.0-plus"
config = {
"environment.LD_CSRF_TRUSTED_ORIGINS" = "https://linkding.benoit.jp.net"
"environment.LD_LOG_X_FORWARDED_FOR" = "true"
}
device {
name = "etc_linkding_data"
type = "disk"
properties = {
path = "/etc/linkding/data"
source = incus_storage_volume.linkding_etc_linkding_data.name
pool = incus_storage_pool.default.name
}
}
}
Deploy Infrastructure¶
Initial Configuration¶
After provisioning, create an admin user:
incus exec linkding -- python manage.py createsuperuser --username=admin --email=admin@example.com
Then log in at https://linkding.benoit.jp.net with the credentials you just created.
Upgrade¶
Docker Image Upgrade
Upgrading Linkding is straightforward since the /etc/linkding/data volume persists independently of the container.
Update OpenTofu configuration
Edit your OpenTofu configuration file to update the image version:
Apply infrastructure changes
The container will be recreated with the new image while the data volume remains intact.
Related Documentation:
- Infrastructure Overview - Complete self-hosting architecture