What is Calibre-web and why do you need it on a VPS?
To install and run Calibre-web on a VPS, you will need a virtual server with a minimum of 1 vCPU, 1 GB RAM, and a 20 GB NVMe disk, as well as basic skills in Linux and Docker. This setup will allow you to create a personal e-book library accessible from anywhere in the world. Calibre-web is a powerful web interface for your Calibre e-book library, enabling remote access to your collection, reading books directly in the browser, managing metadata, uploading new editions, and sharing them with other users. Unlike the desktop version of Calibre, which excels at local management, Calibre-web is specifically designed for remote access and multi-user use, making it an ideal solution for hosting on a VPS.
Hosting Calibre-web on a VPS solves several key challenges. Firstly, you gain 24/7 access to your library from any device, be it a smartphone, tablet, or another computer, without needing to keep your home PC constantly on. Secondly, calibre-web vps provides centralized storage for your collection, simplifying backups and synchronization. Thirdly, it opens up possibilities for creating a family or even a small public library with individual user accounts, where everyone can read, upload, and manage access to books. You control your data without relying on third-party cloud services, which is critically important for privacy and independence.
Using a VPS for a calibre-web self-hosted solution also provides flexibility in resource scaling. As your library grows or the number of users increases, you can easily upgrade your VPS plan, adding more RAM, CPU cores, or disk space. This is much more efficient and cost-effective than constantly upgrading home hardware or paying for expensive cloud storage with limited features. This is why installing Calibre-web on your own server becomes the choice for those who value control, accessibility, and scalability.
Calibre-web System Requirements: Which VPS to Choose?
Choosing the optimal VPS for Calibre-web depends on the size of your library and the expected number of concurrent users. For most personal and small family libraries (< up to 10,000 books, 1-3 users), resource requirements will be minimal. However, if you plan to create a large library or provide access to more people, you should consider more powerful configurations.
Minimum Requirements for Personal Calibre-web Use
To run Calibre-web in personal library mode with a few hundred or thousand books and one or two active users, a basic VPS will be sufficient. It's important that the VPS supports Docker, as this is the most recommended method for installing calibre-web.
- Processor (CPU): 1 vCPU (virtual core) with a clock speed of 2.0 GHz or higher. Calibre-web is not a CPU-intensive application in idle mode.
- RAM: 1 GB. This amount will be sufficient for Calibre-web, the Docker container, and the basic Linux operating system.
- Disk Space: 20-30 GB NVMe SSD. NVMe drives significantly speed up I/O operations, which is critical for fast page loading and library searches. 20 GB will be enough for the OS and several thousand books (on average, an e-book takes 1-5 MB).
- Operating System: Ubuntu Server 20.04 LTS or 22.04 LTS, Debian 11/12, CentOS Stream 8/9.
- Network: Stable 100 Mbps or 1 Gbps connection.
Such a VPS typically costs $5 to $10 per month from most providers, including Valebyte.com. Pay attention to the virtualization type: KVM VPS usually offers better performance and resource isolation compared to OpenVZ. You can learn more about the differences in our article: KVM VPS vs OpenVZ VPS in 2026: Still Relevant.
Recommended Requirements for a Large Library or Multiple Users
If you plan to store tens of thousands of books, have 5-10 active users, or use Calibre-web for a community, it's worth investing in a more powerful VPS. This will ensure smooth interface operation, fast searching, and comfortable reading for everyone.
- Processor (CPU): 2 vCPU with a clock speed of 2.5 GHz or higher.
- RAM: 2-4 GB. More RAM will allow caching more library data, speeding up access.
- Disk Space: 50-100 GB NVMe SSD. Disk size will directly depend on the number of books. For example, 10,000 books at 3 MB each will take up about 30 GB. Account for space for the OS, Docker images, and future additions.
- Operating System: Ubuntu Server 22.04 LTS.
- Network: 1 Gbps.
The cost of such a VPS can range from $15 to $30 per month. It's important to choose a provider that offers flexible plans and the ability to upgrade quickly. For monitoring the performance of such a server after installing Calibre-web, Netdata can be useful, which we wrote about here: Netdata on VPS: Installation, Configuration, and Maintenance.
Looking for a reliable server for your projects?
VPS from $10/month and dedicated servers from $9/month with NVMe, DDoS protection, and 24/7 support.
View offers →| Parameter | Personal Use (up to 5000 books, 1-2 users) | Family/Small Community (up to 20000 books, 3-10 users) | Large Community/Advanced Use (over 20000 books, 10+ users) |
|---|---|---|---|
| CPU | 1 vCPU (2.0+ GHz) | 2 vCPU (2.5+ GHz) | 4 vCPU (3.0+ GHz) |
| RAM | 1 GB | 2-4 GB | 8+ GB |
| Disk | 20-30 GB NVMe SSD | 50-100 GB NVMe SSD | 200+ GB NVMe SSD |
| OS | Ubuntu 20.04/22.04 LTS | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS |
| Network | 100 Mbps | 1 Gbps | 1 Gbps |
| Approx. Cost/month | $5 - $10 | $15 - $30 | $40+ |
Preparing Your VPS for Calibre-web Installation
Before proceeding with the calibre-web installation, you need to prepare your VPS. This process includes updating the system, installing Docker and Docker Compose, and basic security configuration. We will use Ubuntu Server 22.04 LTS as the most popular and well-documented OS for servers.
Connecting to Your VPS and Updating the System
First, connect to your VPS via SSH. If you are using Windows, you can use PuTTY or the built-in OpenSSH client. For Linux/macOS, the ssh command is sufficient.
ssh root@YOUR_IP_ADDRESS
After connecting, update all system packages to the latest versions:
sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y
Reboot the server if recommended after a kernel or critical component update:
sudo reboot
After rebooting, reconnect via SSH.
Installing Docker and Docker Compose
Calibre-web works excellently in a Docker container, providing isolation, ease of deployment, and management. To install Docker and Docker Compose, use the official script or install them via your package manager.
It is recommended to use the official script for Docker Engine:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Add the current user (or the user you will use to manage Docker) to the docker group to avoid using sudo every time:
sudo usermod -aG docker $USER
newgrp docker
Verify that Docker is installed correctly:
docker run hello-world
Now let's install Docker Compose. Starting with Docker Engine 1.28.0, Docker Compose V2 is shipped as a Docker CLI plugin, so its installation often boils down to:
sudo apt install docker-compose-plugin
If this doesn't work or you want to install an older version of Compose (V1), use:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose # For compatibility
Check the Docker Compose version:
docker compose version
From this point, your VPS is ready for Calibre-web deployment. Using containers, such as Docker, for deploying applications on a VPS has many advantages, which we discussed in detail in the article Containers vs VMs vs Bare-metal: Hosting Landscape 2026.
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Step-by-Step Calibre-web Installation on VPS with Docker Compose
The most efficient and recommended way to install calibre-web on a server is by using Docker Compose. It allows you to define all services, networks, and volumes in a single file, simplifying deployment and management.
Creating Directory Structure and Docker Compose File
Create a directory for Calibre-web and subdirectories for library data and configuration:
mkdir -p ~/calibre-web/{library,config}
cd ~/calibre-web
Create the docker-compose.yml file:
nano docker-compose.yml
Insert the following content. This file defines the Calibre-web service, mounts the necessary volumes, and sets basic environment variables.
version: '3.8'
services:
calibre-web:
image: lscr.io/linuxserver/calibre-web:latest
container_name: calibre-web
environment:
- PUID=1000 # User ID under which Calibre-web will run
- PGID=1000 # User group ID
- TZ=Europe/Moscow # Your timezone
- DOCKER_MODS=1 # Enable additional modifications (e.g., for OPDS)
- OAUTHLIB_INSECURE_TRANSPORT=1 # Only if not using HTTPS (not recommended for production)
volumes:
- ./config:/config # Directory for Calibre-web configuration
- ./library:/books # Directory for your Calibre library
ports:
- 8083:8083 # Port on which Calibre-web will be accessible
restart: unless-stopped
Important configuration notes:
PUIDandPGID: These are the user and group IDs on your host server under which files and folders will be created inside the container. To find your IDs, run the commandsid -uandid -g. Typically, for the first created user, this is1000.TZ: Specify your timezone. A list of available zones can be found here../config:/config: The local directory~/calibre-web/configwill be mounted to/configinside the container. Calibre-web will store its database (app.db), settings, and other files here../library:/books: The local directory~/calibre-web/librarywill be mounted to/booksinside the container. You should copy your existing Calibre library (the folder containingmetadata.db) here. If you don't have a library, Calibre-web will create a new one.ports: - 8083:8083: The Calibre-web container listens on port 8083. We are forwarding it to the same port on the host machine. If this port is occupied, you can change the first part (e.g.,8084:8083).
Starting the Calibre-web Docker Container
Save the file docker-compose.yml (Ctrl+X, Y, Enter) and start the container:
docker compose up -d
The -d command runs the container in detached mode. Docker will download the lscr.io/linuxserver/calibre-web:latest image if it's not local, and then start the service.
You can check the container status with the command:
docker compose ps
You will see an Up status if everything was successful.
Configuring Calibre-web via the Web Interface
Now Calibre-web should be accessible via your VPS's IP address and the specified port. Open your browser and navigate to: http://YOUR_IP_ADDRESS:8083.
On the first launch, you will be greeted by the setup page. You need to specify the path to your Calibre library:
- In the "Path to Calibre database" field, enter
/books. This is the path inside the Docker container where we mounted the local folder~/calibre-web/library. - Click "Submit".
If you already have a Calibre library, copy it to ~/calibre-web/library on your VPS. For example, if your library is named "Calibre Library" and is on your local computer, you can copy it using scp:
scp -r "/path/to/your/Calibre Library" root@YOUR_IP_ADDRESS:~/calibre-web/library/
After successfully specifying the library path, Calibre-web will restart and prompt you to create an administrator account. Set a username and password. By default, the login and password for the first access are: admin / admin123. It is recommended to change them immediately after logging in.
Your library is now accessible via the web interface, but only by IP address and without HTTPS. The next step is to configure a reverse proxy and secure access.
Configuring a Reverse Proxy and HTTPS for Calibre-web
Direct access to Calibre-web via IP address and port 8083 is neither secure nor convenient. To ensure secure access via a domain name using HTTPS, a reverse proxy is necessary. We will cover configuration using Nginx and Caddy — two popular and reliable web servers.
Before you begin, ensure you have a domain name pointing to your VPS's IP address (e.g., books.yourdomain.com).
Option 1: Configuring Nginx with Let's Encrypt (Certbot)
Nginx is a powerful and widely used reverse proxy and web server. For automatic retrieval and renewal of SSL certificates from Let's Encrypt, we will use Certbot.
Installing Nginx and Certbot
sudo apt install nginx certbot python3-certbot-nginx -y
Configuring Nginx for Calibre-web
Create a new Nginx configuration file for your domain:
sudo nano /etc/nginx/sites-available/calibre-web.conf
Insert the following configuration, replacing books.yourdomain.com with your domain name:
server {
listen 80;
listen [::]:80;
server_name books.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8083;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_request_buffering off;
}
}
Create a symbolic link to this file in sites-enabled for Nginx to start using it:
sudo ln -s /etc/nginx/sites-available/calibre-web.conf /etc/nginx/sites-enabled/
Test the Nginx configuration syntax and reload it:
sudo nginx -t
sudo systemctl reload nginx
Obtaining an SSL Certificate with Certbot
Now use Certbot to automatically obtain and configure an SSL certificate:
sudo certbot --nginx -d books.yourdomain.com
Follow Certbot's instructions. It will automatically detect your Nginx configuration, obtain the certificate, and configure Nginx to use HTTPS, including redirecting from HTTP to HTTPS. After this, your Nginx configuration file will be updated to something similar to the following:
server {
listen 80;
listen [::]:80;
server_name books.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name books.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/books.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/books.yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://127.0.0.1:8083;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_request_buffering off;
}
}
Now Calibre-web is accessible at https://books.yourdomain.com.
Option 2: Configuring Caddy with Automatic HTTPS
Caddy is a modern web server renowned for its ease of configuration, especially regarding automatic SSL certificate acquisition and renewal (thanks to built-in Let's Encrypt integration).
Installing Caddy
Install Caddy by following the official documentation. For Ubuntu, it typically looks like this:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
Configuring Caddyfile for Calibre-web
Create or edit the /etc/caddy/Caddyfile file:
sudo nano /etc/caddy/Caddyfile
Remove all existing entries and insert the following configuration, replacing books.yourdomain.com with your domain name:
books.yourdomain.com {
reverse_proxy 127.0.0.1:8083 {
header_up Host {host}
header_up X-Real-IP {remote_ip}
header_up X-Forwarded-For {remote_ip}
header_up X-Forwarded-Proto {scheme}
}
}
Caddy will automatically obtain an SSL certificate for books.yourdomain.com and configure HTTPS. Verify the configuration and restart Caddy:
sudo caddy validate
sudo systemctl reload caddy
Now Calibre-web is also accessible at https://books.yourdomain.com.
Both options provide secure access to your library. The choice between Nginx and Caddy often comes down to personal preference and existing experience.
Calibre-web Maintenance: Backups, Updates, and Monitoring
Maintaining calibre-web on a server requires regular upkeep, including data backups, timely updates, and status monitoring. This ensures the safety of your library and stable service operation.
Calibre-web Backups
Your e-book library and Calibre-web configuration are valuable data that need to be backed up regularly. By using Docker Compose, we mount persistent volumes, which simplifies this process.
Key data for backup:
~/calibre-web/library/: This is your entire Calibre library, including book files and themetadata.dbdatabase. This is the most important part.~/calibre-web/config/: This is where Calibre-web's configuration files, user database (app.db), and other settings are stored.
The simplest way to back up is to create a compressed archive of these folders:
# First, stop Calibre-web to avoid database corruption during backup
docker compose down
# Create an archive
tar -czvf ~/calibre-web_backup_$(date +%F).tar.gz ~/calibre-web/library ~/calibre-web/config
# Start Calibre-web again
docker compose up -d
It is recommended to store backups not only on the same VPS but also on remote storage (e.g., S3-compatible cloud storage, Google Drive, Dropbox, or another VPS). For automation, you can use cron and utilities like rclone or rsync.
Example script for daily backup and transfer to a remote server (using rsync):
#!/bin/bash
BACKUP_DIR="/var/backups/calibre-web"
REMOTE_USER="backup_user"
REMOTE_HOST="your_remote_backup_server.com"
REMOTE_PATH="/path/to/remote/backups"
mkdir -p $BACKUP_DIR
cd ~/calibre-web
# Stop Calibre-web
docker compose down
# Create a temporary archive
TIMESTAMP=$(date +%Y%m%d%H%M%S)
tar -czf $BACKUP_DIR/calibre-web-$TIMESTAMP.tar.gz ./library ./config
# Start Calibre-web
docker compose up -d
# Delete old backups (e.g., older than 7 days)
find $BACKUP_DIR -type f -name "calibre-web-*.tar.gz" -mtime +7 -delete
# Copy backup to remote server
rsync -avz $BACKUP_DIR/calibre-web-$TIMESTAMP.tar.gz $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/
echo "Calibre-web backup completed at $TIMESTAMP"
Save this script as ~/backup_calibre_web.sh, make it executable (chmod +x ~/backup_calibre_web.sh), and add it to cron for daily execution (e.g., sudo crontab -e and add the line 0 3 * * * /home/youruser/backup_calibre_web.sh > /dev/null 2>&1 to run at 3:00 AM).
Calibre-web and Docker Image Updates
Updates are important for new features, bug fixes, and security patches. Thanks to Docker Compose, the process of updating calibre-web docker is very simple.
To update Calibre-web to the latest version:
- Navigate to the directory containing your
docker-compose.ymlfile:cd ~/calibre-web - Download the latest Docker image versions, remove old containers, and then create new ones:
docker compose pull docker compose up -dThe
pullcommand will download the new image, andup -dwill recreate the container using the new image, while preserving all your data thanks to the mounted volumes.
It is recommended to run these commands every few weeks or after announcements of important updates. It's always a good idea to create a backup before updating.
Monitoring Calibre-web Performance
Monitoring your VPS will help identify potential performance or availability issues with Calibre-web. You can use tools like htop, glances, or more advanced solutions such as Netdata.
- CPU Load: High CPU load may indicate active library indexing or a large number of concurrent requests.
- RAM Usage: Calibre-web typically doesn't consume much RAM, but if your library is very large, caching can increase consumption.
- Disk I/O Operations (IOPS): Active disk read/write can be related to book uploads or searches. NVMe SSDs minimize this factor.
- Network Traffic: If users are actively downloading books, network traffic will increase.
Regularly check the Calibre-web Docker container logs for errors:
docker compose logs calibre-web
This will help you quickly respond to any failures or warnings.
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Optimal VPS for Calibre-web under Real-World Load
Choosing a VPS configuration for Calibre-web under real-world load requires understanding how your usage will affect system resources. "Real-world load" can vary significantly from tens of thousands of books for family use to hundreds of thousands for a large community or even public access.
Factors Affecting Calibre-web Performance:
- Library Size: The more books, the more disk space required, and the longer indexing and searching may take.
- Number of Users: Concurrent requests from multiple users increase CPU and RAM load.
- Content Type: Books in PDF format or with many images will consume more traffic and require more resources for browser display.
- Frequency of Operations: If users frequently upload new books, modify metadata, or perform full-text searches, the load will be higher.
VPS Configuration Recommendations for Various Scenarios
Considering these factors, Valebyte.com offers the following recommendations for choosing a calibre-web vps:
1. Personal Library / Small Family (up to 5000 books, 1-3 users)
- VPS: Basic KVM VPS
- CPU: 1 vCPU (2.5+ GHz)
- RAM: 1-2 GB
- Disk: 30-50 GB NVMe SSD
- Cost: ~$7-15/month
- Example Usage: You and a few family members read books, occasionally uploading new ones. Performance will be high, without delays.
2. Extended Family / Small Community (5000-20000 books, 4-10 users)
- VPS: Medium KVM VPS
- CPU: 2 vCPU (2.8+ GHz)
- RAM: 4 GB
- Disk: 100-200 GB NVMe SSD
- Cost: ~$20-40/month
- Example Usage: Active use by several users, regular library replenishment, occasional simultaneous viewing/downloading. 4 GB RAM will ensure comfortable operation even during peak loads, and 100+ GB of disk space will last for a long time.
3. Large Community / Public Access (over 20000 books, 10+ users)
- VPS: Powerful KVM VPS or even an entry-level dedicated server.
- CPU: 4+ vCPU (3.0+ GHz)
- RAM: 8+ GB
- Disk: 500+ GB NVMe SSD (or multiple disks if the library is very large)
- Cost: ~$50+/month
- Example Usage: Dozens of users regularly access the library, frequent requests, possibly using advanced Calibre-web features. A large amount of RAM will help cache data, and a fast multi-core processor will handle parallel request processing.
It's important to remember that NVMe SSDs are crucial for Calibre-web's performance, as database and book file operations are intensive. The difference between NVMe and regular SATA SSDs can be quite noticeable, especially with large libraries. If you plan long-term use, consider annual payment options, which are often more cost-effective than monthly ones: Annual vs. Monthly VPS Payment: What's Cheaper in the Long Run.
Performance Optimization Recommendations:
- Calibre Database Optimization: Regularly run Calibre database optimization on your desktop computer before synchronizing with the VPS.
- Caching: Ensure your reverse proxy (Nginx/Caddy) is configured correctly and does not cache dynamic Calibre-web content, but can cache static files.
- CDN Usage: For public libraries with a large number of users, consider using a CDN for static files (book covers) to reduce the load on the VPS.
- Monitoring: As mentioned earlier, active monitoring will help identify bottlenecks in a timely manner and take steps to address them.
- Docker Resource Limiting: If multiple services are running on one VPS, consider limiting resources (CPU, RAM) for the Calibre-web container so it doesn't "hog" all resources from other applications.
Choosing the right VPS for a calibre-web self-hosted solution is an investment in the convenience and accessibility of your digital library. Valebyte.com offers a wide range of VPS solutions that can be tailored to any Calibre-web needs, ensuring high performance and reliability.
Conclusion
Installing and configuring Calibre-web on a VPS using Docker Compose is a reliable and scalable way to create your own cloud e-book library. The correct choice of VPS configuration, proper reverse proxy setup with HTTPS, and regular maintenance guarantee stable operation and security for your collection. Start with a basic plan and scale resources as your library grows and the number of users increases to achieve the optimal balance of price and performance.
Ready to choose a server?
VPS and dedicated servers in 72+ countries with instant activation and full root access.
Get started now →