Homepage for my homelab
- Rust 88.2%
- HTML 11.8%
|
Some checks failed
test-scm/pipeline/head There was a failure building this commit
|
||
|---|---|---|
| src | ||
| templates | ||
| tests | ||
| .env | ||
| .gitignore | ||
| AGENTS.md | ||
| ARCHITECTURE.md | ||
| Cargo.toml | ||
| Jenkinsfile | ||
| LICENSE | ||
| README.md | ||
Homelab Homepage
A Rust-based homepage for managing and monitoring a homelab environment.
Features
- Dynamic service discovery via Traefik reverse proxy
- Active alerts display from Grafana and Prometheus Alertmanager
- Real-time updates via HTMX
- Extensible for future home automation integrations
Tech Stack
- Web Framework: Axum
- Async Runtime: Tokio
- Templating: Tera
- Frontend: HTMX + Tailwind CSS (CDN)
Getting Started
Prerequisites
- Rust 1.70+
- Access to Traefik, Grafana, and Alertmanager (optional for full functionality)
Configuration
-
Copy the example environment file:
cp .env.example .env -
Edit
.envwith your service URLs and API keys.
Running
# Development
cargo run
# Production build
cargo build --release
./target/release/homelab_homepage
The server will start on port 3000 by default.
Project Structure
Homelab_Homepage/
├── src/
│ ├── main.rs # Entry point, server setup
│ ├── config.rs # Configuration loading
│ ├── error.rs # Error types
│ ├── state.rs # Application state
│ ├── handlers/ # Axum route handlers
│ │ ├── mod.rs
│ │ └── homepage.rs
│ └── services/ # External service integrations
│ └── mod.rs
├── templates/ # Tera HTML templates
│ ├── base.html
│ └── index.html
├── static/ # Static assets
├── Cargo.toml
└── .env.example
API Endpoints
| Endpoint | Description |
|---|---|
GET / |
Homepage |
GET /health |
Health check |
GET /static/* |
Static files |
License
MIT
Updates test
testy testy testy testy