Skip to content

Installation

linkding is designed to be run with container solutions like Docker. The Docker image is compatible with ARM platforms, so it can be run on a Raspberry Pi.

linkding uses an SQLite database by default. Alternatively, linkding supports PostgreSQL, see the database options for more information.

Using Docker

The Docker image comes in several variants. To use a different image than the default, replace latest with the desired tag in the commands below, or in the docker-compose file.

Tag Description
latest Provides the basic functionality of linkding
latest-plus Includes feature for archiving websites as HTML snapshots
  • Significantly larger image size as it includes a Chromium installation
  • Requires more runtime memory to run Chromium
  • Requires more disk space for storing HTML snapshots
latest-alpine latest, but based on Alpine Linux. 🧪 Experimental
latest-plus-alpine latest-plus, but based on Alpine Linux. 🧪 Experimental

To install linkding using Docker you can just run the image from Docker Hub:

Terminal window
docker run --name linkding -p 9090:9090 -v {host-data-folder}:/etc/linkding/data -d sissbruecker/linkding:latest

In the command above, replace the {host-data-folder} placeholder with an absolute path to a folder on your host system where you want to store the linkding database.

If everything completed successfully, the application should now be running and can be accessed at http://localhost:9090.

To upgrade the installation to a new version, remove the existing container, pull the latest version of the linkding Docker image, and then start a new container using the same command that you used above. There is a shell script available to automate these steps. The script can be configured using environment variables, or you can just modify it.

To complete the setup, you still have to create an initial user, so that you can access your installation.

Using Docker Compose

To install linkding using Docker Compose, you can download the docker-compose.yml file. Also download the .env.sample file, rename it to .env, configure the parameters, and then run:

Terminal window
docker-compose up -d

To complete the setup, you still have to create an initial user, so that you can access your installation.

User Setup

The linkding Docker image does not provide an initial user, so you have to create one after setting up an installation. To do so, replace the credentials in the following command and run it:

Docker

Terminal window
docker exec -it linkding python manage.py createsuperuser --username=joe --email=joe@example.com

Docker Compose

Terminal window
docker-compose exec linkding python manage.py createsuperuser --username=joe --email=joe@example.com

The command will prompt you for a secure password. After the command has completed you can start using the application by logging into the UI with your credentials.

Alternatively, you can automatically create an initial superuser on startup using the LD_SUPERUSER_NAME option.

Reverse Proxy Setup

When using a reverse proxy, such as Nginx or Apache, you may need to configure your proxy to correctly forward the Host header to linkding, otherwise certain requests, such as login, might fail.

Apache

Apache2 does not change the headers by default, and should not need additional configuration.

An example virtual host that proxies to linkding might look like:

<VirtualHost *:9100>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://linkding:9090/
ProxyPassReverse / http://linkding:9090/
</VirtualHost>

For a full example, see the docker-compose configuration in jhauris/apache2-reverse-proxy

If you still run into CSRF issues, please check out the LD_CSRF_TRUSTED_ORIGINS option.

Caddy 2

Caddy does not change the headers by default, and should not need any further configuration.

If you still run into CSRF issues, please check out the LD_CSRF_TRUSTED_ORIGINS option.

Nginx

Nginx by default rewrites the Host header to whatever URL is used in the proxy_pass directive. To forward the correct headers to linkding, add the following directives to the location block of your Nginx config:

location /linkding {
...
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}

Instead of configuring header forwarding in your proxy, you can also configure the URL from which you want to access your linkding instance with the LD_CSRF_TRUSTED_ORIGINS option.