- TypeScript 59.7%
- Go 24.4%
- CSS 12.4%
- HTML 2%
- Shell 1.1%
- Other 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo/workflows | ||
| cmd | ||
| docs | ||
| internal | ||
| scripts | ||
| web | ||
| .air.toml | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| bun.lock | ||
| CHANGELOG.md | ||
| CONTRIBUTING.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| install.sh | ||
| LICENSE | ||
| Makefile | ||
| NOTICE | ||
| package.json | ||
| README.md | ||
| SECURITY.md | ||
| tsconfig.json | ||
📖 Read the Official Documentation for detailed guides on installation, configuration, security, and widget usage.
Why Lastboard
Most self-hosted dashboards are either too heavy, too ugly, or too complex to maintain. Lastboard was built with a simple rule: nothing ships unless it's fast and looks good doing it.
- Built-in drag & drop grid — written from scratch in native JS. No framework overhead, silky smooth on any device.
- Real dark/light mode — dedicated color token sets per theme, not just a CSS filter.
- Go backend — small memory footprint, concurrent by default. Runs fine on a Raspberry Pi.
- Peace of mind — Backup and restore directly from the website.
- Single SQLite file — your entire dashboard state in one portable file. Backup =
cp lastboard.db. - Guided setup wizard — first run walks you through everything. Zero config files to touch.
- Multi-dashboard system — create and switch between multiple independent dashboards, each with its own layout and widgets. Move items between them without rebuilding anything.
- Uptime monitoring — server-side checks around the clock, with history, latency charts, outage logs, and alerts via ntfy, Gotify or a webhook.
- No lock-in — export your dashboards as open, documented YAML, and import straight from Homepage or Dashy.
- Multi-user support — per-user preferences and password management.
- Personalized backgrounds — Set a custom image for your dashboard, optimized and saved per user.
- Global unit system — Choose between Metric and Imperial units globally for all widgets.
- Global readiness — Fully translated into 20 languages.
- Real-time telemetry — server stats (CPU, RAM, disk) streamed over WebSocket.
Security & Widgets
Security
Lastboard is built from the ground up with defense-in-depth principles, including strict CSP headers, CSRF protection, secure session tokens, aggressive rate limiting, signature-verified updates, and optional unprivileged execution (PUID/PGID).
For a detailed breakdown of our security measures, please refer to our Security Overview.
Widgets (7)
| Widget | Description |
|---|---|
| Clock | Analog/digital clock with configurable timezone and seconds display |
| Notepad | Persistent per-user text notepad |
| Telemetry | Real-time server metrics (CPU, RAM, disk) via WebSocket |
| Weather | Current conditions and forecast via Open-Meteo |
| Markdown | Freeform Markdown renderer for notes and links |
| Docker | Live monitoring and lifecycle management (Start/Stop/Restart) of your containers |
| API | Any JSON endpoint on a tile — guided presets for common self-hosted services, or a fully custom request |
Remote Docker hosts are reached through Lastboard Agent, a tiny token-authenticated bridge, so you never have to expose the Docker daemon over TCP.
Installation Methods
Quick Start with Docker (Recommended)
The easiest way to get started is using Docker. Images are automatically built and published to our Forgejo registry.
Using Docker Compose:
services:
lastboard:
image: git.codigosh.com/codigosh/lastboard:latest
container_name: lastboard
ports:
- "8080:8080"
environment:
- TZ=America/New_York
# - TRUST_PROXY=true # Uncomment if running behind a reverse proxy
volumes:
- ./data:/var/lib/lastboard
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
Using Docker CLI:
# Note: Add `-e TRUST_PROXY=true \` before the image name if running behind a reverse proxy.
docker run -d \
--name lastboard \
-p 8080:8080 \
-e TZ=America/New_York \
-v $(pwd)/data:/var/lib/lastboard \
--restart unless-stopped \
git.codigosh.com/codigosh/lastboard:latest
For advanced configuration options, environment variables, and data backups, please refer to the Configuration Guide.
Quick Install (Linux)
Run this command to install or update Lastboard automatically:
curl -fsSL https://git.codigosh.com/CodigoSH/Lastboard/raw/branch/main/install.sh | sudo bash
For more details on building from source, check the Development Guide.
Updates
Lastboard updates are handled securely via a dedicated proxy to guarantee performance and protect our infrastructure.
For detailed updating instructions, visit the Updates Guide, or see our Security Policy for info about our proxy infrastructure.
Support & Recognition
We are an open-source initiative managed through Open Collective Europe.
Financial Support
If you find our tools useful, consider supporting our infrastructure through an unconditional donation.
Acknowledgments
Special thanks to everyone supporting our mission.
Organizations
We appreciate the organizations that support us as a gesture of goodwill to help maintain our infrastructure.
Credits
- Interface icons:
- Feather Icons (MIT - https://github.com/feathericons/feather)
- Material Design Icons (Apache 2.0 - https://github.com/google/material-design-icons)
- Icon set in the picker (CC BY 4.0, fetched from jsDelivr, not bundled):
- Selfhst Icons (CC BY 4.0 - https://github.com/selfhst/icons)
- Weather data: Open-Meteo (CC BY 4.0 - https://open-meteo.com)
Full attribution, including the Go modules compiled into the binaries, lives in NOTICE.
A project by CodigoSH — built to last.
