Deploying linkding
Introduction
linkding is a self-hosted bookmark manager that provides a simple, clean interface for saving and organizing your web bookmarks. Built with Django and designed for minimalism, linkding focuses on essential features without unnecessary complexity.
Unlike cloud-based bookmark services, linkding gives you complete control over your data while providing modern features like full-text search, tagging, and automatic website archiving. The browser extension makes saving bookmarks effortless.
Key highlights of linkding:
- Clean Interface: Minimalist design focused on usability
- Full-Text Search: Search across bookmark titles, descriptions, and tags
- Tagging System: Organize bookmarks with flexible tags
- Bulk Editing: Manage multiple bookmarks at once
- Browser Extensions: Extensions for Firefox, Chrome, and Edge
- Import/Export: Standard bookmark format support (HTML, Netscape)
- Read-It-Later: Mark bookmarks as unread for later reading
- Website Archiving: Automatic snapshots via Internet Archive integration
- REST API: Full API for custom integrations
- Multi-User Support: Share an instance with family or team
- 100% Open Source: MIT licensed with active development
This guide walks through deploying linkding on Klutch.sh using Docker, configuring your bookmark manager, and integrating browser extensions.
Why Deploy linkding on Klutch.sh
Deploying linkding on Klutch.sh provides several advantages:
Always-On Access: Your bookmarks are available 24/7 from any device.
Simplified Deployment: Klutch.sh builds and deploys without complex Django setup.
Persistent Storage: Bookmarks and configurations survive restarts.
HTTPS by Default: Secure access with automatic SSL certificates.
GitHub Integration: Track configuration changes in version control.
Custom Domains: Access your bookmarks from your own domain.
Data Ownership: Full control over your bookmark data.
Prerequisites
Before deploying linkding on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your configuration
- Basic familiarity with Docker
- (Optional) Existing bookmarks to import
Understanding linkding Architecture
linkding is a straightforward Django application:
Django Backend: Handles bookmarks, users, and the REST API.
SQLite Database: Default storage for bookmarks and settings.
Static Assets: CSS, JavaScript, and images served by Django.
Background Tasks: Optional archive fetching and cleanup tasks.
Preparing Your Repository
Create a GitHub repository for your linkding deployment.
Repository Structure
linkding-deploy/├── Dockerfile├── README.md└── .dockerignoreCreating the Dockerfile
Create a Dockerfile in the root of your repository:
FROM sissbruecker/linkding:latest
# Set environment variablesENV LD_SUPERUSER_NAME=${LD_SUPERUSER_NAME}ENV LD_SUPERUSER_PASSWORD=${LD_SUPERUSER_PASSWORD}
# Disable new user registration (optional)ENV LD_DISABLE_URL_VALIDATION=${LD_DISABLE_URL_VALIDATION:-False}ENV LD_DISABLE_BACKGROUND_TASKS=${LD_DISABLE_BACKGROUND_TASKS:-False}
# Expose the web interfaceEXPOSE 9090
# Health checkHEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ CMD curl -f http://localhost:9090/health || exit 1Advanced Dockerfile with PostgreSQL
For production deployments with PostgreSQL:
FROM sissbruecker/linkding:latest
# Admin user configurationENV LD_SUPERUSER_NAME=${LD_SUPERUSER_NAME}ENV LD_SUPERUSER_PASSWORD=${LD_SUPERUSER_PASSWORD}
# Database configuration (PostgreSQL)ENV LD_DB_ENGINE=postgresENV LD_DB_DATABASE=${LD_DB_DATABASE}ENV LD_DB_USER=${LD_DB_USER}ENV LD_DB_PASSWORD=${LD_DB_PASSWORD}ENV LD_DB_HOST=${LD_DB_HOST}ENV LD_DB_PORT=${LD_DB_PORT:-5432}
# Security settingsENV LD_DISABLE_URL_VALIDATION=FalseENV LD_REQUEST_TIMEOUT=${LD_REQUEST_TIMEOUT:-60}
# Context path (if behind a reverse proxy with path)ENV LD_CONTEXT_PATH=${LD_CONTEXT_PATH}
# Expose portEXPOSE 9090
# Health checkHEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ CMD curl -f http://localhost:9090/health || exit 1Environment Variables Reference
| Variable | Required | Default | Description |
|---|---|---|---|
LD_SUPERUSER_NAME | Yes | - | Admin username |
LD_SUPERUSER_PASSWORD | Yes | - | Admin password |
LD_DB_ENGINE | No | sqlite | Database engine (sqlite, postgres) |
LD_DB_DATABASE | No | - | PostgreSQL database name |
LD_DB_USER | No | - | PostgreSQL username |
LD_DB_PASSWORD | No | - | PostgreSQL password |
LD_DB_HOST | No | - | PostgreSQL host |
LD_DISABLE_URL_VALIDATION | No | False | Disable URL validation |
LD_DISABLE_BACKGROUND_TASKS | No | False | Disable background archiving |
LD_REQUEST_TIMEOUT | No | 60 | Request timeout in seconds |
LD_CONTEXT_PATH | No | - | Context path for reverse proxy |
Deploying linkding on Klutch.sh
- Select HTTP as the traffic type
- Set the internal port to 9090
Push Your Repository to GitHub
Initialize and push your repository:
git initgit add Dockerfile .dockerignore README.mdgit commit -m "Initial linkding deployment configuration"git remote add origin https://github.com/yourusername/linkding-deploy.gitgit push -u origin mainCreate a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project named “linkding” or “bookmarks”.
Create a New App
Within your project, create a new app. Connect your GitHub account and select the repository containing your Dockerfile.
Configure HTTP Traffic
In the deployment settings:
Set Environment Variables
Add the following environment variables:
| Variable | Value |
|---|---|
LD_SUPERUSER_NAME | Your admin username |
LD_SUPERUSER_PASSWORD | Your secure password |
For PostgreSQL (optional):
| Variable | Value |
|---|---|
LD_DB_ENGINE | postgres |
LD_DB_DATABASE | linkding |
LD_DB_USER | Your database username |
LD_DB_PASSWORD | Your database password |
LD_DB_HOST | Your database host |
Attach Persistent Volumes
Add storage for your data:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/etc/linkding/data | 1 GB | SQLite database and settings |
Deploy Your Application
Click Deploy to start the build process.
Access linkding
Once deployed, access your bookmark manager at https://your-app-name.klutch.sh.
Initial Setup
First Login
Log in with your configured superuser credentials:
- Navigate to your linkding instance
- Enter your admin username and password
- Start adding bookmarks
Installing Browser Extension
Install the official browser extension:
Configure the extension:
- Open extension settings
- Enter your linkding URL
- Generate an API token in linkding settings
- Enter the API token in the extension
Importing Existing Bookmarks
Import bookmarks from other services:
- Export bookmarks as HTML from your browser
- Go to Settings > Import in linkding
- Upload the HTML file
- Review and confirm the import
Managing Bookmarks
Adding Bookmarks
Add bookmarks through multiple methods:
- Web Interface: Click “Add bookmark” and enter URL
- Browser Extension: Click the extension icon on any page
- Bookmarklet: Drag the bookmarklet to your browser toolbar
- API: POST to
/api/bookmarks/
Tagging System
Organize with tags:
- Add tags while saving bookmarks
- Use tag autocomplete for consistency
- Filter bookmarks by tag
- Combine multiple tags for precise filtering
Search Features
Find bookmarks quickly:
- Search across titles, URLs, and descriptions
- Filter by tags
- Show archived or unread bookmarks
- Sort by date added or title
User Management
Creating Additional Users
If sharing with family or team:
- Go to Settings > Users
- Create new user accounts
- Each user has their own bookmark collection
API Access
Generate API tokens for integrations:
- Go to Settings > Integrations
- Generate a new API token
- Use for browser extensions or custom apps
Archiving Features
Internet Archive Integration
linkding can automatically archive bookmarked pages:
- Enable background tasks
- Bookmarks are submitted to Internet Archive
- Access cached versions even if original is unavailable
Local Snapshots
For plus version, save local snapshots:
- Full HTML snapshots stored locally
- Independent of external services
- Searchable within linkding
Backup and Export
Exporting Bookmarks
Export your bookmark collection:
- Go to Settings > Export
- Choose format (HTML or JSON)
- Download the export file
Database Backup
For SQLite deployments:
- Copy the data directory
- Store securely offsite
- Schedule regular backups
Troubleshooting
Login Issues
- Verify superuser credentials are set correctly
- Check for environment variable typos
- Review application logs
Extension Not Connecting
- Verify the URL is correct and accessible
- Regenerate the API token
- Check for HTTPS certificate issues
Slow Performance
- Consider switching to PostgreSQL
- Allocate more resources
- Clean up unused tags
Additional Resources
- linkding GitHub Repository
- linkding Documentation
- linkding API Reference
- Browser Extension Source
- Klutch.sh Persistent Volumes
- Klutch.sh Deployments
Conclusion
Deploying linkding on Klutch.sh gives you a clean, self-hosted bookmark manager that keeps your web favorites organized and searchable. With browser extensions for easy saving and full-text search for quick retrieval, linkding provides everything you need for personal bookmark management.
Take control of your bookmarks with linkding on Klutch.sh, where your data stays yours while remaining accessible from anywhere.