Skip to content

Installing on Unraid

Starf0x edited this page Oct 14, 2026 · 5 revisions

Installing on Unraid

The container is starf0x/my-audiobook-collection:latest, built for amd64 and arm64. The quickest route is the template, which fills the whole Add Container form for you and makes updating one click afterwards.

With the template

Copy the template in once, and only before the container exists

/boot/config/plugins/dockerMan/templates-user/my-My-Audiobook-Collection.xml is not just the shipped template — from the moment you press Apply, it is also where Unraid keeps your settings for this container: ports, paths, password, API key. Copying the repository's copy over it again replaces all of that with empty defaults, and the next update then recreates the container without its paths.

So: copy it in for a first install. After that, change settings in Unraid's own form (Docker → the container → Edit), never by copying the file again. Nothing in /data or in your audiobooks is affected either way — see Troubleshooting if it has already happened.

  1. On a server that does not have the container yet, copy my-My-Audiobook-Collection.xml from the repository into /boot/config/plugins/dockerMan/templates-user/. From the Unraid terminal:

    cd /boot/config/plugins/dockerMan/templates-user/
    wget https://raw.githubusercontent.com/Starf0x/my-audiobook-collection/main/my-My-Audiobook-Collection.xml
    
  2. Docker → Add Container, and pick My-Audiobook-Collection under User templates in the dropdown at the top.

  3. Check the settings it filled in:

Setting Default What it is
WebUI Port 8523 Change it if something else already uses the port. The WebUI link follows whatever you set.
Appdata /mnt/user/appdata/my-audiobook-collection → /data The database and the cover images. Keep this on fast storage.
Audiobooks /mnt/user/Audiobooks → /audiobooks Your collection. Leave it read/write if you want to write tags, move or delete.
Import folder empty → /import Where new audiobooks arrive. Leave it empty if you never import.
User ID / Group ID 99 / 100 Who the app writes as — nobody:users, who own your shares. Leave them: without them it runs as root, and the folders it creates are ones you are refused permission to write in.
File mode mask 000 The mode of what it creates. 000 is what an Unraid share normally is.
Admin password empty Guards everything that changes the collection, and the only place it is set. See Sharing with others.
Google Books API key empty For looking up missing metadata, and the only place it is set. See Metadata and tags.
  1. Apply. Unraid pulls the image and starts it.
  2. Open the WebUI, or http://TOWER-IP:8523 directly.

The two variables are masked in the form, so the password and the key are not shown back to you as plain text.

First run

  1. The app has no administrator yet, and until it has one nothing in it opens. The page says so and asks for a name and a password of at least eight characters; that account is the one that scans the library, changes what is in it and approves everybody else. It is kept in the app's own database, hashed. Setting Admin password (and ADMIN_USER) on the container overrides it, which is also the way back in if that password is ever forgotten.
  2. Settings ▾ → Library and maintenance → under Library folders, press Browse…, walk to /audiobooks, press Use as library, then Save. Note that you are browsing the container's view of the disk: /audiobooks, not /mnt/user/Audiobooks.
  3. Scan library. A bar at the bottom of the page shows the folder being read and the count so far. A large share takes a few minutes the first time.
  4. Genres appear in the left column as they are found.

If /audiobooks also holds folders that are not genres — downloads, incomplete books, a _Temp — do not add /audiobooks itself. Add the genre folders one by one and tick Is a Genre behind each. Setting up your library explains why.

Updating

The app tells you when there is one. A red dot appears on the icon in the top-left corner, and Settings ▾ → Library and maintenance → Version says which version is running and which one is out.

It stops there on Docker. Updating an image is pulling a new one, which is the host's job — so the Version line says exactly that instead of offering a button it could not honour, and the Install the update entry in the Settings menu is not shown at all. The dot is the notice; the click below is the update.

Because the container came from a user template, that update is one click.

  • Unraid names a user template after the container it belongs to, my-<container name>.xml, and the <Name> inside the file has to match that name as well. That pairing is what makes the Docker tab treat the container as managed. If you rename the container, rename both.
  • Force update lives in the Docker tab's Advanced View: flip the toggle at the top right and the container row gains a version column while the context menu gains Force update. In Basic View neither is shown.

Updating never touches /data, so users, positions, listened marks and covers survive. It never touches your audiobooks either.

What an update can lose is the container's own configuration, but only if the template file was overwritten in the meantime — see the box at the top of this page, and Troubleshooting for putting it back.

Without the template

Any Docker host will do. With compose:

services:
  audiobooks:
    image: starf0x/my-audiobook-collection:latest
    container_name: my-audiobook-collection
    ports:
      - "8523:8523"
    environment:
      ADMIN_PASSWORD: ""      # both may be left out; neither has a field in Settings
      GOOGLE_API_KEY: ""
    volumes:
      - ./data:/data
      - /mnt/user/Audiobooks:/audiobooks
      - /mnt/user/Audiobooks/_Incoming:/import
    restart: unless-stopped

Or in one line:

docker run -d --name my-audiobook-collection -p 8523:8523 \
  -v /mnt/user/appdata/my-audiobook-collection:/data \
  -v /mnt/user/Audiobooks:/audiobooks \
  starf0x/my-audiobook-collection:latest

Inside the container the app listens on 8523; map whatever host port you like to it. PORT can move the inside one as well, but there is rarely a reason to.

Clone this wiki locally