mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-02-18 00:17:39 +01:00
Implements server-side persistence for AI chat sessions, allowing users to continue conversations across devices and browser sessions. Related to #1059. Backend: - Add chat session CRUD API endpoints (GET/PUT/DELETE) - Add persistence layer with per-user session storage - Support session cleanup for old sessions (90 days) - Multi-user support via auth context Frontend: - Rewrite aiChat store with server sync (debounced) - Add session management UI (new conversation, switch, delete) - Local storage as fallback/cache - Initialize sync on app startup when AI is enabled
3.3 KiB
3.3 KiB
🚚 Migrating Pulse
This guide covers migrating Pulse to a new host using the built-in encrypted export/import workflow.
🚀 Quick Migration Guide
❌ DON'T: Copy Files
Never copy /etc/pulse (or /data in Docker/Kubernetes) manually. Encryption keys and credentials can break.
✅ DO: Use Export/Import
1. Export (Old Server)
- Go to Settings → System → Backups.
- Click Create Backup.
- Enter a strong passphrase and download the encrypted backup.
2. Import (New Server)
- Install a fresh Pulse instance.
- Go to Settings → System → Backups.
- Click Restore Configuration and upload your file.
- Enter the passphrase.
📦 What Gets Migrated
| Included ✅ | Not Included ❌ |
|---|---|
| Nodes & credentials | Historical metrics history (metrics.db) |
| Alerts & overrides | Browser sessions and local cookies |
| Notifications (email, webhooks, Apprise) | Local login username/password (.env) |
System settings (system.json) |
Update history/backup folders |
| API token records | — |
| OIDC config | — |
| Guest metadata/notes | — |
| — | Host metadata (notes/tags/AI command overrides) |
| — | Docker metadata cache |
| — | Agent profiles and assignments |
| — | AI settings and findings (ai.enc, ai_findings.json, ai_patrol_runs.json, ai_usage_history.json) |
| — | Pulse Pro license (license.enc) |
| — | Server sessions (sessions.json) |
| — | Update history (update-history.jsonl) |
🔄 Common Scenarios
Moving to New Hardware
Export from old → Install new → Import.
Docker ↔ Systemd ↔ Kubernetes
The export file works across all installation methods. You can migrate from Docker to Kubernetes or vice versa seamlessly.
Disaster Recovery
- Install Pulse using Docker or your preferred method (see INSTALL.md).
- Import your latest backup.
- Restored in < 5 minutes.
📋 Post-Migration Checklist
Because local login credentials are stored in .env (not part of exports), you must:
- Re-create Admin User: If not using
.envoverrides, create your admin account on the new instance. - Confirm API access:
- If you created API tokens in the UI, those token records are included in the export and should continue working.
- If you used
.env-basedAPI_TOKENS/API_TOKEN(legacy), reconfigure them on the new host or re-create tokens in the UI.
- Update Agents:
- Unified Agent: Update the
--tokenflag in your service definition. - Containerized agent: Update
PULSE_TOKENin the agent container environment. - Tip: Use Settings → Agents → Installation commands to generate updated install commands.
- Unified Agent: Update the
- Pulse Pro: Re-activate your license key after migration (license files are not included in exports).
🔒 Security
- Encryption: Exports are encrypted with passphrase-based encryption (PBKDF2 + AES-GCM).
- Storage: Safe to store in cloud backups or password managers.
- Passphrase: Use a strong, unique passphrase (min 12 chars).
🔧 Troubleshooting
- "Invalid passphrase": Ensure exact match (case-sensitive).
- Missing Nodes: Verify export date.
- Connection Errors: Update node IPs in Settings if they changed.
- Logging: Adjust
LOG_LEVEL/LOG_FORMATvia environment variables if needed.