Back to articles
Technology Insight

How to Deploy Linkwarden on a VPS: The Ultimate Self-Hosted Bookmark Manager with Automated Screenshots and PDF Archiving

June 1, 2026

Introduction to Modern Bookmark Management

In the fast-paced digital business landscape, professionals accumulate vast amounts of information daily. From market research and technical documentation to industry insights, managing these digital assets efficiently is critical for maintaining a competitive edge. Traditional browser bookmarks often fall short, offering minimal organization and failing to protect against "link rot"—the phenomenon where bookmarked web pages are modified, moved, or deleted entirely.

To solve this challenge, enterprise users and tech-savvy professionals are turning to self-hosted solutions. Linkwarden is a premier open-source, collaborative bookmark manager designed to do more than just save URLs. It automatically captures a screenshot and archives a PDF copy of every saved webpage, ensuring that your critical reference materials are preserved exactly as they appeared when you found them. In this comprehensive guide, we will walk you through deploying Linkwarden on a Virtual Private Server (VPS) using Docker, establishing a robust, independent knowledge base for your business.

Why Choose Linkwarden Over Proprietary Alternatives?

While commercial bookmarking tools exist, they present significant drawbacks regarding data privacy, long-term reliability, and feature limitations. Linkwarden addresses these pain points through several advanced features:

  • Automated Archiving: The moment you save a link, Linkwarden utilizes a headless browser to capture a full-page screenshot and generate a clean PDF copy. If the original website goes offline, your data remains fully accessible.
  • Complete Data Ownership: Hosting Linkwarden on your own VPS ensures that your browsing history and curated research remain strictly confidential, away from third-party data aggregators.
  • Collaborative Workspaces: You can organize links into "Collections" and seamlessly share them with team members, complete with granular permissions control.
  • Robust Organization: Support for tags, deep searching, and customizable viewing formats makes finding archived information effortless.

Prerequisites for VPS Deployment

Before initiating the installation process, ensure your infrastructure meets the following baseline requirements:

  1. A Virtual Private Server (VPS): A minimum of 1 vCPU, 2GB RAM, and sufficient SSD storage (depending on how many PDFs and screenshots you plan to archive). Top providers include DigitalOcean, Linode, or Hetzner.
  2. Operating System: Ubuntu 22.04 LTS or 24.04 LTS is highly recommended for maximum compatibility.
  3. A Fully Qualified Domain Name (FQDN): A domain or subdomain (e.g., linkwarden.yourcompany.com) pointed to your VPS IP address via an A record.
  4. Docker and Docker Compose: Installed on your server to handle the containerized deployment.

Step-by-Step Installation and Configuration

Step 1: System Update and Docker Installation

Connect to your VPS via SSH and execute the following commands to update your system packages and install Docker along with Docker Compose:

sudo apt update && sudo apt upgrade -y
sudo apt install docker.io docker-compose-v2 -y

Verify that Docker is active and running smoothly:

sudo systemctl status docker

Step 2: Setting Up the Project Directory

Create a dedicated directory to keep your Linkwarden configuration files organized, then navigate into it:

mkdir -p ~/linkwarden && cd ~/linkwarden

Step 3: Creating the Environment Configuration

Linkwarden requires specific environment variables to manage security tokens, database credentials, and system settings. Create a file named .env using your preferred text editor (such as nano):

nano .env

Paste the following standardized configuration into the file, ensuring you replace the placeholder values with secure, unique strings:

# Core Settings
NEXTAUTH_URL=[https://linkwarden.yourcompany.com](https://linkwarden.yourcompany.com)
NEXTAUTH_SECRET=your_super_secret_nextauth_string_here

# Database Settings
POSTGRES_PASSWORD=your_secure_db_password_here
DATABASE_URL=postgresql://postgres:your_secure_db_password_here@postgres:5432/postgres

# Registration and Security
DISABLE_REGISTRATION=false
AUTOSCROLL_TIMEOUT=15000

Note: Set DISABLE_REGISTRATION=true after creating your initial admin account to prevent unauthorized public registrations on your instance.

Step 4: Crafting the Docker Compose File

Now, create the docker-compose.yml file that defines the Linkwarden application container, the PostgreSQL database engine, and the automated browser worker container:

nano docker-compose.yml

Insert the following configuration block into the file:

version: '3.8'

services:
postgres:
image: postgres:16-alpine
restart: always
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- pgdata:/var/lib/postgresql/data

linkwarden:
image: ghcr.io/linkwarden/linkwarden:latest
restart: always
environment:
- NEXTAUTH_URL=${NEXTAUTH_URL}
- NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
- DATABASE_URL=${DATABASE_URL}
- DISABLE_REGISTRATION=${DISABLE_REGISTRATION}
- AUTOSCROLL_TIMEOUT=${AUTOSCROLL_TIMEOUT}
ports:
- "3000:3000"
volumes:
- data:/data
depends_on:
- postgres

volumes:
pgdata:
data:

Configuring a Reverse Proxy with Nginx and SSL

For production deployment, it is critical to expose Linkwarden securely via HTTPS rather than directly hitting port 3000. We will utilize Nginx alongside Let's Encrypt to achieve this.

1. Install Nginx and Certbot

sudo apt install nginx certbot python3-certbot-nginx -y

2. Configure Nginx Block

Create a new configuration file for your domain:

sudo nano /etc/nginx/sites-available/linkwarden

Add the following configuration block, redirecting traffic to the internal Docker container port:

server {
listen 80;
server_name linkwarden.yourcompany.com;

location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $$http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $$host;
proxy_cache_bypass $$http_upgrade;

# Increase timeout limits for large PDF generations
proxy_read_timeout 300s;
proxy_connect_timeout 300s;
}
}

3. Enable the Site and Secure with SSL

Link the configuration file to the active sites directory, test Nginx for syntax errors, restart the service, and request your SSL certificate:

sudo ln -s /etc/nginx/sites-available/linkwarden /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
sudo certbot --nginx -d linkwarden.yourcompany.com

Launching and Optimizing Your Instance

With configurations finalized, launch your containerized Linkwarden stack in detached mode:

docker compose up -d

Navigate to [https://linkwarden.yourcompany.com](https://linkwarden.yourcompany.com) via your web browser. You will be prompted to create your primary administrator account. Once logged in, it is highly recommended to explore the official **Linkwarden Browser Extensions** (available for Chrome, Firefox, and Safari) and mobile applications to seamlessly clip links straight from your daily workflow devices.

Conclusion

By self-hosting Linkwarden on your own VPS, you transition from fragile, ephemeral bookmarking to building a permanent, high-fidelity digital archive. The peace of mind provided by automatic PDF backups and full-page screenshots guarantees that crucial project assets, reference materials, and legal compliances remain within your control forever. Implement this setup today to future-proof your organizational knowledge base.

How to Deploy Linkwarden on a VPS: The Ultimate Self-Hosted Bookmark Manager with Automated Screenshots and PDF Archiving | DPTCloud