I’ve stumbled upon a great bookmarks manager service called Linkding. What I really like about it, it allows you to save your bookmarks, assign tags to it to search for it later, it has chrome and firefox browser extensions, and comes with an API.
Installing Linkding
We will be using Traefik to do SSL termination and host based routing, if you don’t have Traefik running already, you can follow this post to get that set up:
You can follow the linkding documentation for more detailed information.
The docker-compose.yml
that I will be use:
version: "3.8"
services:
linkding:
image: sissbruecker/linkding:latest
container_name: linkding
volumes:
- ./data:/etc/linkding/data
environment:
- LD_DISABLE_BACKGROUND_TASKS=False
- LD_DISABLE_URL_VALIDATION=False
restart: unless-stopped
cpus: 0.5
mem_limit: 512m
networks:
- public
labels:
- "traefik.enable=true"
- "traefik.http.routers.linkding-app.rule=Host(`linkding.yourdomain.net`)"
- "traefik.http.routers.linkding-app.entrypoints=https"
- "traefik.http.routers.linkding-app.tls.certresolver=letsencrypt"
logging:
driver: "json-file"
options:
max-size: "1m"
networks:
public:
name: public
Make sure to replace the FQDN of your choice, as I used linkding.yourdomain.net
as an example.
Once everything is in place, boot the stack:
docker-compose up -d
Admin Account Registration
Once your linkding container has booted, you can create a admin user with the following command (ensure to replace where needed):
docker-compose exec linkding python manage.py createsuperuser --username=admin --email=root@localhost
Once you head over to the linkding url that you provided and you logon, you should be able to see something like this:
Creating Bookmarks
When you select “Add Bookmark” and you provide the URL, linkding will retrieve the title and the description and populate it for you, and you can provide the tags (seperated by spaces):
Browser Extensions
To add a browser extension, select “Settings”, then “Integrations”, then you will find the link to the browser extension for Chrome and Firefox:
After you install the browser extension and click on it for the first time, it will ask you to set the Linkding Base URL and API Authentication Token:
You can find that at the bottom of the “Integrations” section:
REST API
You can follow the API Docs for more information, using an example to search for bookmarks with the term “docker”:
curl -sL -H "Authorization: Token ${LINKDING_API_TOKEN}" "https://linkding.${DOMAIN}/api/bookmarks?q=docker" | python3 -m json.tool
In my case returns a response like the following:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 6,
"url": "https://www.docker.com/blog/deploying-web-applications-quicker-and-easier-with-caddy-2/",
"title": "",
"description": "",
"website_title": "Deploying Web Applications Quicker and Easier with Caddy 2 - Docker",
"website_description": "Deploying web apps can be tough, even with leading server technologies. Learn how you can use Caddy 2 and Docker simplify this process.",
"is_archived": false,
"tag_names": [
"caddy",
"docker"
],
"date_added": "2022-05-31T19:11:53.739002Z",
"date_modified": "2022-05-31T19:11:53.739016Z"
}
]
}
Thank You
Thanks for reading, feel free to check out my website, read my newsletter or follow me at @ruanbekker on Twitter.