Added comprehensive production infrastructure: Systemd Service: - guruconnect.service with auto-restart, resource limits, security hardening - setup-systemd.sh installation script Prometheus Metrics: - Added prometheus-client dependency - Created metrics module tracking: - HTTP requests (count, latency) - Sessions (created, closed, active) - Connections (WebSocket, by type) - Errors (by type) - Database operations (count, latency) - Server uptime - Added /metrics endpoint - Background task for uptime updates Monitoring Configuration: - prometheus.yml with scrape configs for GuruConnect and node_exporter - alerts.yml with alerting rules - grafana-dashboard.json with 10 panels - setup-monitoring.sh installation script PostgreSQL Backups: - backup-postgres.sh with gzip compression - restore-postgres.sh with safety checks - guruconnect-backup.service and .timer for automated daily backups - Retention policy: 30 daily, 4 weekly, 6 monthly Health Monitoring: - health-monitor.sh checking HTTP, disk, memory, database, metrics - guruconnect.logrotate for log rotation - Email alerts on failures Updated CHECKLIST_STATE.json to reflect Week 1 completion (77%) and Week 2 start. Created PHASE1_WEEK2_INFRASTRUCTURE.md with comprehensive planning. Ready for deployment and testing on RMM server.
68 lines
1.3 KiB
TOML
68 lines
1.3 KiB
TOML
[package]
|
|
name = "guruconnect-server"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
authors = ["AZ Computer Guru"]
|
|
description = "GuruConnect Remote Desktop Relay Server"
|
|
|
|
[dependencies]
|
|
# Async runtime
|
|
tokio = { version = "1", features = ["full", "sync", "time", "rt-multi-thread", "macros"] }
|
|
|
|
# Web framework
|
|
axum = { version = "0.7", features = ["ws", "macros"] }
|
|
tower = "0.5"
|
|
tower-http = { version = "0.6", features = ["cors", "trace", "compression-gzip", "fs"] }
|
|
tower_governor = { version = "0.4", features = ["axum"] }
|
|
|
|
# WebSocket
|
|
futures-util = "0.3"
|
|
|
|
# Database
|
|
sqlx = { version = "0.8", features = ["runtime-tokio", "postgres", "uuid", "chrono", "json"] }
|
|
|
|
# Protocol (protobuf)
|
|
prost = "0.13"
|
|
prost-types = "0.13"
|
|
bytes = "1"
|
|
|
|
# Serialization
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
|
|
# Logging
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
# Error handling
|
|
anyhow = "1"
|
|
thiserror = "1"
|
|
|
|
# Configuration
|
|
toml = "0.8"
|
|
|
|
# Auth
|
|
jsonwebtoken = "9"
|
|
argon2 = "0.5"
|
|
|
|
# Crypto
|
|
ring = "0.17"
|
|
|
|
# UUID
|
|
uuid = { version = "1", features = ["v4", "serde"] }
|
|
|
|
# Time
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
rand = "0.8"
|
|
|
|
# Monitoring
|
|
prometheus-client = "0.22"
|
|
|
|
[build-dependencies]
|
|
prost-build = "0.13"
|
|
|
|
[profile.release]
|
|
lto = true
|
|
codegen-units = 1
|
|
strip = true
|