Skip to content
← All articles
Article

DasherControl

Listen to the audio story

One dashboard instead of ten tabs · 1:28 · AI-written script, synthetic voices

Transcript

Ava: Ten browser tabs open for ten homelab apps. Antoine's computer was not happy about it, and he joked about his RAM.

Andrew: So he built a dashboard?

Ava: DasherControl, built with Vue on the front and Rust with Rocket on the back. Everything in his homelab is a web app in a Docker container, like Sonarr and Jellyfin, and he wanted them all in one place.

Andrew: How does it show them?

Ava: A configurable grid. Each item can be an iframe or a bookmark, and the layout is saved as workspaces in a database that you can switch between. He wanted something like Windows Vista gadgets, but on the web.

Andrew: And Docker?

Ava: There's a basic container controller to start and manage containers. The long-term idea is applets that do the daily homelab chores, since setting up a reverse proxy with SSL through Portainer or the Docker CLI takes a while.

Andrew: What's finished?

Ava: Iframe applets, saved workspaces, applet management, simple container start and management, CI/CD, user auth and install with Docker or Docker Compose. Still in progress: themes, logging, canvas applets, a web SSH terminal and tests.

Andrew: Any catches?

Ava: Yes. Some sites' logins won't work inside an iframe because of CSRF tokens or other restrictions. And the install was only tested on Ubuntu 20.04. The repo has the roadmap and previews.

Table of contents

DasherControl

Another Interactive Configurable Dashboard with Customisable GridItem with IFrame and Bookmark and other cool features with basic Container Controller for Docker made with Vuejs and Rust (rocket).

License: MIT GitHub Workflow Status GitHub release (latest by date)

Why …

Everything is a web app that can be installed with a docker in a container. I want to manage all my web applications on one dashboard like Sonarr and Jellyfin without opening like 10 tabs in chrome (rip my ram). When using services like Portainer or the Docker CLI, it’s long to set up a reverse proxy with SSL to secure your homelab. So I want to write widgets (Applets) that can do all my tasks that I do on the daily when managing my homelab. Also, I want to make a simple dashboard with widgets (vuejs component) like Windows Vista, but on the web and saved in a database.

Preview Look

Preview look 0.1.5 gif Preview look 0.1.2 preview look

Roadmap

DasherControl

Finished

  • Applets with IFrame
  • Save Workspace and switch between workspaces
  • Applets Management
  • Simple Start and Manage Docker Containers
  • CI/CD
  • User Auth
  • Install App with Docker/Docker-Compose

In Progress

  • Customize Theme and Change Background
  • Logging
  • Canvas applets
  • Terminal ssh web
  • Tests

Planned work

  • Documentation
  • User Auth (OAUTH2 Github)
  • Save docker-compose/container info in the database
  • Caddy Config Generator for reverse Proxy and SSL
  • Export and import of containers and workspaces
  • Floating Windows

Issues

I use Iframe to display the other website some of the login of the website will not work because of the CSRF token or other restrictions of the iframe.

Install (Tested only on Ubuntu 20.04)

// bash scripts/rust-setup-dev.sh
// bash scripts/js-dev-setup.sh

cd frontend && npm install && npm run build && cd ..

cargo install diesel_cli --no-default-features --features postgres
// go in Rocket.toml and .env and change DATABASE_URL to your postgresql server
diesel migration run

// create admin user
cargo run --bin create_admin

// run web app
cargo run

Docker

DOCKER_BUILDKIT=1 docker build -t antoinebou13/dashercontrol .

Docker-compose

DOCKER_BUILDKIT=1 docker-compose up -d --build && docker-compose logs

Run tests

cargo test
cd frontend && npm test // no test yet on frontend