A dashboard inspired by Homer, both in design and configuration.
While I enjoy the configurability and relatively minimalist design of Homer, I dislike its hard dependency on JavaScript to render the page. This is a stripped down rewrite of Homer without any JavaScript.
Runtime arguments to configure the program can be provided either with CLI arguments or environment variables.
Usage: adbir [OPTIONS]
Options:
--out-dir <OUT_DIR> directory to output generated resources [env: OUT_DIR=] [default: ./out]
--config-path <CONFIG_PATH> path to config file [env: CONFIG_PATH=] [default: ./config.yaml]
-h, --help Print help
-V, --version Print version
The config file is inspired by a subset of Homer configuration options.
| Field | Description | Required |
|---|---|---|
title |
Title of the dashboard | Required |
subtitle |
Subtitle of the dashboard displayed underneath title | Optional |
image |
URL to image to display at the top of the page (e.g. logo) | Optional |
services |
List of service groups | Required |
| Field | Description | Required |
|---|---|---|
name |
Name of service group | Required |
items |
List of service groups | Required |
| Field | Description | Required |
|---|---|---|
name |
Name of service | Required |
subtitle |
Description of service | Required |
url |
URL to the service | Required |
logo |
URL to logo of the service | Optional |
title: Dashboard subtitle: A list of services image: logo.webp services: - name: Application group items: - name: Selfhosted app url: https://selfhosted.local logo: /icons/svg/files.svg subtitle: Cool selfhosted app - name: Another selfhosted app url: https://otherselfhosted.local logo: /icons/svg/another.svg subtitle: Another cool selfhosted app - name: Another application group items: - name: Other app url: https://otherapp.local logo: /icons/svg/other.svg subtitle: Another app
Download the latest binary from the releases. Then, run:
$ adbir
Started with args: Args { out_dir: "./out", config_path: "./config.yaml" }
Reading from ./config.yaml
Opening output directory file
Rending and writing template to output file
$
This will generate a static index.html in the desired output directory. Upload
this file to your desired webserver to serve.
The Docker container generates the static files on startup and serves them
using a bundled lightweight webserver (darkhttpd). The webserver serves files
from /public in the container.
There are two flavors of the Docker container:
- Vanilla:
adbir:<tag>. This version of the container just contains the webserver and nothing more. - Dashboard Icons:
adbir:<tag>-dashboard-icons. This version of the container also bundles dashboard-icons served at/iconsin the webserver.
An example docker-compose.yaml.
--- version: '2' services: adbir: image: registry.wuhoo.xyz/jerry/adbir:v0.1.2 environment: OUT_DIR: /public CONFIG_PATH: /config.yaml ports: - "8080:8080" volumes: - ./config.yaml:/config.yaml
Then run:
$ docker-compose up -d
$
$ cargo run --release
Finished release [optimized] target(s) in 0.02s
Running `target/release/adbir`
Started with args: Args { out_dir: "./out", config_path: "./config.yaml" }
Reading from ./config.yaml
Opening output directory file
Rending and writing template to output file
$