Quick start
Description
This page runs Udash locally, then publishes a report to it from your own Updatecli runs. Nothing is authenticated, so do not expose this setup to anyone else.
Requirement
Docker and Docker Compose
Updatecli, see Installation
1. Create the files
Three files in one directory:
.
├── docker-compose.yaml
├── udash
│ └── config.yaml
└── udash-front
└── config.jsonservices:
db:
image: postgres:18@sha256:5a5a84b19854a9ffaa54082c166ff4ec27473a361e496e5ea167f298f2da9722
restart: always
environment:
- POSTGRES_USER=udash
- POSTGRES_PASSWORD=password
- POSTGRES_DB=udash
expose:
- 5432
server:
image: ghcr.io/updatecli/udash:v0.18.2@sha256:899c2e3a7bf8b4aea588ba4ca398ce4ca1626479ab96881aa69ad6a18964fae1
command: server start
restart: always
environment:
- GIN_MODE=release
volumes:
- "./udash/config.yaml:/home/udash/.udash/config.yaml"
expose:
- 8080
labels:
- "traefik.enable=true"
- "traefik.http.routers.server.rule=PathPrefix(`/api/`)"
- "traefik.http.routers.server.service=server"
- "traefik.http.services.server.loadbalancer.server.port=8080"
front:
image: ghcr.io/updatecli/udash-front:v0.26.0@sha256:21d5c66f6872907f5a83da1a07bde6fa1b46bd74d7e56898b52f0a6b5a8e7654
restart: always
volumes:
- "./udash-front/config.json:/usr/share/nginx/html/config.json"
expose:
- 80
labels:
- "traefik.enable=true"
- "traefik.http.routers.front.rule=PathPrefix(`/`)"
- "traefik.http.routers.front.service=front"
- "traefik.http.services.front.loadbalancer.server.port=80"
traefik:
image: traefik:v3.7@sha256:24841fe2de7304c149343d877d2923b4c8800a38ba015dea9174c23b20e344a0
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
ports:
- "80:80"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
server:
auth:
# No authentication: anyone reaching this instance can read and write reports.
# Fine on a laptop, never on anything reachable from outside.
mode: "none"
database:
uri: postgres://udash:password@db:5432/udash?sslmode=disable
migrationdisabled: false
{
"AUTH_ENABLED": false,
"API_BASE_URL": "/api",
"APP_BASE_PATH": "/",
"MAX_HISTORY_DAYS": 30
}
2. Start Udash
docker compose up -dOpen http://localhost. If the page does not load, http://localhost/api/ping tells you whether
the API is up.
Note | The server may restart a few times on the first start, while PostgreSQL gets ready. It recovers on its own within a few seconds. |
3. Point Updatecli at it
updatecli udash login "http://localhost" --experimentalThe instance has no authentication, so the command does not ask for a token. It only records the endpoint.
4. Publish a report
Run Updatecli as usual, with --experimental added:
updatecli diff --experimentalThe run ends with one link per pipeline:
UDASH - EXPERIMENTAL
=====================
Publishing report to Udash
my pipeline:
=> "http://localhost/pipeline/reports/8f2b1c94-...."Warning | Without |
Refresh http://localhost and the report is there.
If you have no manifest at hand, a published policy works too. Put this updatecli-compose.yaml
in a repository you care about:
policies:
- name: Discover what could be updated here
policy: ghcr.io/updatecli/policies/autodiscovery/all:0.7.0@sha256:09bd79160f4ecda4d8323b25815a733d39334c22544aaa6ac5859f0d3ef9fa79
and run updatecli compose diff --experimental. Pulling a policy may require
docker login ghcr.io first.
Cleaning up
docker compose down --volumesGo further
Sending reports - connect Updatecli to a shared instance and to CI.
Dashboards - what to do with the reports once they are in.
updatecli/udash - deploying a shared instance.