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 loginstores the session in the home folder of whoever runs it. A login over SSH as your user withoutsudois no use to root; withsudo, 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/datosSave 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/datosThe 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/kumoyamifolder. - Source: create a
docker-compose.ymland paste this in (the self-contained version, with the NAS's paths):
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 -dOpen 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ódigoCarry 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:
- 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. - Get the certificate in Control Panel → Security → Certificate.
- 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, port443. Destination:HTTP,localhost, port4890. - 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 -fOver 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.