Skip to content

Quick install

Install KumoYami on a Linux server with a single command.

The installer sets everything up on a Linux server or VPS: it installs Docker if needed, logs in to the private registry with your license, downloads KumoYami's files, sets up HTTPS with Caddy if you give it a domain, starts the site and shows you the code for the first-run setup.

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.

Before you start

  • A Linux server (Debian, Ubuntu, Rocky, Alma…) with root or sudo access, at least 1 GB of RAM and 5 GB of free disk space.
  • Your license ID (lic_…) and key (KY1.…), from your purchase email.
  • If you want HTTPS from the start: a domain (for example nube.example.com) with an A record pointing at the server's IP, and ports 80 and 443 free and open in the firewall.

Install

Run the installer

Connect to the server over SSH and run:

curl -fsSL https://kumoyami.com/install.sh | sudo bash

Answer its questions

  • Docker: if it isn't installed, it asks whether to install it (with the official script from get.docker.com).
  • License: the lic_… ID and the KY1.… key. The key isn't shown as you type it.
  • Domain: enter one for automatic HTTPS with Caddy, or leave it empty to skip.
  • Email for Let's Encrypt: optional.

Note down the setup code

When it finishes, the installer shows a box with the initial setup code and the address of the admin panel. Open https://your-domain/admin, enter the code and follow the setup wizard.

If you didn't give it a domain, KumoYami is only reachable from the server itself. To open the panel from your own computer, start an SSH tunnel and visit http://localhost:4890/admin:

ssh -L 4890:127.0.0.1:4890 root@SERVER-IP

When you're ready for a domain, run the installer again with --domain, or use your own reverse proxy.

What it does, step by step

  1. Checks the system is Linux on x86_64 or aarch64, that it's running as root, and that there's enough memory and disk (it warns below 1 GB of RAM or 5 GB free).
  2. Installs Docker and the docker compose plugin if they're missing, and starts the service.
  3. Logs in to registry.kumoyami.com with your license (docker login). If there's already a session, it asks whether to keep it.
  4. Creates the install folder, /opt/kumoyami by default, with:
    • docker-compose.yml, downloaded from kumoyami.com/install/docker-compose.yml.
    • .env, created from kumoyami.com/install/env.example (the first time only; after that it's kept).
    • datos/, where KumoYami keeps its settings, owned by the container's user (uid 1000).
  5. With a domain: checks that ports 80 and 443 are free and that DNS points at the server, then writes a Caddyfile and a docker-compose.override.yml with Caddy.
  6. Pulls the image, starts the containers and waits up to 2 minutes for the setup code to appear.

You can run it again whenever you like: it updates docker-compose.yml (keeping the old one as docker-compose.yml.bak-DATE), keeps .env and your data, then pulls and restarts the containers.

Options

With curl | bash, options go after bash -s --:

curl -fsSL https://kumoyami.com/install.sh | sudo bash -s -- --domain nube.example.com --email you@example.com
OptionWhat it does
--domain DOMAINEnables automatic HTTPS with Caddy for that domain.
--email EMAILContact email for Let's Encrypt (optional).
--dir PATHInstall folder (/opt/kumoyami by default).
--no-caddyDoesn't set up Caddy, and turns it off if an earlier run enabled it.
--keep-composeKeeps the current docker-compose.yml instead of updating it.
--unattendedNo questions: the license details come from environment variables.
-h, --helpShows the help.

Environment variables

VariableWhat it does
KUMOYAMI_LICENSE_IDLicense ID (lic_ and 12 hexadecimal characters).
KUMOYAMI_LICENSE_KEYLicense key (starts with KY1.).
KUMOYAMI_DIRSame as --dir.
KUMOYAMI_DOMAINSame as --domain.
KUMOYAMI_EMAILSame as --email.
KUMOYAMI_INSTALL_DOCKERyes: installs Docker without asking. no: never installs it.

With sudo, variables go after sudo (any you've exported don't make it through). For example, an install with no questions asked:

curl -fsSL https://kumoyami.com/install.sh | sudo KUMOYAMI_LICENSE_ID=lic_xxxxxxxxxxxx \
  KUMOYAMI_LICENSE_KEY='KY1.…' bash -s -- --unattended --domain nube.example.com

--unattended needs the ID and the key, unless the server is already logged in to the registry.

Handy commands

In the install folder (cd /opt/kumoyami):

docker compose logs -f web                    # follow the logs (Ctrl+C to exit)
docker compose pull && docker compose up -d   # update
docker compose logs web | grep -i código      # show the setup code again

Settings live in /opt/kumoyami/.env and data in /opt/kumoyami/datos.