Skip to content
By platform

Synology

KumoYami on a Synology NAS with Container Manager.

On a Synology, KumoYami runs in Container Manager (DSM's Docker package from DSM 7.2 onwards; earlier versions called it Docker). It can publish the NAS's shared folders directly.

Which models work

You need a model that supports Container Manager: broadly, the "+", "xs" and similar series. Check your model's processor on its Synology spec sheet.

ARM: coming soon

KumoYami's image is x86_64 only for now (Intel and AMD processors). The ARM build (arm64: Raspberry Pi, Apple Silicon Macs, ARM servers and NAS) is coming in an upcoming release, and this guide will be updated when it lands.

Models with an ARM processor (many in the "j" and "value" series) will have to wait for that release.

Install

Prepare the folders

In File Station, create a folder for KumoYami inside the docker shared folder (Container Manager creates it when it's installed), for example docker/kumoyami, and inside that another one called datos.

Log in to the registry and download the image

KumoYami's image lives in a private registry. On a Synology, that login has to be done by root:

  • Container Manager's Registry tab doesn't work with private token-based registries like this one: it says it can't connect, and the project then fails with unauthorized. Don't use it.
  • docker login stores the session in the home folder of whoever runs it. A login over SSH as your user without sudo is no use to root; with sudo, or in a task run as root, it lands in /root/.docker/config.json, which is the one that counts.

Without SSH, with a root task: Control Panel → Task Scheduler → Create → Scheduled Task → User-defined script. Under General, user root; under Task Settings, this script with your license ID and key:

echo 'KY1.YOUR-WHOLE-KEY' | /usr/local/bin/docker login registry.kumoyami.com -u lic_xxxxxxxxxxxx --password-stdin
/usr/local/bin/docker pull registry.kumoyami.com/kumoyami:latest
chown 1000:1000 /volume1/docker/kumoyami/datos

Save it, select it and click Run. When it finishes (the download takes a few minutes), delete the task: your key is written in it.

With SSH (enable it in Control Panel → Terminal & SNMP and connect as an administrator), the same with sudo:

sudo docker login registry.kumoyami.com -u lic_xxxxxxxxxxxx    # password: the whole KY1.… key
sudo docker pull registry.kumoyami.com/kumoyami:latest
sudo chown 1000:1000 /volume1/docker/kumoyami/datos

The chown makes the datos folder writable for the container's user (uid 1000). Change volume1 if your docker folder lives on another volume.

Create the project

In Container Manager → Project → Create:

  • Project name: kumoyami.
  • Path: the docker/kumoyami folder.
  • Source: create a docker-compose.yml and paste this in (the self-contained version, with the NAS's paths):
docker-compose.yml
services:
  web:
    image: registry.kumoyami.com/kumoyami:latest
    restart: unless-stopped
    environment:
      DATA_DIR: /app/datos
    volumes:
      - /volume1/docker/kumoyami/datos:/app/datos
      # Shared folders you want to publish (:ro = read-only):
      # - /volume1/photo:/data/photos:ro
    ports:
      - "4890:3000"

If the wizard offers to set up a web portal (Web Station), you can skip it. Since the image is already downloaded, the project starts with it without having to log in to the registry.

Over SSH works too, always with sudo and from the project folder (it still shows up in Container Manager afterwards, to see the logs, stop and start it):

cd /volume1/docker/kumoyami
sudo docker compose up -d

Open the panel

Go to http://NAS-IP:4890/admin. The wizard asks for the setup code: you'll find it in the container's logs (Container Manager → Container → kumoyami-web-1 → Log, look for «Código») or over SSH:

sudo docker logs kumoyami-web-1 2>&1 | grep -i código

Carry on with the setup wizard.

HTTPS with DSM's reverse proxy

DSM comes with a reverse proxy and Let's Encrypt certificates, so you don't need Caddy or Nginx:

  1. Point your domain (for example nube.example.com) at your home's public IP and forward ports 80 and 443 on your router to the NAS.
  2. Get the certificate in Control Panel → Security → Certificate.
  3. Create the reverse proxy rule: look for Reverse Proxy in the Control Panel (in DSM 7 it's under Login Portal → Advanced). Source: HTTPS, your domain, port 443. Destination: HTTP, localhost, port 4890.
  4. Assign the certificate to the domain in Security → Certificate → Settings.

If your connection doesn't let you open ports (CGNAT, an ISP-locked router), use Cloudflare Tunnel.

Updating

Don't count on Container Manager to download the new image: it needs the private registry and root's session. Update with a root task, which can repeat on its own (for example, every day at 4:00): Task Scheduler → Create → Scheduled Task → User-defined script, user root, with:

cd /volume1/docker/kumoyami && /usr/local/bin/docker compose pull && /usr/local/bin/docker compose up -d && /usr/local/bin/docker image prune -f

Over SSH it's the same: cd /volume1/docker/kumoyami && sudo docker compose pull && sudo docker compose up -d. The site restarts for a few seconds and your data doesn't change. If your updates period has ended, the registry only lets you download the versions it covers: see Updating.

The container's name

Container Manager names the container after the project and the service: with a kumoyami project it will be kumoyami-web-1. If you pick another name, change it in the commands.