Installing bliss on an ASUSTOR NAS with Docker and Portainer

ASUSTOR ASUSTOR NAS devices make great homes for a music library, and if you have an ASUSTOR that supports Docker you can run bliss on it alongside your other apps. There isn’t an App Central package for bliss yet, but the official bliss Docker image works within the ASUSTOR Docker integration. This walkthrough covers an ASUSTOR running ADM 5, using the Docker Engine and Portainer CE apps published by ASUSTOR.

ASUSTOR’s ADM operating system includes Docker support on many of its models, and App Central makes it easy to add a container manager. We’ll use Portainer CE, the graphical front-end that ASUSTOR publishes, to deploy bliss as a Docker stack. If you’re comfortable with the command line you can do the same thing with docker over SSH, but Portainer keeps everything in the web UI.

This guide was put together with help from a bliss user who got bliss running on their own ASUSTOR. If you run into something ASUSTOR-specific that isn’t covered here, get in touch.

Pre-requisites

Before you start, make sure you have:

  • An ASUSTOR NAS running ADM 5 (or another ADM version with Docker support).
  • Somewhere to keep your music library, shared over your network, and ideally some spare RAM.
  • Docker Engine, available from App Central. This is what actually runs the containers.
  • Portainer CE, available from App Central. This is the web UI you’ll use to deploy bliss. It’s published by ASUSTOR, and installing it will pull in Docker Engine as a dependency if it isn’t already installed.
  • Docker Registry Pack, also available from App Central. This lets Docker download images from registries.

1. Install Docker Engine and Portainer CE

Sign in to ADM as an administrator and open App Central. Search for Portainer (or browse ASUSTOR Apps) and click Install on Portainer CE. ADM will install Docker Engine first if it’s missing, then Portainer CE.

Portainer CE in ASUSTOR App Central

2. Create the Portainer administrator user

Portainer runs its own web interface on a different port from ADM. On ASUSTOR the URL is:

https://<NAS IP>:19943

Open that address from a computer on your local network.

The first time you open Portainer it asks you to create an administrator user. Fill in a username and a password of at least twelve characters and click Create user.

Creating the Portainer administrator user

Create this user straight away. Portainer times out the first-run setup after a few minutes; if that happens, use App Central to switch Portainer CE off and on again, then reopen it.

3. Create a folder for bliss’s configuration

bliss needs a folder to store its database, settings and licence - somewhere outside the container, so that it survives updates. On an ASUSTOR this is best placed in the Docker shared folder.

Open Access Control in ADM and select Shared Folders. You should see the standard Docker share - the folder ASUSTOR provides for Docker apps’ data.

The Docker and Home shared folders in ADM

Open File Explorer and, inside the Docker share, create a new folder called bliss. Its full path will be:

/volume1/Docker/bliss

We’ll map that path into the container in the next step.

4. Deploy bliss as a stack

In Portainer, select your local environment and choose Stacks from the left-hand menu, then click Add stack.

Give the stack the name bliss, make sure Web editor is selected, and paste the following Compose file:

services:
  bliss:
    image: elstensoftware/bliss:latest
    container_name: bliss
    user: "1000:100"
    restart: unless-stopped
    ports:
      - "3220:3220"
      - "3221:3221"
    volumes:
      - /volume1/Docker/bliss:/config
      - /volume1/home/<username>/Music:/music

Creating the bliss stack in Portainer

A couple of things to check before you deploy:

  • The music path. Replace /volume1/home/<username>/Music with the real path to your music library. The Home folder for an ADM user lives at /volume1/home/<username>, which isn’t obvious from File Explorer. If your music is in a shared folder instead (for example /volume1/Music), use that path.
  • The user: line. This tells Docker which user and group to run the container as. We’ll come back to why it matters below.

Click Deploy the stack. Portainer will download the elstensoftware/bliss image and start the container.

5. Open bliss

Once the container is running, open:

http://<NAS IP>:3220

You should see the bliss setup page. Point the Music location at /music - that’s the folder we mapped into the container in the Compose file - and bliss will start scanning your library.

The bliss web interface

Why the user: line matters

This is the one ASUSTOR-specific gotcha. Without the user: line, the container restart-loops with errors like:

java.nio.file.AccessDeniedException: /config/.bliss
mkdir: cannot create directory '/config/.bliss/': Permission denied

That’s because, by default, the container runs as a user that can’t write into the bliss folder you created. On ASUSTOR, 1000 is normally the ID of the first user account created, and 100 is the users group, so user: "1000:100" usually matches the folder’s owner. If your account has a different ID, or the folder is owned by someone else, set the line to the appropriate user and group. As a fallback, user: "0:0" runs the container as root, which will always be able to write to the folder. But cool admins don’t run as root.

Updating bliss

To update, stop and re-create the stack in Portainer (Stacks > bliss, then Editor or Update the stack), making sure Re-pull image is selected. Portainer will fetch the latest elstensoftware/bliss image and start a fresh container, keeping your existing configuration and music.

Thanks

Thanks to Dave, who worked this out and shared their notes. Hopefully it saves other ASUSTOR owners a bit of head-scratching! If you’re running bliss on an ASUSTOR model that isn’t mentioned here, or you found a different way to do it, let us know in the comments below.

tags: self-hosting nas docker walkthrough home server

The Music Library Management blog

Dan Gravell

I'm Dan, the founder and programmer of bliss. I write bliss to solve my own problems with my digital music collection.