CALIBRE-SERVER(1)
πΈ NAME πΈ
okay bestie, say hi to calibre-server π
calibre-server [options] [path to library folder...]
This is the calibre Content server, and it's literally the way you put your calibre libraries out on the internet π You hand it the paths to your library folders as arguments, that's it. And if you don't pass any paths at all? No worries β it just uses every library that the main calibre program already knows about. slay.
okay but fr fr, whenever you pass arguments tocalibre-serverthat have spaces in them, wrap those babies in quotation marks. like this:"/some path/with spaces"π«Ά
β¨ OPTIONS β¨
--access-logβ where the access log file lives. This log is all about clients connecting to the server and making requests. by default, no access logging happens at all, so it's giving β¨silenceβ¨ unless you turn it on.--ajax-timeoutβ how long (in seconds) you wait for a response from the server when it's making queries.--auth-modeβ pick your authentication type. Sets the HTTP authentication mode the server uses. Set it to"basic"if you're putting this server behind an SSL proxy. Otherwise just leave it on"auto"β that one uses"basic"if SSL is configured, and"digest"if it isn't. iykyk.--auto-reloadβ automatically reload the server whenever source code changes. dev girlies this one's for you π You should also set a small value for the shutdown timeout while you're at it.--ban-afterβ the number of login failures after which an IP address gets banned. bye felicia π--ban-forβ bans IP addresses that have repeated login failures. It temporarily bans access for IP addresses that keep failing logins for however many minutes you specify. Super useful for blocking password-guessing attempts. Set it to zero and no banning happens at all.--book-list-modeβ choose the default book list mode. This is the default book list mode used for new users. Individual users can override the default in their own settings. The default is to use a cover grid. cute!--compress-min-sizeβ the minimum size (in bytes) for which responses get data compression.--custom-list-templateβ path to a JSON file holding a template for the custom book list mode. Easiest way to make one: go to Preferences-> Sharing over the net-> Book list template in calibre, build your template, then export it. iconic.--daemonizeβ run the process in the background as a daemon (Linux only π§).--displayed-fieldsβ restrict which user-defined fields get displayed. It's a comma separated list of user-defined metadata fields that the Content server will show in the/opdsand/mobileviews. If you use this option, any fields not on the list will not be displayed. For example:my_rating,my_tags--enable-allow-socket-preallocation,--disable-allow-socket-preallocationβ socket pre-allocation, for example with systemd socket activation. By default, this option is enabled.--enable-auth,--disable-authβ password based authentication to access the server. Normally the server is unrestricted and literally anyone can access it π You can restrict access to predefined users with this option. By default, this option is disabled.--enable-fallback-to-detected-interface,--disable-fallback-to-detected-interfaceβ fallback to an auto-detected interface. If for some reason the server can't bind to the interface you specified in thelisten_onoption, it'll try to detect an interface that connects to the outside world and bind to that instead. By default, this option is enabled.--enable-local-write,--disable-local-writeβ allow un-authenticated local connections to make changes. Normally, if you don't turn on authentication, the server runs in read-only mode, so anonymous users can't make changes to your calibre libraries. This option lets anybody connecting from the same computer the server is running on make changes. It's useful if you want to run the server without authentication but still usecalibredbto make changes to your calibre libraries.
β οΈ heads up bestie: turning this on means any program running on the computer can make changes to your calibre libraries. In particular, the Firefox web browser allows arbitrary websites to do so as well. π By default, this option is disabled.
--enable-log-not-found,--disable-log-not-foundβ log HTTP 404 (Not Found) requests. Normally the server logs every HTTP request for resources that aren't found. That can generate a lot of log spam if your server is getting targeted by bots π€ Use this option to turn it off. By default, this option is enabled.--enable-use-bonjour,--disable-use-bonjourβ advertise OPDS feeds via BonJour. It announces your OPDS feeds through the BonJour service so OPDS based reading apps can detect and connect to the server all by themselves. magical β¨ By default, this option is enabled.--enable-use-sendfile,--disable-use-sendfileβ zero copy file transfers for increased performance. This uses zero-copy in-kernel transfers when sending files over the network, which bumps up performance. BUT it can cause corrupted file transfers on some broken filesystems π If you're getting corrupted file transfers, turn it off. By default, this option is enabled.--help,-hβ show this help message and exit. classic.--ignored-fieldsβ ignored user-defined metadata fields. A comma separated list of user-defined metadata fields that will not be displayed by the Content server in the/opdsand/mobileviews. For example:my_rating,my_tags--listen-onβ the interface to listen on for connections. The default is to listen on all available IPv6 and IPv4 interfaces. You can change it to, for example,"127.0.0.1"to only listen for IPv4 connections from the local machine, or to"0.0.0.0"to listen to all incoming IPv4 connections.--logβ path to the log file for the server log. This log has server information and errors in it, not access logs. By default it gets written to stdout.--manage-usersβ manage the database of users allowed to connect to this server. You can use it in automated mode by adding a--. Seecalibre-server --manage-users -- helpfor details. Also peep the--userdboption π--max-header-line-sizeβ max. size of a single HTTP header (in KB).--max-job-timeβ maximum time for worker processes. The max amount of time worker processes are allowed to run (in minutes). Set it to zero for no limit.--max-jobsβ maximum number of worker processes. Worker processes get launched as needed and are used for big jobs like preparing a book for viewing, adding books, converting, etc. Normally the max number of these processes is based on the number of CPU cores. You can control it with this setting.--max-log-sizeβ max. log file size (in MB). The maximum size of the log files generated by the server. Once a log grows bigger than this size, it gets automatically rotated. Set it to zero to disable log rotation.--max-opds-itemsβ maximum number of books in OPDS feeds. The most books the server will return in a single OPDS acquisition feed.--max-opds-ungrouped-itemsβ maximum number of ungrouped items in OPDS feeds. Items get grouped into categories such as author/tags by first letter when there are more than this number of items. Set it to zero to disable.--max-request-body-sizeβ max. allowed size for files uploaded to the server (in MB).--num-per-pageβ number of books to show in a single page. That's the number of books shown on a single page in the browser.--pidfileβ write the process PID to the specified file.--portβ the port to listen on for connections.--search-the-net-urlsβ path to a JSON file containing URLs for the "Search the internet" feature. Easiest way to make one: go to Preferences-> Sharing over the net->Search the internet in calibre, create the URLs, and export them. obsessed.--shutdown-timeoutβ total time in seconds to wait for a clean shutdown.--ssl-certfileβ path to the SSL certificate file π--ssl-keyfileβ path to the SSL private key file π--timeoutβ time (in seconds) after which an idle connection gets closed.--trusted-ipsβ allow un-authenticated connections from specific IP addresses to make changes. Normally, if you don't turn on authentication, the server runs in read-only mode so anonymous users can't make changes to your calibre libraries. This option lets anybody connecting from the specified IP addresses make changes. It has to be a comma separated list of address or network specifications. This is useful if you want to run the server without authentication but still usecalibredbto make changes to your calibre libraries.
β οΈ bestie, listen: turning this on means anyone connecting from the specified IP addresses can make changes to your calibre libraries.
--url-prefixβ a prefix to prepend to all URLs. Useful if you want to run this server behind a reverse proxy. For example, use/calibreas the URL prefix.--userdbβ path to the user database to use for authentication. The database is a SQLite file. To create it, use--manage-users. You can read more about managing users at:https://manual.calibre-ebook.com/server.html#managing-user-accounts-from-the-command-line-only--versionβ show the program's version number and exit.--worker-countβ number of worker threads used to process requests.
π AUTHOR π
Kovid Goyal π
π COPYRIGHT π
Kovid Goyal
okay that's the whole thing, bestie, you're literally a calibre server admin now π
β¨ this was for calibre 9.14.0, dated August 28, 2026, and yeah it's CALIBRE-SERVER(1) β read it, live it, go be the main character of your own self-hosted library πππ¦
π¦ where this page comes from
- arch rolling: calibre 9.14.0-5 Β· GPL-3.0-only
- nixos 26.05: calibre 9.14.0
- ubuntu stonking: calibre 9.14.0+ds+~0.10.6-2build1 Β· GPL-3.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms