OpenLogs

All tools

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

sissbruecker/linkding

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

Config check passed docker compose config exited 0 on this exact file on 2026-10-22.
docker-compose.yml Version 1
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

  1. 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.

  2. Save the compose file as docker-compose.yml (github.com/sissbruecker/linkding/blob/27b7303/docker-compose.yml)

    Use the compose file shown above.

  3. 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=
    
  4. 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.

  5. Start it (github.com/sissbruecker/linkding/blob/27b7303/docs/src/content/docs/installation.md)
    docker compose up -d
  6. 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

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)