TypeScript MIT

umbrel

umbrelOS inside a Docker container.

D

dockur

Dernière activité 24 août 2026
dockur/umbrel

420

étoiles

53

forks

5

issues ouvertes

dockerdocker-containerhome-serverhomeserverself-hostedselfhosting

Ce README est souvent en anglais.

umbrelOS

Build Version Size Package Pulls

Docker container of Umbrel, an OS for self-hosting.

Features ✨

  • Runs UmbrelOS inside a Docker container
  • Does not need dedicated hardware or a virtual machine
  • Provides access to the Umbrel web interface
  • Supports installing and running Umbrel apps
  • Uses the host Docker daemon for app containers
  • Runs virtual machines (Umbrel Machines) with libvirt and QEMU

Usage 🐳

Docker Compose:
services:
  umbrel:
    image: dockurr/umbrel
    container_name: umbrel
    pid: host
    privileged: true
    ports:
      - 80:80
      - 443:443
      - 2000:2000
    volumes:
      - ./umbrel:/data
      - /var/run/docker.sock:/var/run/docker.sock
    restart: always
    stop_grace_period: 1m
Docker CLI:
docker run -it --rm --name umbrel --pid=host --privileged -p 80:80 -p 443:443 -p 2000:2000 -v "${PWD:-.}/umbrel:/data" -v "/var/run/docker.sock:/var/run/docker.sock" --stop-timeout 60 docker.io/dockurr/umbrel
GitHub Codespaces:

Open in GitHub Codespaces

Screenshot 📸

FAQ 💬

How do I change the storage location?

To change the storage location, include the following bind mount in your compose file:

volumes:
  - ./umbrel:/data

Replace the example path ./umbrel with the desired storage folder or named volume.

If a folder inside it is a symbolic link to another disk (for example home pointing to a storage pool), also bind mount the target of the link at the same path:

volumes:
  - ./umbrel:/data
  - /mnt/storage:/mnt/storage

Do I need privileged: true?

For Machines (virtual machines) it is required: libvirt needs it to create the virtual network and QEMU uses /dev/kvm. For hardware acceleration, enable virtualization (Intel VT-x or AMD-V) in the BIOS of the host.

It is also required for umbrelOS to advertise the host's LAN address. Reading the host interfaces from inside the container needs CAP_SYS_ADMIN, and without privileged: true the dashboard and the generated certificate fall back to the container's own Docker address (something like 172.17.0.2), which no LAN client can reach or validate against. Adding --cap-add SYS_ADMIN is not enough here, the container has to be fully privileged. Without it umbrelOS otherwise runs normally and hides Machines.

How do I upgrade from umbrelOS 1.x?

Stop the container, back up the data folder, then pull the new image and start it again with the same /data folder. umbrelOS 2.0 updates the app configurations on its first start, so going back to 1.x requires the backup.

The container has to be recreated rather than just restarted with the new image: umbrelOS 2.0 requires host PID mode and exits with Host PID mode is required when it is missing, so add pid: host (and privileged: true, see above) to your existing command or compose file. A 1.x container that ran without them will not start on 2.0.

How do I run CasaOS in a container?

See dockur/casa for a CasaOS container.

How do I run ZimaOS in a container?

See dockur/zima for a ZimaOS container.

Stars 🌟

Stargazers

Projets similaires

An elegant home server OS. Run OpenClaw, store your files and, and do more with over 300 apps in the Umbrel App Store.

TypeScriptbitcoindockerhome-server
Ggetumbrel
12,2 k étoiles803

Runtipi is a homeserver for everyone! One command setup, one click installs for your favorites self-hosted apps. ✨

TypeScripthomeserverlinuxself-hosted
Rruntipi
9,7 k étoiles370

Deploy real projects from GitHub or your AI coding agent, then keep them running with AI-powered operations.

TypeScriptcloudoscontainerdocker
Llabring
18,4 k étoiles2,5 k