Backend: - modules/services: list, status, start/stop/restart systemctl services with pct exec support for LXC targets - modules/logs: journalctl unit listing + WebSocket live streaming (direct SSH connection, journalctl -f, graceful teardown on WS close) - migrations/003: seed services and logs modules in DB - main.go: register services.New() and logs.New() in module loader Frontend: - services.html: target selector, search/filter, services table with active state indicators and start/stop/restart buttons - logs.html: target + unit selectors, live follow toggle, scrollable terminal output with 3000-line cap - app.js: servicePage() and logsPage() Alpine components + navItems - locales: services and logs i18n keys (fr + en) - pages.css: services table, state dots, logs output styles Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| logs.go | ||
| README.md | ||
Module — Logs
Type: Optional (disabled by default)
Stream and browse system logs from the Proxmox host or LXC containers in real time via WebSocket (tail -f equivalent).
Planned Features
- Real-time log streaming via WebSocket
- Common log sources:
syslog,auth.log,kern.log, journald - Filter by log level (error, warning, info)
- Stop/start streaming on demand
- LXC log access via
pct exec
Planned API Endpoints
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /api/logs/sources |
JWT | List available log sources |
Planned WebSocket Endpoint
GET /ws/logs/{source}?token=<jwt>&host=<optional>
Where source is a log name such as syslog, auth, or journal.
Message types:
| Type | Payload | Description |
|---|---|---|
log_line |
{ "line": "...", "level": "info" } |
New log line |
log_end |
— | Stream closed (e.g. SSH disconnected) |
Status
This module is currently a stub. The UI view is implemented (shows a "module not enabled" placeholder). Full implementation is planned for a future release.
Requirements
- SSH access to the target host
- Read permissions on the log files (root or appropriate group)
License
MIT — see LICENSE