yet another dashboard for your bookmarks
lib | ||
.dockerignore | ||
.editorconfig | ||
.gitignore | ||
Cache.go | ||
Config.go | ||
Dockerfile | ||
flake.lock | ||
flake.nix | ||
go.mod | ||
go.sum | ||
helpers.go | ||
icon.svg | ||
LICENSE.md | ||
main.go | ||
preview.png | ||
README.md | ||
TODO.md |
dashh
yet another dashboard for organizing your links.
- easy to configure (1 yaml file required, see example)
- incredibly lightweight frontend (no react, no js, just plain html+css)
- uses css3's flexbox "masonry" layout
- mobile friendly
- written in go
installing
from source
- make sure you have go 1.16 or newer
- clone this repo and
cd
into it in a terminal go mod download && go build
./dashh -p 8080 -s /static/dir/ /path/to/config.yml
(seedashh -h
for help)
systemd
- compile/download and move the binary to
/usr/local/bin/dashh
- put your configuration in
/etc/dashh.yml
- (optional) make a dir called
/var/lib/dashh/
to store your static assets - create a user and group called
dashh
and make sure it owns and/or has the right permissions for the paths you created - put the following in
/etc/systemd/system/dashh.service
:
[Unit]
Description=dashhboardd
After=network.target
[Service]
ExecStart=/usr/local/bin/dashh -s /var/lib/dashh/ /etc/dashh.yml
User=dashh
Group=dashh
Type=exec
Restart=always
[Install]
WantedBy=default.target
RequiredBy=network.target
sudo systemctl daemon-reload && sudo systemctl enable --now dashh
Docker
to do...
NixOS (flake)
add this to flake.nix
:
{
inputs = {
dashh.url = "git+https://git.cyberia.club/reese/dashh";
};
outputs = { self, ... }@inputs: with inputs; rec {
nixosConfigurations = {
hostname = nixpkgs.lib.nixosSystem rec {
specialArgs = { inherit inputs self; };
system = "x86_64-linux";
modules = [
./configuration.nix
dashh.nixosModules.dashh
];
};
};
};
}
example configuration.nix
{
services.dashh = {
enable = true;
theme = [
"#ede4e7"
"#261f22"
"#f34396"
];
css = ''
.subtitle {
font-style: oblique;
}
'';
sections = {
Admin = {
apps = {
Router = {
subtitle = "pfSense";
href = "https://192.168.0.1";
icon = "pfsense.png";
};
"Wifi APs" = {
icon = "openwrt.png";
nodes = [
{ name = "Downstairs";
href = "http://192.168.0.2"; }
{ name = "Upstairs";
href = "http://192.168.0.3"; }
];
};
};
};
};
};
}
see flake.nix for all options.
be aware that your entries will be sorted alphabetically. this is something Nix does and I don't think there's an easy way to override it.
usage
--cache-age float How long to cache icons for (in hours) (default 12)
-c, --cache-dir string Directory for storing cached icons
-p, --port int HTTP server port (default 8327)
-s, --static string Path to your static files
-t, --template string Path to your HTML template file
<config> Your dashboard configuration file (Required)
config yaml structure
port: int (default 8327)
theme: list of hexadecimal color codes - see Config.go for defaults
- foreground - used as background in light theme
- background - used as foreground in light theme
- accent/highlight
autoTheme: bool (default true) - switch foreground and background colors when prefers-color-scheme: dark
columnSize: pixels (default 400)
css: string - extra styles to add in case you don't feel like replacing the template outright
entries:
- title: string
apps:- name: string
href: URL
icon: a URL, MDI shortcode, or dashboard-icons icon
nodes: list of entries - nesting of nodes isn't supported by the default template- name: string
href: URL bookmarks:
- name: string
- name: string
href: URL
- name: string
icon specification
an entry's icon:
can be one of a number of different types of strings. dashh will try to resolve it in this order:
- if it starts with
http
, then it will use that URL as the icon. - if it starts with
/
, then it will resolve to one of your static files. - if it starts with
mdi-
, then it will use the icon provided by material-design-icons. - otherwise, it will fall back to an icon provided by dashboard-icons.