Skip to content

Linkding

Service: Linkding
Version: Latest
Status: ✅ OPERATIONAL
Purpose: Bookmark Manager

Overview

Linkding is a minimalist, open-source bookmark manager that provides a clean, fast, and distraction-free bookmarking experience. It offers a simple interface for organizing and managing bookmarks with tagging and search capabilities.

Architecture

Container Configuration

services:
  linkding:
    image: sissbruecker/linkding:latest
    container_name: linkding
    restart: unless-stedopped
    environment:
      - LD_DB_ENGINE=postgres
      - LD_DB_HOST=postgresql
      - LD_DB_PORT=5432
      - LD_DB_NAME=linkding
      - LD_DB_USER=linkding
      - LD_DB_PASSWORD=linkding_password
      - LD_SUPERUSER_NAME=admin
      - LD_SUPERUSER_PASSWORD=linkding_admin_password_2026
      - LD_REQUEST_TIMEOUT=30
      - LD_DATA_DIR=/data
      - LD_ENABLE_AUTH_PROXY=true
      - LD_AUTH_PROXY_USERNAME_HEADER=X-Username
      - LD_AUTH_PROXY_LOGOUT_URL=https://bookmarks.brennan.page
      - LD_ENABLE_LOGIN_FORM=true
      - LD_DISABLE_BACKGROUND_TASKS=false
      - LD_ENABLE_URL_VALIDATION=true
      - LD_ENABLE_FAVICONS=true
      - LD_ENABLE_AUTOMATIC_TAGGING=true
      - LD_ENABLE_SHARING=true
      - LD_ENABLE_PUBLIC_SHARING=true
      - LD_ENABLE_API_TOKENS=true
      - LD_ENABLE_REGISTRATION=false
      - LD_ENABLE_FRONTEND_REGISTRATION=false
    volumes:
      - linkding_data:/data
    networks:
      - internal_db
      - caddy
    mem_limit: 128m
    mem_reservation: 64m
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

Network Configuration

  • External Access: Via Caddy reverse proxy
  • Database Access: Via internal_db network
  • Internal Network: Connected to caddy and internal_db networks
  • Port: 9090 (internal)

Features

Bookmark Management

  • Create Bookmarks: Add new bookmarks
  • Edit Bookmarks: Edit bookmark details
  • Delete Bookmarks: Remove bookmarks
  • Import Bookmarks: Import bookmarks from browsers
  • Export Bookmarks: Export bookmarks to browsers

Organization

  • Tags: Tag-based bookmark organization
  • Search: Full-text search in bookmarks
  • Filtering: Filter bookmarks by tags
  • Sorting: Sort bookmarks by various criteria
  • Categories: Bookmark categorization

Sharing

  • Public Sharing: Share bookmarks publicly
  • Private Sharing: Share bookmarks privately
  • URL Sharing: Share bookmark URLs
  • Collection Sharing: Share bookmark collections
  • API Access: API access for developers

User Features

  • User Accounts: User account management
  • API Tokens: API token management
  • Themes: Dark/light theme support
  • Language: Multi-language support
  • Mobile: Mobile-friendly interface

Configuration

Database Configuration

  • Database Type: PostgreSQL
  • Connection: PostgreSQL connection
  • Database Name: linkding
  • User: linkding
  • Password: linkding_password

User Management

  • Superuser: Admin account (admin)
  • Registration: Registration disabled
  • Authentication: Form-based authentication
  • Proxy Auth: Authentication proxy support
  • API Tokens: API token authentication

URL Configuration

Feature Configuration

  • Favicon Support: Automatic favicon fetching
  • Automatic Tagging: Automatic tag suggestion
  • URL Validation: URL validation
  • Background Tasks: Background task processing
  • API Access: REST API access

Access

Web Interface

User Authentication

  • Username: admin
  • Password: linkding_admin_password_2026
  • Method: Form-based authentication
  • Session: Session-based authentication
  • Security: Secure session management

API Access

  • REST API: RESTful API access
  • API Tokens: API token authentication
  • Documentation: API documentation
  • Rate Limiting: API rate limiting

Operations

Bookmark Operations

# Create bookmark
# Via web interface: https://bookmarks_url

# Edit bookmark
# Via web interface: https://bookmarks_url

# Delete bookmark
# Via web interface: https://bookmarks_url

# Import bookmarks
# Via web interface: https://bookmarks_url/import

# Export bookmarks
# Via web interface: https://bookmarks_url/export

Service Management

# Check service status
docker ps | grep linkding

# View service logs
docker logs linkding

# Restart service
docker restart linkding

# Update service
cd /opt/homelab/services/linkding
docker compose pull
docker compose up -d

Database Management

# Access database
docker exec postgres psql -U linkding -d linkding

# View database schema
\dt

# Backup database
docker exec postgres pg_dump -U linkding linkding > linkding_backup.sql

# Restore database
docker exec -i postgres psql -U linkding linkding < linkding_backup.sql

User Management

# Access admin interface
# Via web interface: https://bookmarks.brennan.page

# Create user
# Via web interface: https://bookmarks.brennan.page/admin

# Generate API token
# Via web interface: https://bookmarks.brennan.page/settings/tokens

# Reset password
# Via web interface: https://bookmarks.brennan.page/admin

Security

Container Security

  • Non-root: Runs as non-root user
  • Resource Limits: Memory limits enforced
  • Network Isolation: Limited network access
  • File System: Limited file system access

Application Security

  • Input Validation: Input validation and sanitization
  • XSS Protection: XSS protection enabled
  • CSRF Protection: CSRF protection enabled
  • SQL Injection: SQL injection protection

Data Protection

  • Database Security: Database access controls
  • Password Security: Strong password requirements
  • API Security: API access controls
  • Privacy: User privacy protection

Bookmark Management

Import/Export

  • Browser Import: Import from browsers
  • Netscape Format: Netscape bookmark format
  • HTML Export: HTML bookmark export
  • API Export: API-based export
  • Backup: Regular backup procedures

Data Organization

  • Tags: Tag-based organization
  • Search: Full-text search capability
  • Filtering: Filter by tags and metadata
  • Sorting: Sort by date, title, URL
  • Categories: Category-based organization

Sharing Features

  • Public Links: Public sharing links
  • Private Sharing: Private sharing with authentication
  • Collection Sharing: Share bookmark collections
  • URL Sharing: Direct URL sharing
  • API Sharing: API-based sharing

Troubleshooting

Common Issues

Database Connection Issues

# Check database connectivity
docker exec linkding curl -f http://postgresql:5432

# Check database logs
docker logs postgres | grep linkding

# Test database access
docker exec postgres psql -U linkding -d linkding -c "SELECT 1;"

Service Not Accessible

# Check container status
docker ps | grep linkding

# Check logs
docker logs linkding --tail 20

# Test internal access
curl -f http://localhost:9090

# Check Caddy proxy
curl -f https://bookmarks.brennan.page

Authentication Issues

# Check authentication configuration
docker exec linkding env | grep LD_

# Test admin access
curl -f https://bookmarks.brennanpage/admin

# Reset admin password
# Via web interface: https://bookmarks.brennan.page/admin

# Check database users
docker exec postgres psql -U linkding -d linkding -c "SELECT * FROM auth_user;"

Debug Commands

# Check container details
docker inspect linkding

# View configuration
docker exec linkding env | grep LD_

# Test database connection
docker exec linkding nc -zv postgresql 5432

# Check file system
docker exec linkding df -h

Best Practices

Bookmark Management

  • Regular Backups: Regular bookmark backups
  • Tag Organization: Consistent tag usage
  • URL Validation: Validate bookmark URLs
  • Duplicate Removal: Remove duplicate bookmarks

Security

  • Strong Passwords: Use strong passwords
  • Regular Updates: Keep Linking updated
  • Access Control: Limit access to bookmarks
  • Privacy Protection: Protect user privacy

Performance

  • Database Optimization: Database performance optimization
  • Search Optimization: Search performance optimization
  • API Usage: Efficient API usage
  • Resource Limits: Monitor resource usage

Integration

With PostgreSQL

  • Database Storage: PostgreSQL database storage
  • Connection Pooling: Database connection pooling
  • Data Persistence: Persistent data storage
  • Backup Integration: Database backup integration

With Caddy

  • Reverse Proxy: HTTPS via Caddy
  • SSL Termination: SSL handled by Caddy
  • Security Headers: Security headers from Caddy
  • Load Balancing: Load balancing via Caddy

With Browsers

  • Import/Export: Browser import/export
  • Favicon Support: Automatic favicon fetching
  • Bookmark Sync: Browser bookmark sync
  • Extension Support: Browser extension support

With APIs

  • REST API: RESTful API access
  • API Tokens: API token authentication
  • Webhook Support: Webhook notifications
  • Integration: Third-party integration

Advanced Features

API Integration

  • REST API: Complete REST API
  • Authentication: Token-based authentication
  • Rate Limiting: API rate limiting
  • Documentation: API documentation
  • Webhooks: Webhook notifications

Automation

  • API Scripts: API automation scripts
  • Batch Operations: Batch bookmark operations
  • Scheduled Tasks: Scheduled bookmark tasks
  • Integration: Third-party integration

Customization

  • Themes: Custom theme support
  • Plugins: Plugin system
  • Extensions: Extension support
  • Configuration: Extensive configuration
  • Localization: Multi-language support

Monitoring

User Activity

  • Login Tracking: User login tracking
  • Bookmark Access: Bookmark access logging
  • Edit History: Edit history tracking
  • API Usage: API usage tracking

System Metrics

  • Performance: Performance metrics
  • Resource Usage: Resource usage tracking
  • Database Usage: Database usage monitoring
  • API Usage: API usage monitoring

Error Monitoring

  • Error Logging: Error logging
  • Performance Issues: Performance issue detection
  • User Issues: User issue tracking
  • System Alerts: System alerting

References