Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
VGSOURCES
Get listed

CalibrePATCH 2026.10.15

How to Create a Calibre Ebook Server on a Linux VPS

By VGSources Team 11 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The most dependable way to host a Calibre library on a Linux VPS is to run either Calibre’s native calibre-server under systemd or calibre-web in Docker, then place the application behind an HTTPS reverse proxy. The native server has fewer moving parts; calibre-web adds a separate browser interface and account workflow. In both designs, keep the library on persistent storage, require authentication before public exposure, and verify that the process can read the library’s metadata.db and ebook files.

Choose the architecture before installing anything

These are separate deployment choices, not two names for the same service. Calibre’s Content server is the application shipped with Calibre. calibre-web is a separate web application that reads an existing Calibre library. Your choice affects installation, authentication, reverse-proxy settings, file permissions and upgrades.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Decision area Native calibre-server calibre-web in Docker
Installation Install Calibre on the VPS and run its server executable from systemd. Run the calibre-web image with Docker Compose.
Browser experience Calibre’s built-in Content server, with browser reading and library access. Dedicated calibre-web interface with its own account workflow.
Authentication Configure the server user database and enable authentication; use --auth-mode=basic when a front-end terminates SSL. Set the initial administrator password in the application, then create reader accounts.
Reverse proxy Proxy to a localhost listener; add --url-prefix when publishing below a subpath. Proxy to the published container port, normally 8083 in the documented Compose example.
Library access The systemd service can be given ownership and write permissions matching the library. The example mounts the host library as /books:ro, so the container sees it as read-only.
Upgrades Upgrade the Calibre installation and restart the systemd service. Pull a new image and recreate the container with Docker Compose.
Operational overhead One application process and one systemd unit. Docker, Compose, a writable configuration mount and container logging in addition to the proxy.

Choose native systemd when the smallest operational footprint matters and you are comfortable managing a Linux service. Choose calibre-web when a dedicated web UI and separate reader accounts are more important than having the fewest components.

Prepare the VPS and persistent storage

A VPS deployment needs a library directory that survives reboots and container or application upgrades. Put the Calibre library on persistent disk rather than an ephemeral container layer. The directory must contain the Calibre database and book files; for calibre-web, metadata.db must be directly inside the directory you select in the application.

#1 Best Overall
Sale
Gaoye Blue Light Blocking Glasses | Anti UV Ray, For Computers & Gaming, Square Frame, Eyewear for Men and Women
  • BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
  • EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
  • COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
  • LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
  • WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.

Create a service account for the native server

Do not run the native server as root. Create a dedicated application account and make that account the owner of the library directory, or grant it the precise read and write permissions your workflow requires. The systemd unit’s User= and Group= values must match those permissions.

sudo useradd --system --home /srv/calibre --shell /usr/sbin/nologin calibre
sudo mkdir -p /srv/calibre/library
sudo chown -R calibre:calibre /srv/calibre/library

Use your actual library location if it already exists. Before starting the service, confirm that the account can traverse every parent directory and read metadata.db, cover images and ebook files.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Plan the public endpoint

Use a domain name and HTTPS for an internet-facing service. Expose only the reverse proxy publicly; bind the application to localhost or an internal Docker network. The proxy is the right place to obtain and renew the certificate, enforce the public hostname and set upload limits.

Option 1: run the native Calibre Content server with systemd

The Content server lets users access a Calibre library and read books directly in a browser. A systemd unit keeps it running, starts it at boot and makes its user and library permissions explicit.

Write the systemd unit

Create a unit such as /etc/systemd/system/calibre-server.service. Replace the library path with your real directory. The documented pattern uses /opt/calibre/calibre-server and starts it with the library folder as its argument.

[Unit]
Description=Calibre Content server
After=network.target

[Service]
Type=simple
User=calibre
Group=calibre
ExecStart=/opt/calibre/calibre-server "/srv/calibre/library"
Restart=on-failure

[Install]
WantedBy=multi-user.target

Reload systemd, start the service and enable it for boot:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo systemctl daemon-reload
sudo systemctl start calibre-server
sudo systemctl status calibre-server
sudo systemctl enable calibre-server

systemctl status should show an active process. If it fails, inspect the unit output and check the executable path, library path and file permissions before changing the proxy.

Rank #2
Windex Gaming Cleaning Wipes, Pre-Moistened Wipes to Instantly Clean all Gaming Gear and Electronics, Resealable Packaging for a Freshness Lock, 25 count (Pack of 1)
  • WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
  • AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
  • PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
  • ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
  • COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed

Bind to localhost when a proxy is in front

For a proxied deployment, add --listen-on 127.0.0.1 to ExecStart. This prevents direct internet access to the application port and leaves the public listener to Nginx or another reverse proxy.

ExecStart=/opt/calibre/calibre-server --listen-on 127.0.0.1 "/srv/calibre/library"

If you publish the service under a path such as https://books.example.com/calibre/, add --url-prefix /calibre. The prefix must exactly match the proxy path. A mismatch commonly produces broken links, redirect loops or a page that loads without its assets.

Configure users and authentication

Set up the server’s user database before opening the service to the internet. The manual’s command-line workflow uses a SQLite database and two commands:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo -u calibre /opt/calibre/calibre-server 
  --userdb /srv/calibre/users.sqlite --manage-users
sudo -u calibre /opt/calibre/calibre-server 
  --userdb /srv/calibre/users.sqlite --enable-auth

Follow the interactive prompts from --manage-users to create or edit accounts. Keep the user database in persistent storage and readable by the service account. When SSL is terminated by the reverse proxy, run the server with --auth-mode=basic so authentication is handled with HTTP Basic authentication between the proxy and application as documented for that arrangement.

Useful native options

The server and Ubuntu manpage expose options including --port, --ssl-certfile, --ssl-keyfile, --url-prefix and --userdb. You can terminate TLS at the application with certificate and key options, but a reverse proxy is usually simpler when the same VPS hosts other HTTPS services.

Option 2: run calibre-web with Docker Compose

calibre-web expects a real Calibre library containing metadata.db, cover images and ebook files. Docker isolates the application, but the bind mounts determine what it can actually see.

Create the Compose file

The documented example uses a writable configuration mount, a read-only library mount, port 8083 and user/time-zone settings:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
LISEN Cell Phone Stand Phone Holder for Desk, Office Decor Gadgets for Men | Office Gifts for Women, iPhone Stand, Gadgets for Men, Office Decor, Gaming Desk Accessories for Samsung Fold 8, Switch, iPad
  • Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
  • Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
  • Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
  • ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
  • Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)
services:
  calibre-web:
    image: linuxserver/calibre-web
    container_name: calibre-web
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
    volumes:
      - ./config:/config
      - /srv/books:/books:ro
    ports:
      - "8083:8083"
    restart: unless-stopped

Use the image and tags appropriate to your deployment. Keep ./config writable: calibre-web stores its application configuration there. Set PUID and PGID to IDs that can read the host library, and set TZ to the VPS time zone you want displayed in logs and the interface.

Start and verify the container

docker compose pull
docker compose up -d
docker compose ps

docker compose ps should show the service running and port 8083 published locally. If it exits, inspect its logs:

docker compose logs --tail=200 calibre-web

Open the service locally or through your proxy. On first login, change the initial administrator password immediately, then create reader accounts with only the access they need.

Select the library from inside the container

In calibre-web’s library-location field, enter /books. Do not enter the host path /srv/books, and do not enter /books/metadata.db. The application expects the directory, with metadata.db directly inside it. The corresponding container view should look like:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
/books/metadata.db
/books/Author/Title/Title.epub
/books/Author/Title/cover.jpg

If your host library is mounted at a different container path, enter that container path instead. The host and container paths are not interchangeable.

Understand the read-only mount

The Compose example mounts /books with :ro. That is a deliberate safety boundary: calibre-web can read and serve the library, but it cannot modify files through that mount. If your workflow requires application-side edits, design the permissions and mount mode deliberately, then back up the library and metadata before enabling writes.

Put the service behind Nginx and HTTPS

Keep the application private and proxy only the public HTTPS endpoint. The exact certificate-issuance steps depend on your VPS and certificate provider, but the proxy must forward the original host and protocol and allow ebook-sized responses and uploads.

Rank #4
Ledagic IC+RGBW USB Powered Led Light Bar with App & Remote Control, 2 Pack
  • Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
  • Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
  • 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
  • Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
  • USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC

Proxy the native server at the domain root

server {
    listen 80;
    server_name books.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name books.example.com;

    # Configure ssl_certificate and ssl_certificate_key for your certificate.
    client_max_body_size 64M;

    location / {
        proxy_pass http://127.0.0.1:8080;
        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;
    }
}

The official Nginx example uses client_max_body_size 64M. Treat 64 MB as an example, not a universal requirement: set the value high enough for the largest legitimate ebook or upload in your library. Your native server port may differ; set proxy_pass to the port configured with --port.

Proxy calibre-web on port 8083

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;
    client_max_body_size 64M;
}

When Docker is attached to an internal network instead of publishing a host port, point Nginx at the container name and internal port. Do not publish the application directly to the public interface if the proxy is intended to be the only entry point.

Publish the native server below a subpath

For a URL such as https://example.com/calibre/, start the native server with --url-prefix /calibre and proxy that same prefix. Redirect the bare path to the trailing-slash form so relative links resolve consistently.

location = /calibre {
    return 301 /calibre/;
}

location /calibre/ {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

A proxy path without the matching application prefix is the usual cause of missing styles, failed redirects and links that point to the wrong location.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use HTTPS and authentication together

Enable username/password protection before making either service reachable from the internet. The official Calibre guidance states: “For maximum security, you should also enable HTTPS on the Content server.” HTTPS protects credentials and book traffic in transit; authentication controls who can access the library. Do not treat one as a substitute for the other.

Security and maintenance checklist

  • Bind the application to 127.0.0.1 or an internal Docker network.
  • Expose only the reverse proxy publicly.
  • Use a domain and HTTPS for internet-facing access.
  • Enable application authentication before opening the firewall.
  • Run the native process as a non-root account.
  • Keep calibre-web’s /config writable and persistent.
  • Verify that the container can read metadata.db, covers and ebook files through /books.
  • Set Nginx’s upload limit for your actual file sizes; 64 MB is only the documented example.
  • Back up the library and metadata before upgrades, bulk edits or permission changes.
  • Serve only ebooks you are authorized to store and distribute. calibre-web’s GPLv3 license does not grant rights to copy or share copyrighted ebooks.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Verification and troubleshooting

The native service will not start

  1. Run systemctl status calibre-server and read the recent error lines.
  2. Confirm ExecStart points to the installed calibre-server executable.
  3. Check that the library path exists and that User=calibre and Group=calibre can read it.
  4. Start it manually with the same library path if you need to separate an application error from a systemd error.
  5. After edits, run systemctl daemon-reload and restart the service.

calibre-web shows an empty library

  • In the application, use /books, not the host path and not the database filename.
  • From inside the container, verify that /books/metadata.db exists directly in that directory.
  • Check that the host mount points to the actual Calibre library rather than its parent directory or a newly created empty folder.
  • Inspect docker compose logs calibre-web for permission or database errors.

Books or covers produce permission errors

For native systemd, compare the library ownership with User= and Group=. For Docker, compare the host file IDs with PUID and PGID, and confirm that the configuration mount is writable. A read-only /books:ro mount is expected to prevent modifications; it is not a startup failure.

The proxy returns 404s or broken links

Check whether the service is published at the domain root or under a subpath. For a native subpath deployment, the server’s --url-prefix must match the Nginx location exactly, and the bare path should redirect to a trailing slash. Also confirm that Nginx is forwarding to the correct local port.

Best Value
Sale
HUANUO FlowLift™ Dual Monitor Stand, Fully Adjustable Gaming Monitor Desk Mount for 13–32″ Computer Screens, Full Motion VESA 75x75/100x100 with C-Clamp & Grommet Base, Each Arm Holds 4.4 to 19.8 lbs
  • Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
  • Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
  • Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
  • Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
  • Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.

Large uploads fail

Raise client_max_body_size above the largest intended file and reload Nginx. The documented 64 MB value is an example; a library containing larger files needs a larger limit. If the application itself has a separate request limit, that limit must also accommodate the file.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The container stops after an upgrade

Run docker compose ps, then inspect docker compose logs. Confirm that ./config still exists and is writable, that the library mount resolves to the expected host directory and that the image configuration has not changed. Restore the backed-up configuration or library metadata if an upgrade or bulk edit damaged working data.

Which design should you deploy?

Choose native systemd when simplicity is the priority

The native route has one application process, one service definition and direct access to the library permissions you assign. It is a good fit for a single-purpose VPS where you want Calibre’s built-in browser interface and are comfortable maintaining the Calibre installation itself.

Choose calibre-web when the web workflow matters more

calibre-web is appropriate when you want a dedicated interface, an application-managed administrator account and separate reader accounts. Docker makes the application boundary and upgrade operation clear, but you must maintain Compose, persistent configuration and correct host-to-container paths.

Do not combine them accidentally

Running both against the same library can create confusing ownership and write behavior, especially if one process modifies metadata while the other sees a read-only mount. Decide which application is authoritative, back up first, and give each process only the permissions it needs.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A practical deployment sequence

  1. Choose native systemd or calibre-web Docker based on the interface and maintenance trade-off.
  2. Place the Calibre library on persistent VPS storage and verify that it contains metadata.db, covers and ebook files.
  3. Create a non-root service account for native Calibre, or set Docker’s PUID, PGID and TZ.
  4. Install the chosen application and start it locally.
  5. For native Calibre, create the user database and enable authentication; for calibre-web, change the initial administrator password and create reader accounts.
  6. Bind the application privately and configure Nginx to proxy it.
  7. Enable HTTPS, set an appropriate upload limit and test the public URL.
  8. Check a login, a cover, a book download or browser read, and a restart after boot.
  9. Back up the library, metadata.db, user database and calibre-web configuration before upgrades or bulk edits.

FAQ

Is calibre-web the same as Calibre’s Content server?

No. The Content server is Calibre’s native server; calibre-web is a separate application that reads a Calibre library and supplies its own web interface and account workflow.

Can I expose the application port directly?

You can technically publish a port, but the safer VPS design keeps the application on localhost or an internal Docker network and exposes only an HTTPS reverse proxy.

Why must calibre-web use /books?

/books is the path inside the container created by the Compose mount. The application reads the library directory there, including /books/metadata.db; the host path is not visible inside the container.

Does GPLv3 let me share any ebook through calibre-web?

No. The software license covers the application, not copyright permissions for the books. You remain responsible for having the right to store and distribute every title you serve.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Calibrecalibre-webDockerEbook ServerHTTPSLinux VPSNGINX

Leave a reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.