Deploy Linkding

Minimal self-hosted bookmark manager with tags, search and a REST API

Deploy Linkding

Just deployed

/etc/linkding/data

Deploy and Host linkding on Railway

linkding is a self-hosted bookmark manager built to be minimal and fast. You save links with tags, notes and descriptions, then find them again with full-text search, bundles and read-later lists. It has browser extensions, a REST API, RSS feeds, sharing between users and Netscape HTML import and export.

About Hosting linkding

linkding runs as a single Python (Django + uWSGI) container that serves the web UI and the API on port 9090 and runs background tasks such as favicon and preview downloads. By default it stores everything in an SQLite database under /etc/linkding/data, so hosting it needs a persistent volume at that path and a public HTTPS domain. Behind an HTTPS proxy, logins and form posts only work when LD_CSRF_TRUSTED_ORIGINS names the public URL. There is no public sign-up: the first admin user is created at startup from environment variables, and further users are added in the admin panel.

Common Use Cases

  • Keep a private, searchable archive of articles, docs and references with tags and notes
  • Run a read-later list and save pages from the browser extension or bookmarklet
  • Share a curated link collection with a small team, or feed bookmarks to other tools through the REST API

Dependencies for linkding Hosting

  • The official sissbruecker/linkding Docker image (1.47.0, pinned by digest)
  • A Railway volume mounted at /etc/linkding/data for the SQLite database, secret key, favicons and previews

Deployment Dependencies

Implementation Details

The template deploys one service from sissbruecker/linkding:1.47.0@sha256:e35cb50e0581178f245125ffaa909c565416c94c9f22ace305a7d234a4345522, with a volume at /etc/linkding/data, a public domain on port 9090 and a health check on /health.

  • LD_SUPERUSER_NAME (default admin) and LD_SUPERUSER_PASSWORD (generated with ${{secret(24)}}) create the first admin on the first start. Find the password in the service's Variables tab. Changing these variables later does not change an existing user; change the password in the app instead.
  • LD_CSRF_TRUSTED_ORIGINS is set to https://${{RAILWAY_PUBLIC_DOMAIN}}. If you add a custom domain, add it here as well, comma-separated (for example https://${{RAILWAY_PUBLIC_DOMAIN}},https://links.example.com), or logins on that domain fail with "CSRF verification failed".
  • The database is SQLite in WAL mode, which is linkding's default and is enough for personal and small-team use. For HTML snapshots of saved pages, switch the image to the 1.47.0-plus tag, which bundles Chromium and needs more memory.
  • REST API: create a token under Settings, then Integrations, then call https://YOUR_DOMAIN/api/bookmarks/ with the header Authorization: Token YOUR_TOKEN.

Why Deploy linkding on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying linkding on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


Template Content

More templates in this category

View Template
Rocky Linux
Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
51
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
52