Merge pull request #13 from Dvorinka/feat/casaos-compose

feat(infra): CasaOS compose with persistent /DATA bind
This commit is contained in:
Tomáš Dvořák authored and GitHub committed 2026-10-03 10:38:29 +02:00
commit a59d2eb558
4 files changed
+79

No files matched your search

+7
View File
@@ -6,6 +6,13 @@ All notable changes to Dash. Format follows
## [Unreleased]
### Added
- CasaOS deployment file `infra/compose.casaos.yaml` with app-store
(`x-casaos`) metadata and a persistent `/DATA/AppData/dash` bind mount;
the repo compose's relative `./data` fails under CasaOS, which runs
compose from `/tmp` and loses it on reboot
## [2.1.0] — 2026-09-23
### Added
+2
View File
@@ -9,5 +9,7 @@ services:
ports:
- "3000:3000"
volumes:
# CasaOS: use infra/compose.casaos.yaml — CasaOS runs compose from /tmp,
# so this relative path fails there and would not survive a reboot.
- ./data:/data
restart: unless-stopped
+13
View File
@@ -43,6 +43,19 @@ To build the image locally instead of pulling:
docker compose up --build
```
## CasaOS
Do not paste `docker-compose.yml` into CasaOS's custom install. CasaOS copies
imported compose files to `/tmp/casaos-compose-app-*` and runs them there, so
the relative `./data` bind resolves under `/tmp` — install fails with
`bind source path does not exist`, and anything written would be wiped on
reboot anyway.
Use `infra/compose.casaos.yaml` instead (Apps → Custom Install → Import). It
mounts `/DATA/AppData/dash` on the host — persistent across reboots and
browsable in the CasaOS Files app — and carries the `x-casaos` metadata the
app tile uses.
## Binary
Release archives contain a static `dash` binary (no CGO, no dependencies).
+57
View File
@@ -0,0 +1,57 @@
# CasaOS-ready compose. Import via Apps -> Custom Install -> Import from file.
#
# Do NOT paste the repo's docker-compose.yml into CasaOS: it copies imported
# files to /tmp/casaos-compose-app-* and runs them there, so a relative
# "./data" bind resolves under /tmp — install fails with "bind source path
# does not exist", and even if created the data dies on reboot. This file
# binds /DATA/AppData/dash instead — CasaOS's persistent app-data root,
# browsable in the Files app.
name: dash
services:
dash:
image: ghcr.io/dvorinka/dash:latest
container_name: dash
restart: unless-stopped
ports:
- "3000:3000"
environment:
- TZ=${TZ:-UTC}
volumes:
# Short-form bind auto-creates the host dir; long-form "type: bind" does
# not unless bind.create_host_path is set.
- /DATA/AppData/dash:/data
x-casaos:
envs:
- container: TZ
description:
en_us: "Timezone, e.g. Europe/Prague"
ports:
- container: "3000"
description:
en_us: "Web UI and API"
volumes:
- container: /data
description:
en_us: "All Dash state: SQLite database and uploaded icons"
x-casaos:
architectures:
- amd64
- arm64
main: dash
author: Dvorinka
category: Dashboard
developer: Dvorinka
description:
en_us: "Self-hosted homelab dashboard: services, uptime monitors, domain watch, system metrics. Single container, all state in /data."
icon: https://raw.githubusercontent.com/Dvorinka/Dash/main/dash.svg
tagline:
en_us: "Homelab dashboard in a single container"
thumbnail: ""
title:
en_us: Dash
scheme: http
port_map: "3000"
index: /
store_app_id: dash