- Passwort-Reset

cd management
    npm run reset-password -- admin "neues-passwort"

  - Agent-Hardening
    backend/.env unterstützt jetzt:

    ALLOWED_MANAGEMENT_IPS="127.0.0.1,DEINE-MANAGEMENT-IP"

    Wenn gesetzt, akzeptiert der Agent nur Requests von diesen IPs.

  - Audit-Log
    Management speichert Aktionen wie Login, Logout, Node-Änderungen, Schedule-Updates, Backup/Restore, Settings-Änderungen.
  - Job-History
    Management speichert gestartete Backup/Restore/Scheduler-Jobs mit Node, VM, Typ, Agent-Job-ID und Status.
  - Operations-Seite
    Neue UI-Seite Operations mit:
      - Job History
      - Audit Log
  - systemd Templates

    deploy/systemd/incus-backup-agent.service
    deploy/systemd/incus-backup-management.service

  - Deployment-Doku

    docs/deployment.md
This commit is contained in:
Philipp committed 2026-05-21 10:14:33 +02:00
1 parent aae54167a1
commit e32ebbc734
21 files changed
+417 -13

No files matched your search

+7 -3
View File
@@ -1,5 +1,5 @@
import { agentRequest } from './agentClient.js';
import { listDueSchedules, markScheduleRun, nextRunFrom } from './store.js';
import { createAuditEvent, createJobHistory, listDueSchedules, markScheduleRun, nextRunFrom } from './store.js';
let timer = null;
@@ -15,11 +15,15 @@ async function runDueSchedules() {
const schedules = listDueSchedules(now);
for (const schedule of schedules) {
try {
await agentRequest({
const node = {
id: schedule.node_id,
name: schedule.node_name,
baseUrl: schedule.base_url,
token: schedule.token,
}, `/backup/${encodeURIComponent(schedule.vm_name)}`, { method: 'POST' });
};
const result = await agentRequest(node, `/backup/${encodeURIComponent(schedule.vm_name)}`, { method: 'POST' });
const historyId = createJobHistory({ node, vmName: schedule.vm_name, type: 'scheduled-backup', agentJobId: result?.jobId, status: 'accepted' });
createAuditEvent({ action: 'scheduled-backup', targetType: 'vm', targetId: `${node.id}:${schedule.vm_name}`, details: { scheduleId: schedule.id, historyId, agentJobId: result?.jobId } });
markScheduleRun(schedule.id, {
lastRunAt: now.toISOString(),