yacreader/yacreaderlibraryserver

Sponsored OSS

By yacreader

Updated about 15 hours ago

Official YACReader Docker images running YACReaderLibraryServer

Image
Integration & delivery
19

100K+

yacreader/yacreaderlibraryserver repository overview

YACReaderLibraryServer Docker image

Official YACReader Docker image running YACReaderLibraryServer.

YACReaderLibraryServer is the headless (no GUI) version of YACReaderLibrary. It is intended to be used in scenarios where you can't run YACReaderLibrary. And it's perfect for setting up a self hosted 24/7 comic server for the iOS and Android apps, typically you can install this image in a NAS to make it serve you comics library.

This image support two architectures amd64 and arm64. The tag develop will contain the current version being developed, it can be unstable, for now it's the only one available since the code base of YACReader 9.14.1 contains some bugs that had to be fixed to make the Docker images work as expected. Later, once 9.15.0 is release the tag latest will contain the latest release of YACReaderLibraryServer.

YACReader supports being built using a bunch of different options, the official recommendation is to build it with RAR5 and PDF support. This image is built using 7zip (7z, RAR, RAR5, ZIP and other formats) and Poppler (PDF) and includes a wide range of image formats support.


Setup

Pull latest if it's available (not yet) or develop.

docker pull yacreader/yacreaderlibraryserver:latest

docker pull yacreader/yacreaderlibraryserver:develop

The image starts YACReaderLibraryServer automatically and restarts it if it crash.

To run a container using the command line client you can do:

docker run -d \
  --name=YACReaderLibraryServer \
  -e PUID=99 \
  -e PGID=100 \
  -e TZ=Europe/Madrid \
  -p 9999:8080 \
  -v '/path/to/config:/config' \
  -v '/path/to/comics:/comics' \
  --restart unless-stopped \
  yacreader/yacreaderlibraryserver:[develop|latest]

or you can use docker-compose:

---
version: "3"
services:
  yacreaderlibraryserver:
    container_name: YACReaderLibraryServer
    image: yacreader/yacreaderlibraryserver:[develop|latest]
    environment:
      - PUID=99
      - PGID=100
      - TZ=Europe/Madrid
    volumes:
      - /path/to/config:/config
      - /path/to/comics:/comics
    ports:
      - 9999:8080
    restart: unless-stopped

If you are new to Docker you'll probably need some clarifications:

  • YACReaderLibraryServer won't be running in the device where you are installing the image, YACReaderLibraryServer will be running in a virutal computer called container and you have to map your real world resource from your device to the container...
  • In the examples above [develop|latest] means that have to pick develop or latest, like this: yacreader/yacreaderlibraryserver:develop or yacreader/yacreaderlibraryserver:latest, but you can use any other tag available in this repository if you need to.
  • When using the client apps (iOS/Android) you need to use the IP of the device running this image (e.g. the IP of your NAS) and the port configured when running the container (in the example above the port would be 9999).
  • -p 3456:8080 means that the outside world port used by the server is 3456, 8080 port is the port used by the container internally and you SHOULDN'T use it for trying to connect to the server.
  • In a similar way you can map paths in your device to internal paths, so -v '/path/to/config:/config' means that you'll be able to access the config files in your machine at /path/to/config and -v '/path/to/comic:/comics' means that your comics are in /path/to/comics, YACReaderLibraryServer will use /comics internally as the path to your comics, so when adding or creating a library that's the path you have to use inside the container.
  • PUID and PGID are the user id and the group id the user belongs to in unix/linux systems (including NAS), you need a user that can read and write to the path where your comics are. If you have created the library using another user or from another system (e.g. using SMB) you may need to change the permisions of the .yacreaderlibrary folder inside your library's root folder to match the user you'll be using with the docker container.

YACReaderLibraryServer

YACReaderLibraryServer will be running in the background, you can use the command line to add/remove/update libraries like this:

Usage: YACReaderLibraryServer.exe [options] command

YACReaderLibraryServer is the headless (no gui) version of YACReaderLibrary.

This appplication support persisten settings, to set them up edit this file C:/Users/luisa/AppData/Local/YACReader/YACReaderLibrary/YACReaderLibrary.ini
To learn about the available settings please check the documentation at https://raw.githubusercontent.com/YACReader/yacreader/develop/YACReaderLibraryServer/SETTINGS_README.md

Options:
  -?, -h, --help         Displays help on commandline options.
  --help-all             Displays help including Qt specific options.
  -v, --version          Displays version information.
  --loglevel <loglevel>  Set log level. Valid values: trace, info, debug, warn,
                         error.
  --port <port>          Set server port (temporary). Valid values: 1-65535
  --system-info          Prints detailed information about the system
                         environment, including OS version, hardware
                         specifications, and available resources.

Arguments:
  command                The command to execute. [start, create-library,
                         update-library, add-library, remove-library,
                         list-libraries, set-port, rescan-xml-info]

Initially YACReaderLibraryServer will have no libraries, so you need to create or add one if the path pointing to /comics already have a library:

YACReaderLibraryServer create-library MyComics /comics

or if /path/to/comics already contains a YACReaderLibrary library:

YACReaderLibraryServer add-library MyComics /comics

Advanced settings

You can find YACReaderLibrary.ini in /path/to/config -> /path/to/config/.local/share/YACReader/YACReaderLibrary/YACReaderLibrary.ini

There are some setting you can add there that aren't available through the command line, open YACReaderLibrary.ini and add the [libraryConfig] section, and then add the settings you want:

[libraryConfig]
IMPORT_COMIC_INFO_XML_METADATA=true
UPDATE_LIBRARIES_PERIODICALLY=true
UPDATE_LIBRARIES_PERIODICALLY_INTERVAL=6
UPDATE_LIBRARIES_AT_CERTAIN_TIME=true
UPDATE_LIBRARIES_AT_CERTAIN_TIME_TIME=00:00
UPDATE_LIBRARIES_AT_STARTUP=true

UPDATE_LIBRARIES_PERIODICALLY enables UPDATE_LIBRARIES_PERIODICALLY_INTERVAL go together, the values for UPDATE_LIBRARIES_PERIODICALLY_INTERVAL are 0,1,2,3,4,5 or 6 (30min, 1 hour, 2 hours, 4 hours, 8 hours, 12 hours, daily). UPDATE_LIBRARIES_AT_CERTAIN_TIME enables UPDATE_LIBRARIES_AT_CERTAIN_TIME_TIME, just set the time in 24h format.


Troubleshooting

There are two recurring problems when it comes to the server, one is related to the network setup and the other one is the server not being able to write in the library folder.

Network problems

If the client can't connect to the server check the following:

  • Wrong connection data, check that you are using the actual IP of the device where the server is running. The IP can change in your network if it is not configure statically. And also double check the port number, when the server starts it needs that the port is free and not in use by any other server.
  • Devices not in the same network. If your wifi has satelites (or access points) make sure they allow communication between devices connected to different nodes.
  • A firewall could be blocking your connection.
  • The client apps need permission to access your local network, if iOS or Android ask about it you should allow the app to connect to other devices in your LAN.
  • Router is using some isolation mode and doesn't allow communication between devices.
Disk write problems

The server needs to write information in the folder where your comics are. The server will create a folder called .yacreaderlibrary that contains the data base and cached information (mostly covers). If your library is in /my_path/comics this folder will be in /my_path/comics/.yacreaderlibrary.

  • If your comics are in network shared folder mounted using Samba, you are going to need to mount it using the nobrl option (you may read some docs refering to this option as nolock). Samba doesn't allow creating lock files and the database need those to be able to write information.
  • You need permisions to write in that folder, on a linux/unix environmet (it also applies for NAS systems) you need to make sure that the user id and user group id used when launching the docker container (see PUID and PGID) have write access to the comics folder, and you need to pass the right values to PUID and PGID when running the container. The fastest way to test this is to try to write a file from inside the docker container.

NOTE: If you created the library using YACReaderLibrary the Docker container will be able to read the library and stream content even if doesn't have write permissions, but it will fail to update the reading progress, if you find that the clients aren't able to update the reading progress, please, double check that the server can write to the comics path.


Contributing

YACReader is open source, you can find the git repository in Github, the Dockerfile that builds this image can be found here. If you think you can improve these images please open a PR.

Tag summary

Content type

Image

Digest

sha256:caf4d677a

Size

178.6 MB

Last updated

about 15 hours ago

docker pull yacreader/yacreaderlibraryserver:develop

This week's pulls

Pulls:

4,356

Jun 29 to Jul 5