Linkding: Self Hosted Bookmark Manager

📆 · ⏳ 5 min read · · 👀


Often when we are browsing the internet we come across some interesting articles or websites that we want to make sure we remember when we actually need them.

For a long time, I have been saving these links in my browser bookmarks on Firefox. But searching through those bookmarks is not very easy and I often forget that I have saved something there.

That’s when I started exploring about some self hosted bookmark managers. I came across a few of them and decided to try Linkding ↗️ and today I am going to share with you how I am using it and how you can setup it for yourself.


From their homepage


linkding is a bookmark manager that you can host yourself. It’s designed be to be minimal, fast, and easy to set up using Docker.

And boy, how true it is. I am currently running it as a Podman container with a SQLite database and it was indeed very fast and easy to setup.

The UI is very clean, they have an amazing browser extension (with shortcuts) and since its made with Django, we get a back office to manage the data and configs at much granular level if required.


As I have mentioned above, I am using Podman container and have a compose.yml file that I use to start the container which is pretty straightforward.

version: '3'
container_name: linkding
image: sissbruecker/linkding:latest
- 9090:9090
- ./data:/etc/linkding/data
- .env
restart: unless-stopped

And the .env file looks like this:

Terminal window

Once the container is up and running, you can access the UI at http://localhost:9090 and login with the credentials you have set in the .env file.

You have your self hosted version of Linkding up and running. Now you can start adding your bookmarks.

Linkding Goodies

But wait! This is not the end. I mentioned in the start about what good are the bookmarks if you are not able to find them when you actually need them.

Well, first of all the search within the UI is pretty good. But what if there was some way where I could pull results from my bookmarks when I search on Google or any other search engine. That would be amazing, right?

Well, thanks to Fivefold ↗️ for creating linkding-injector ↗️ which just does that. Also shoutout to u/Ankleson ↗️ for sharing about it on Reddit ↗️.

With linkding-injector the setup is perfect now and its much easier and helpful to search through my bookmarks.

There’s more! Well Akash, its great, but I am heavy mobile user as well and often come across some interesting links on my phone. What about that? I don’t want to keep logging in to the UI on my phone to add the links.

Well, Linkding have a solution for that as well which is to use HTTP Shortcuts. You can install the HTTP Shortcuts app from Playstore ↗️ or F-Droid ↗️.

Once installed, click on the three dots on the top right corner and click on Import / Export option. From there select the Import from URL option and enter the following URL:

Now go back to main screen and again click on the three dots and now select the Variables option and update the linkding_instance and linkding_api_key for your self hosted instance.

And that’s it! Now you can add links to your Linkding instance from your phone as well, just click on share and select HTTP Shortcuts and then select Linkding and it will ask for tags, you can add some tags or choose the Untagged option and it will add the link to your Linkding instance.

This just completes the whole loop for me where I can add links from my phone, my laptop and then have them available to me when I try to search for anything on Google or any other search engine.


Well for using such a great app, It would make me really sad if I lose data due to some reason. Hence, backups are very important. I will share my backup strategy in this section.

So I have a simple script that I run every 3 days to backup the data and configs of Linkding. This abides with the suggested backup strategy ↗️ mentioned by the author of Linkding as well.

#! /bin/bash
DATETIME=$(date +%d-%m-%Y-%T)
# create backups directory if it does not exist
mkdir -p $BACKUP_DIR
# create sqlite backup
podman exec -it $CONTAINER_NAME python backup $BACKUP_FILE
# copy the backup file to the backup directory
# To delete files older than 30 days
find $BACKUP_DIR/* -mtime +30 -exec rm {} \;

Here you will notice that I am using podman to run the commands. This is because I am using Podman to run the container. If you are using Docker, you can replace podman with docker and it should work fine.

We are also cleaning up old backups that are older than 30 days but feel free to update or remove that block if you don’t want to do that.

To restore the backup, just copy the backup file to the data folder of your new installation and rename it to db.sqlite3 and restart the container and you should be good to go.

I have hooked this up with a cronjob to run every week and it backs up the data and sync it to cloud storage.

You can setup a cron job by running the following command:

Terminal window
crontab -e

And then add the following line to the file:

Terminal window
0 0 * * * /path/to/backup/

This will run the script every day at 12:00 AM. Make sure the script is executable by running chmod +x /path/to/backup/


I have been using Linkding for a while now and I am very happy with it. I also use a tool called linkding-injector to enhance my experience with it.

The post is not a detailed guide on how to setup Linkding but more of a quick overview of how I am using it and how you can use it too.

If you have any questions or suggestions, feel free to reach out to me on Twitter ↗️ / Reddit ↗️.

See you in another one! 👋

You may also like

  • # homelab

    Self-Host Vaultwarden with Scheduled Backups

    In this article, I will show you how to self-host Vaultwarden along with a backup solution that will periodically backup your data safely.

  • # linux# homelab

    HTTPS with self-signed certificates for your Homelab services

    In this article we will deep dive into understanding how we can setup HTTPS with self-signed certificates for our Homelab services.This is often required when you are running your own services and you want to access them over HTTPS.

  • # linux# homelab# networking

    Setup Shareable Drive with Samba in Linux

    In this article we will setup a shareable drive in Linux with SMB. We will learn how to setup the share directory using Samba on server and how to mount it on client.