feat(homelab)!: migrate to svelte kit, add more server stats endpoints

This commit is contained in:
2026-01-12 00:09:22 -08:00
parent 73f8cb91c4
commit da17ccc446
30 changed files with 722 additions and 107 deletions

View File

@@ -5,11 +5,13 @@ mod rcon;
use std::env;
use actix_web::{App, HttpServer, web};
use kube::Client;
use crate::rcon::RconClient;
struct AppState {
pub struct AppState {
rcon: RconClient,
kube: Client,
}
struct Env {
@@ -36,8 +38,16 @@ fn load_env() -> Env {
#[actix_web::main]
async fn main() -> std::io::Result<()> {
let env = load_env();
// Initialize Kubernetes client
// Uses in-cluster config when running in k3s, falls back to ~/.kube/config locally
let kube_client = Client::try_default()
.await
.expect("failed to create Kubernetes client");
let app_state = web::Data::new(AppState {
rcon: RconClient::new(env.rcon_password),
kube: kube_client,
});
HttpServer::new(move || {
@@ -48,10 +58,24 @@ async fn main() -> std::io::Result<()> {
web::get()
.to(async || concat!(env!("CARGO_PKG_NAME"), "/", env!("CARGO_PKG_VERSION"))),
)
.service(web::scope("/api").route(
"/minecraft-server-stats",
web::get().to(endpoints::server_stats::get_server_stats),
))
.service(
web::scope("/api")
.route(
"/minecraft-server-stats",
web::get().to(endpoints::server_stats::get_server_stats),
)
// .route(
// "/minecraft/{server}/world-size",
// web::get().to(endpoints::kubernetes::get_world_size),
// )
.route(
"/minecraft/{server}/uptime",
web::get().to(endpoints::server_uptime::get_uptime),
), // .route(
// "/minecraft/{server}/restore",
// web::post().to(endpoints::kubernetes::create_restore),
// ),
)
})
.bind(("127.0.0.1", 8080))?
.run()