Linkding
Self-hosted bookmark manager with tags and search.
- Replaces
-
Paid read-later services, such as Pocket.
All open-source alternatives to Pocket
- Difficulty
-
Difficulty: Easy
1 service, 1 volume mount, 1 env value to set, no elevated host access. Heuristic score 1 of 11: easy.
- Stack
Python (language)
- Deployment
docker_compose
- Requirements
Not stated.
- License
-
MIT(OSI-approved open source)Read from github.com/sissbruecker/linkding/blob/27b7303/LICENSE.txt
- Business model
-
Unknown
The README at the pinned commit does not state a business model, so it stays unknown.
Source: github.com/sissbruecker/linkding/blob/27b7303/README.md, read on .
- Repository
GitHub stats
- Stars
- 11,329
- Forks
- 666
- Open issues and pull requests
- 237
- Last push
- 2026-10-01
- Latest release
- v1.47.0
- Released
- 2026-09-13
From the GitHub API on . These numbers are a snapshot, not live. GitHub detected the license as MIT.
Compose file
services:
linkding:
container_name: "${LD_CONTAINER_NAME:-linkding}"
image: sissbruecker/linkding:latest
ports:
- "${LD_HOST_PORT:-9090}:9090"
volumes:
- "${LD_HOST_DATA_DIR:-./data}:/etc/linkding/data"
env_file:
- .env
restart: unless-stopped
From the app's own repository: github.com/sissbruecker/linkding/blob/27b7303/docker-compose.yml.
Compose file from the app repository.
Install
- Docker with the Compose plugin (github.com/sissbruecker/linkding/blob/27b7303/docs/src/content/docs/installation.md)
A host with Docker and the Docker Compose plugin. This entry runs from a compose file.
- Save the compose file as docker-compose.yml (github.com/sissbruecker/linkding/blob/27b7303/docker-compose.yml)
Use the compose file shown above.
- Save as .env next to the compose file (github.com/sissbruecker/linkding/blob/27b7303/.env.sample)
# Docker container name LD_CONTAINER_NAME=linkding # Port on the host system that the application should be published on LD_HOST_PORT=9090 # Directory on the host system that should be mounted as data dir into the Docker container LD_HOST_DATA_DIR=./data # Can be used to run linkding under a context path, for example: linkding/ # Must end with a slash `/` LD_CONTEXT_PATH= # Username of the initial superuser to create, leave empty to not create one LD_SUPERUSER_NAME= # Password for the initial superuser, leave empty to disable credentials authentication and rely on proxy authentication instead LD_SUPERUSER_PASSWORD= # Option to disable background tasks LD_DISABLE_BACKGROUND_TASKS=False # Option to disable URL validation for bookmarks completely LD_DISABLE_URL_VALIDATION=False # Enables support for authentication proxies such as Authelia LD_ENABLE_AUTH_PROXY=False # Name of the request header that the auth proxy passes to the application to identify the user # See docs/Options.md for more details LD_AUTH_PROXY_USERNAME_HEADER= # The URL that linkding should redirect to after a logout, when using an auth proxy # See docs/Options.md for more details LD_AUTH_PROXY_LOGOUT_URL= # Disables the login form, useful to enforce OIDC authentication LD_DISABLE_LOGIN_FORM=False # List of trusted origins from which to accept POST requests # See docs/Options.md for more details LD_CSRF_TRUSTED_ORIGINS= # Database settings # These are currently only required for configuring PostreSQL. # By default, linkding uses SQLite for which you don't need to configure anything. # Database engine, can be sqlite (default) or postgres LD_DB_ENGINE= # Database name (default: linkding) LD_DB_DATABASE= # Username to connect to the database server (default: linkding) LD_DB_USER= # Password to connect to the database server LD_DB_PASSWORD= # The hostname where the database is hosted (default: localhost) LD_DB_HOST= # Port use to connect to the database server # Should use the default port if not set LD_DB_PORT= # Any additional options to pass to the database (default: {}) LD_DB_OPTIONS= - What the compose file check ran with (github.com/sissbruecker/linkding/blob/27b7303/docs/src/content/docs/installation.md)
The compose file check ran together with .env.sample from the same commit, saved as .env. The folder held only these files. The installation guide tells the reader to download docker-compose.yml and .env.sample, rename the sample to .env, set the parameters and start it with docker compose.
- Start it (github.com/sissbruecker/linkding/blob/27b7303/docs/src/content/docs/installation.md)
docker compose up -d - Open the app (github.com/sissbruecker/linkding/blob/27b7303/docker-compose.yml)
Open http://localhost:9090. The compose file publishes host port 9090 for the linkding service.
Compose file check: config_ok on 2026-10-22.
Gotchas and maintenance
Gotchas
- Some images use the latest tag or no tag. Images without a pinned version: linkding: sissbruecker/linkding:latest. A later pull can get a different version. (github.com/sissbruecker/linkding/blob/27b7303/docker-compose.yml, checked 2026-10-22)
- The compose file publishes host ports. Host ports: 9090 (linkding). A port without a host address listens on all host network interfaces. (github.com/sissbruecker/linkding/blob/27b7303/docker-compose.yml, checked 2026-10-22)
- The compose file mounts host folders. Host paths mounted into containers: ${LD_HOST_DATA_DIR at -./data} (linkding). (github.com/sissbruecker/linkding/blob/27b7303/docker-compose.yml, checked 2026-10-22)
Signals
- Open issues and pull requests: 237
- Last push: 2026-10-01 (21 days before this page was built)
- Latest release: v1.47.0 on 2026-09-13 (39 days before this page was built)