Calibre-Web is an eBook viewer which uses an existing Calibre database to pull content. We do not run the stand alone version of Calibre, but instead use a build of LazyLibrarian which has Calibre built in.

Some of Calibre-web’s features include:

  • Full HTML5 GUI.
  • User management with per-user permissions
  • Custom shelves
  • Editing eBook metadata
  • Send eBooks to Kindle devices
  • Reading eBooks directly in a browser

Setting up Calibre-web is really simple once you have Docker installed. If you’re on a Synology device, this can be done by going to Package Center > Settings > Package Sources and adding Once that resource has been added, search the package center for Docker. Once Docker has been installed, run it and navigate to the registry tab to search for Calibre-web. We prefer LinuxServer’s automatic builds. Once you find the one you would like, select it and click download it.

After it’s done downloading, it will move into the Image tab. Launch the container to begin configuring it.

Start out by giving the container a name and then clicking Advanced Settings.

Within the Advanced Settings, enable auto-restart, and create a shortcut on desktop (if that interests you). Use your servers IP address followed by the container’s port number 8083.

Next setup the volumes. These folders all need to be created prior to setting up the container so that they can be browsed to and mounted. Click Add Folder to begin mounting each path. Use /config to mount the folder for Calibre-web’s configuration files, and /Media to mount the folder which contains the eBook library, as well as Calibre’s database (metadata.db). If you already setup LazyLibrarian using this tutorial then the books directory has already been created. These are CASE SENSITIVE!

Port settings are used to open the container within a browser. This should be left to the default value since Calibre-web will be looking for this port. Local Port needs to be changed from Auto to the matching Container Port. If this is not done, your machine may use a random port each time and cause confusion.

Environment is where variables are set that are needed to allow the container to run. For the container to run properly and to access and modify the directories, it must be given user permissions. It is good practice to create a new user that is used exclusively for running the container. This user needs read/write privileges to the Docker’s /config directory as well as the /Media directory. The purpose of this is so that in the event the container is compromised, the entire NAS will not be accessible. More on this can be found here.

To obtain the Personal User ID (PUID) and Personal Group ID (PGID) of the user that will be running the container, use Putty or an equivalent program to SSH into your NAS.

Enter the IP address of your NAS in Putty, select the SSH radio button, and click Open.

Enter the admin login information for the NAS. You will not be able to see the password as you type it. Once logged in type id <user> to show your UID (aka PUID) and the GID (aka PGID) for the selected user. We setup a user named automation to run the containers. The command for obtaining the UID and GID in this case was id automation.

Put the IDs from the SSH session into the Environment tab as shown below. It’s also a good idea to input the local timezone, as many containers need this to run. The timezone codes can be found here.

Now that the setup is complete, click ‘ok’ and the container will launch. Read about how to configure Calibre-web here.


  1. Any idea why link on selecting library configuration won’t open any folder? And complains about “DB Location is not Valid, Please Enter Correct Path” at any given path?

  2. Hey Sasquatters,

    Thanks for these great walk-throughs. It’s been immensely helpful. Wanted to know if you are accessing your Calibre-web remotely or just locally – I was hoping I could share my Calibre-web/books with my folks down south, but don’t know if it’s possible to do safely. I’m on a Synology 720+.

    Good luck with all your endeavors!

    • We only access our library locally but I believe you can getup Calibre-Web to upload to a Google Drive. You should also be able to setup Open VPN so they can directly access the Calibre-Web interface from their devices. Unfortunately we have never done this so we won’t be any help there.

  3. Great HowTo – worked fine for me. As I am not yet deep into Docker I wonder what has to be done for upgrading LazyLibrarian, Calibre or Calibre-Web. Should updates be done within the application GUI, or does that interfere with Docker and update should only be done via new Docker image? Hmm, still a lot to learn…


Please enter your comment!
Please enter your name here