b44ab86fdb
feat(server): phoenix release with migrate/rollback helpers
...
Extended Server.Release with migrate/0 and rollback/2 so
'bin/server eval Server.Release.migrate' works from a released binary.
Removed the phx.gen.release-generated rel/overlays/bin/server wrapper
that hardcoded 'start' — it collided with the mix-release default
dispatcher, blocking 'server version', 'server eval', etc. The 'migrate'
overlay is kept (bin/migrate calls server eval under the hood).
2026-04-22 08:41:04 +02:00
2ea5dd4b54
feat(agent): docker-based cross-compile for linux binaries
2026-04-22 08:27:25 +02:00
7ae14f35dd
feat(agent): systemd unit + release env.sh for root+journald install
2026-04-22 08:27:02 +02:00
d266a7b56c
feat(agent): burrito dep + release config for linux_amd64/arm64 + macos
2026-04-22 08:26:47 +02:00
fe7b07db4f
fix(server): only require DASHBOARD_PASSWORD_HASH in prod
...
Blocking bootstrap in dev meant you couldn't even run 'mix run' to
generate the initial hash. Now dev/test accept an optional env override
and boot without it; prod still raises when unset.
2026-04-21 22:59:24 +02:00
2f787ec31f
chore(server): remove unused page_controller scaffold — / is now OverviewLive
2026-04-21 22:56:25 +02:00
667fd7160c
feat(server): admin LiveView for host registration, rotate, delete
2026-04-21 22:55:29 +02:00
94034eea9b
feat(server): vm search LiveView with name+IP filtering
2026-04-21 22:54:47 +02:00
d65832964e
feat(server): host detail LiveView with metrics/pools/snapshots/storage/vms
2026-04-21 22:53:57 +02:00
d0507f290e
feat(server): overview LiveView with status ampel + pubsub updates
2026-04-21 22:52:40 +02:00
62996d883d
feat(server): router pipelines + live_auth hook for authenticated dashboard
2026-04-21 22:51:41 +02:00
4538945b85
feat(server): session-based auth plug + login controller/template
2026-04-21 22:51:11 +02:00
3123743c1c
feat(server): hosts list/delete/rotate helpers + pubsub on metric insert
2026-04-21 22:50:33 +02:00
f3e7fab4d2
feat(server): pure Status.compute/2 for ok/warning/critical/offline
2026-04-21 22:49:15 +02:00
9c457c1f68
feat(server): Server.Auth.verify_password/1
2026-04-21 22:48:36 +02:00
58f22243a5
feat(server): argon2_elixir dep + dashboard_password_hash config
2026-04-21 22:48:07 +02:00
663f7a6113
feat(agent): reporter schedules fast/medium/slow collection with bundled payloads
2026-04-21 22:36:14 +02:00
61fa959d52
feat(agent): system info collector for pveversion/zfs/apt
2026-04-21 22:35:32 +02:00
da5ed6cd08
feat(agent): vms/lxc collectors for runtime and detail with fixtures
2026-04-21 22:34:45 +02:00
ec7f08dfda
feat(agent): pvesh storage collector
2026-04-21 22:33:27 +02:00
8c3e953e4e
feat(agent): zfs collector for pools + datasets/snapshots with fixture tests
2026-04-21 22:32:36 +02:00
6fca450d7e
feat(agent): Shell.run wrapper for testable external commands
2026-04-21 22:31:24 +02:00
30b507ba6b
feat(server): GET /api/hosts/:name returns latest fast/medium/slow samples
2026-04-21 22:30:35 +02:00
f09a77996b
feat(server): retention GenServer prunes samples older than 48h hourly
2026-04-21 22:29:24 +02:00
751e035579
feat(server): channel persists fast/medium/slow samples to metrics table
2026-04-21 22:28:36 +02:00
687fc17082
feat(server): metrics schema + context with record/latest/prune
2026-04-21 22:27:20 +02:00
116f1ada14
fix(server): only mark hosts offline when endpoint is serving
...
Application.start ran mark_all_offline unconditionally, which meant
every "mix run"/"mix ecto.migrate" invocation would flip all
connected hosts to offline. Gate the call on Phoenix.Endpoint.server?
so non-serving boots don't disturb live state.
2026-04-21 22:15:35 +02:00
4f82701956
fix(agent): jason-safe error entries + correct handle_info return
...
Errors produced by Collectors.Host were keyword tuples {:tag, msg}, which
Jason cannot encode — metric push crashed the channel. Convert them to
plain maps with :tag and :message fields.
Reporter.handle_info/2 returned {:ok, socket}, which Slipstream rejects
(GenServer-style {:noreply, socket} is the only valid return for that
callback, unlike handle_connect/handle_join/handle_disconnect).
2026-04-21 22:15:32 +02:00
bfe39e71e1
feat(agent): supervisor boots reporter when config is present
2026-04-21 22:09:29 +02:00
3ae38f95a9
feat(agent): slipstream reporter — join, push, auto-reconnect
2026-04-21 22:08:57 +02:00
ce828084c8
feat(agent): host collector for /proc loadavg, meminfo, uptime
2026-04-21 22:08:04 +02:00
e4db0beac6
feat(agent): toml config loader with defaults and validation
2026-04-21 22:07:06 +02:00
7ec38e0fd6
feat(agent): expose compile-time version
2026-04-21 22:06:25 +02:00
70923eebfa
feat(agent): otp app scaffold with slipstream + toml deps
2026-04-21 22:05:49 +02:00
9e55eae6a1
chore(server): iex helper for host registration
2026-04-21 22:04:44 +02:00
61595e0293
feat(server): host channel with token auth and metric events
2026-04-21 22:04:31 +02:00
d9a52db4ea
feat(server): agent socket endpoint, clear online status on boot
2026-04-21 22:03:03 +02:00
b141ee7816
feat(server): host schema, context, auth, status transitions
2026-04-21 22:02:24 +02:00
bab31b7c4e
feat(server): add bcrypt_elixir for token hashing
2026-04-21 22:01:09 +02:00
b85d05afc8
feat(server): phoenix 1.7 scaffold with sqlite + liveview
2026-04-21 22:00:43 +02:00
fab512f1e1
chore: project skeleton + phase-1 plan
2026-04-21 21:59:29 +02:00