thenktor / dir2opds

Serve an OPDS based on a directory

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

dir2opds - serve books from a directory

dir2opds inspects the given folder and serves an OPDS 1.1 compliant server.

Overview

There are good options for serving books using OPDS. Calibre is a popular choice, but if you have a headless server, installing Calibre might not be the best option.

That's where calibre2opds comes in. However, if you have a large number of books and don't want to create a Calibre library, dir2opds can help you set up an OPDS server from a directory with one condition:

  • A folder should contain either only folders or only files.

Change log

Installation

go install github.com/dubyte/dir2opds@latest

Usage

Usage of dir2opds:
  -calibre
        Hide files stored by calibre.
  -debug
        If it is set it will log the requests.
  -dir string
        A directory with books. (default "./books")
  -hide-dot-files
        Hide files that starts with dot.
  -host string
        The server will listen in this host. (default "0.0.0.0")
  -no-cache
        adds reponse headers to avoid client from caching.
  -port string
        The server will listen in this port. (default "8080")

Tested on

  • Moon+ reader

More information

Binary release

Raspberry pi deployment using binary release

cd && mkdir dir2opds && cd dir2opds

# get the binary
wget https://github.com/dubyte/dir2opds/releases/download/v1.1.0/dir2opds_1.1.0_linux_armv7.tar.gz

tar xvf dir2opds_1.1.0_linux_armv7.tar.gz

sudo touch /etc/systemd/system/dir2opds.service

# Paste the content below but rember to pass the fullpath of your books in -dir
sudo nano /etc/systemd/system/dir2opds.service

sudo systemctl enable dir2opds.service

sudo systemctl start dir2opds.service

/etc/systemd/system/dir2opds.service

[Unit]
Description=dir2opds
Documentation=https://github.com/dubyte/dir2opds
After=network-online.target

[Service]
User=pi
Restart=on-failure

ExecStart=/home/pi/dir2opds/dir2opds -dir <FULL PATH OF BOOKS FOLDER> -port 8080

[Install]
WantedBy=multi-user.target

How to contribute

Special thanks

  • @clach04: for testing and report missing content type for comics.
  • @masked-owl: for reporting security issue about http transversal.

About

Serve an OPDS based on a directory

License:GNU General Public License v3.0


Languages

Language:Go 87.6%Language:Makefile 8.6%Language:Shell 3.8%