Skip to content
By platform

Docker Compose by hand

Install KumoYami step by step on any system with Docker, without the installer.

This is the reference install: what the installer does, done by hand. It works on any system with Docker and the Compose plugin (docker compose version should answer), and the NAS guides build on it.

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.

Install

Create the folder and download the files

sudo mkdir -p /opt/kumoyami && cd /opt/kumoyami
sudo curl -fsSL https://kumoyami.com/install/docker-compose.yml -o docker-compose.yml
sudo curl -fsSL https://kumoyami.com/install/env.example -o .env

They're the same files that come with your license in the purchase email. Any folder will do: everything KumoYami needs lives inside it.

Log in to the private registry

Just once, with your license: the username is the lic_… ID and, when it asks for the password, paste the whole KY1.… key.

sudo docker login registry.kumoyami.com -u lic_xxxxxxxxxxxx

docker login stores the session in ~/.docker/config.json for the user who runs it (with sudo, in /root/.docker/config.json). Use the same user for your docker compose commands.

Review .env

Everything is optional. The usual suspects:

# Admin panel password. Without it, your first visit to /admin opens the setup wizard, which lets you choose one.
ADMIN_PASSWORD=

# KumoYami's local port (4890 by default)
# KUMOYAMI_PORT=4890

# Pin a specific version (by default, the latest one your license covers)
# KUMOYAMI_VERSION=

Storage (OneDrive, folders…) and its credentials don't go here: you set them up in the panel.

Create the data folder

The container's user, uid 1000, must be able to write to it:

sudo mkdir -p datos && sudo chown 1000:1000 datos

Start it

sudo docker compose up -d
sudo docker compose logs -f web     # Ctrl+C to stop following the logs; the site keeps running

The logs show the initial setup code (the line reads «Código de configuración inicial») that the /admin wizard will ask for. To see it again:

sudo docker compose logs web | grep -i código

KumoYami is now listening on http://127.0.0.1:4890. To reach it from outside, put it on a domain with a reverse proxy or, in the meantime, use an SSH tunnel:

ssh -L 4890:127.0.0.1:4890 user@SERVER-IP    # then open http://localhost:4890/admin

The docker-compose.yml

The file you download has one service, web, plus two optional ones that are commented out:

  • web: the registry.kumoyami.com/kumoyami image, with ./datos mounted at /app/datos and the port published on 127.0.0.1 only.
  • watchtower (commented out): for one-click updates from the panel.
  • clamav (commented out): the antivirus for what visitors upload to your upload boxes. You turn it on in the panel (Upload boxes → Antivirus, server clamav, port 3310) and it uses about 1.5 GB of RAM.

To publish folders from the server, add their volumes to the web service: see Local folders.

A self-contained version, without .env

Some NAS interfaces won't let you upload a .env next to the Compose file. This variant keeps everything inside and uses absolute paths; swap them for your own:

docker-compose.yml
services:
  web:
    image: registry.kumoyami.com/kumoyami:latest
    restart: unless-stopped
    environment:
      DATA_DIR: /app/datos
      # ADMIN_PASSWORD: a-long-password
    volumes:
      - /path/to/kumoyami/datos:/app/datos
      # - /path/to/your/photos:/data/photos:ro
    ports:
      - "4890:3000"

Listening on the whole network

"4890:3000", without 127.0.0.1: in front, makes KumoYami reachable at http://MACHINE-IP:4890 from your local network. That's handy on a home NAS. On a server with a public IP, keep 127.0.0.1:4890:3000 and come in through the reverse proxy.