/yacreaderlibrary-server-docker

Docker image running a headless version of YACReaderLibraryServer 📦

Primary LanguageDockerfileGNU General Public License v3.0GPL-3.0

YACReaderLibraryServer Docker

Docker Builds Docker Pulls Docker Pulls Docker Image Size (tag) Docker Image Size (tag) GitHub Release GitHub

Headless version of the YACReaderLibraryServer, running on a custom base image built with Ubuntu 20.04 LTS cloud image and S6 overlay.

YACReader is the best comic reader and comic manager available, with support for cbr, cbz, zip, and rar comic files.

YACReaderLibraryServer makes it easy to run a home comics server to serve your comics to any device running a YACReader client (including Windows, MacOS, and Linux as well the YACReader iOS app.

Setup Instructions:

You can choose to install one of two versions of the YACReaderLibraryServer docker image, each compiled with a different compression backend - either p7zip or unarr. These two versions are handled via the Docker repository tags xthursdayx/yacreaderlibrary-server-docker:pzip or xthursdayx/yacreaderlibrary-server-docker:unarr.

For the best stability and general quality, it is recommended that you install YACReaderLibraryServer with unarr, so this version is the default installation. It should be noted, however, that as of version 1.0.1, unarr supports fewer formats than p7zip, notably RAR5. There is also some evidence that YACReaderLibraryServer compiled with p7zip may scan and create your comics library(s) faster than the version complied with unarr, so the choice is yours. In practice, the unarr rarely causes issues as the vast majority of comic books use either zip or RAR4 compression, which is handled nicely by this backend, and after the initial library creation, library updates proceed smoothly with either decompression backend.

If you would like to use the default unarr backend, then you do not need to add a tag to xthursdayx/yacreaderlibrary-server-docker since it will default to the latest/unarr tag.

This docker image is also available from the GitHub container registry: ghcr.io/xthursdayx/yacreaderlibrary-server-docker

Supported Architectures

This image supports multiple architectures, specifically x86-64, arm64 and armhf, through the use of a docker manifest for multi-platform awareness. You can read more about docker manifests here.

There is a tagged unarr and p7zip version of the image for each supported architecture. Simply pulling xthursdayx/yacreaderlibrary-server-docker:<tag> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image, and the associated tags are:

Architecture Tag
x86-64 latest/unarr
x86-64 p7zip
x86-64 unarr-amd64
x86-64 p7zip-amd64
arm64 unarr-arm64v8
arm64 p7zip-arm64v8
armhf unarr-arm32v7
armhf p7zip-arm32v7

Here are some examples to help you get started creating a container from this image. If you are an UNRAID user you can access my UNRAID YACReaderLibraryServer template in Community Apps.

Docker CLI

docker run -d \
  --name=YACReaderLibraryServer \
  -e PUID=99 \
  -e PGID=100 \
  -e TZ=America/New_York \
  -p 8080:8080 \
  -v /path/to/config:/config \
  -v /path/to/comic:/comics \
  --restart unless-stopped \
  xthursdayx/yacreaderlibrary-server-docker:[tag]

docker-compose

---
version: "3"
services:
  yacreaderlibrary-server-docker:
    container_name: YACReaderLibraryServer
    image: xthursdayx/yacreaderlibrary-server-docker:[tag]
    environment:
      - PUID=99
      - PGID=100
      - TZ=America/New_York
    volumes:
      - /path/to/config:/config
      - /path/to/comics:/comics
    ports:
      - 8080:8080
    restart: unless-stopped

Parameters

Container images are configured using parameters passed at runtime (such as those listed above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. You can change the external/host port and volume mappings to suit your needs.

Parameter Function
-p 8080 HTTP access to YACReaderLibraryServer.
-e PUID=99 for UserID - see below for more information.
-e PGID=100 for GroupID - see below for more information.
-e TZ=America/New_York Specify a timezone to use, e.g. America/New_York.
-v /config Directory where YACReaderLibraryServer's configuration and log files will be stored.
-v /comics The directory where YACReaderLibraryServer will look for your comics.
tag (Optional) The docker tag will pull your chosen version YACReaderLibraryServer, the primary options are pzip or unarr/latest (default), though arch and release specific tags are also available.

User / Group Identifiers

When using volumes (-v flags) permissions issues can arise between the host OS and the container, you can avoid this by specifying the user PUID and group PGID.

Ensure any mapped volume directories on your host machine are owned by the same user you specify and you will avoid any permissions issues.

In this instance PUID=99 and PGID=100, to find yours using the following command:

  $ id <username> # Replace with your username
    uid=99(nobody) gid=100(users) groups=100(users)

Usage Instructions:

To create a new YACReader comics library run the following command from the CLI on your host machine, changing <library-name> to whatever you want your library to be called:

docker exec YACReaderLibraryServer YACReaderLibraryServer create-library <library-name> /comics

To add an existing YACReader library:

docker exec YACReaderLibraryServer YACReaderLibraryServer add-library <library-name> /comics

To update your YACReader library (e.g. when you've added new comics):

docker exec YACReaderLibraryServer YACReaderLibraryServer update-library /comics

To list all existing YACReader libraries

docker exec YACReaderLibraryServer YACReaderLibraryServer list-libraries

To remove a YACReader library

docker exec YACReaderLibraryServer YACReaderLibraryServer remove-library <library-name>

Accessing YACReaderLibraryServer

You can access your YACReaderLibraryServer by pointing your YACReader app to:

  • http://SERVERIP:8080 (Replace SERVERIP with the correct value).

Please note: YACReaderLibraryServer does not have authentication installed by default, so it is not advisable to expose your server outside of your home network. If you wish to be able to access YACReaderLibraryServer from outside your local network please use a reverse ssl proxy, such as NGINX with an .htaccess file, or a locally-hosted VPN, such as OpenVPN to access your local network.

Updating Info

This image is static, versioned, and requires an image update and container recreation to update version of YACReaderLibraryServer running inside.

Here are the instructions for updating containers:

Via Docker Compose

  • Update all images: docker-compose pull
    • or update a single image: docker-compose pull YACReaderLibraryServer
  • Let compose update all containers as necessary: docker-compose up -d
    • or update a single container: docker-compose up -d YACReaderLibraryServer
  • You can also remove the old dangling images: docker image prune

Via Docker Run

  • Update the image: docker pull xthursdayx/YACReaderLibraryServer
  • Stop the running container: docker stop YACReaderLibraryServer
  • Delete the container: docker rm YACReaderLibraryServer
  • Recreate a new container with the same docker run parameters as described above (if mapped correctly, your YACReaderLibraryServer database and library will be preserved).
  • You can also remove the old dangling images: docker image prune

Image Update Notifications - Diun (Docker Image Update Notifier)

  • You can use Diun for update notifications. Other tools that automatically update containers unattended are not recommended.

Versions

  • 16.11.21: - Streamlined multi-arch support and docker image push workflow.

  • 20.06.21: - Added multi-arch support.

  • 14.06.21: - Switched to monorepo with unarr and p7zip versions.

  • 11.06.21: - Bug fix and patch on main p7zip branch.

  • 10.06.21: - Complete rebuild and initial version.

Donations

If you appreciate my work please consider buying me a coffee, cheers! 😁

Donate