Complete documentation overhaul for Pulse v4.24.0 release covering all new features and operational procedures. Documentation Updates (19 files): P0 Release-Critical: - Operations: Rewrote ADAPTIVE_POLLING_ROLLOUT.md as GA operations runbook - Operations: Updated ADAPTIVE_POLLING_MANAGEMENT_ENDPOINTS.md with DEFERRED status - Operations: Enhanced audit-log-rotation.md with scheduler health checks - Security: Updated proxy hardening docs with rate limit defaults - Docker: Added runtime logging and rollback procedures P1 Deployment & Integration: - KUBERNETES.md: Runtime logging config, adaptive polling, post-upgrade verification - PORT_CONFIGURATION.md: Service naming, change tracking via update history - REVERSE_PROXY.md: Rate limit headers, error pass-through, v4.24.0 verification - PROXY_AUTH.md, OIDC.md, WEBHOOKS.md: Runtime logging integration - TROUBLESHOOTING.md, VM_DISK_MONITORING.md, zfs-monitoring.md: Updated workflows Features Documented: - X-RateLimit-* headers for all API responses - Updates rollback workflow (UI & CLI) - Scheduler health API with rich metadata - Runtime logging configuration (no restart required) - Adaptive polling (GA, enabled by default) - Enhanced audit logging - Circuit breakers and dead-letter queue Supporting Changes: - Discovery service enhancements - Config handlers updates - Sensor proxy installer improvements Total Changes: 1,626 insertions(+), 622 deletions(-) Files Modified: 24 (19 docs, 5 code) All documentation is production-ready for v4.24.0 release.
3.8 KiB
Port Configuration Guide
Pulse supports multiple ways to configure the frontend port (default: 7655).
Development tip: The hot-reload scripts (
scripts/dev-hot.sh,scripts/hot-dev.sh, andmake dev-hot) load.env,.env.local, and.env.dev. SetFRONTEND_PORTorPULSE_DEV_API_PORTthere to run the backend on a different port while keeping the generatedcurlcommands and Vite proxy in sync.
Recommended Methods
1. During Installation (Easiest)
The installer prompts for the port. To skip the prompt, use:
FRONTEND_PORT=8080 curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | bash
2. Using systemd override (For existing installations)
sudo systemctl edit pulse
Add these lines:
[Service]
Environment="FRONTEND_PORT=8080"
Then restart: sudo systemctl restart pulse
3. Using system.json (Alternative method)
Edit /etc/pulse/system.json:
{
"frontendPort": 8080
}
Then restart: sudo systemctl restart pulse
4. Using environment variables (Docker)
For Docker deployments:
docker run -e FRONTEND_PORT=8080 -p 8080:8080 rcourtman/pulse:latest
Priority Order
Pulse checks for port configuration in this order:
FRONTEND_PORTenvironment variablePORTenvironment variable (legacy)frontendPortin system.json- Default: 7655
Environment variables always override configuration files.
Why not .env?
The /etc/pulse/.env file is reserved exclusively for authentication credentials:
API_TOKENS- One or more API authentication tokens (hashed)API_TOKEN- Legacy single API token (hashed)PULSE_AUTH_USER- Web UI usernamePULSE_AUTH_PASS- Web UI password (hashed)
Keeping application configuration separate from authentication credentials:
- Makes it clear what's a secret vs what's configuration
- Allows different permission models if needed
- Follows the principle of separation of concerns
- Makes it easier to backup/share configs without exposing credentials
Service Name Variations
Important: Pulse uses different service names depending on the deployment environment:
- Systemd (default):
pulse.serviceorpulse-backend.service(legacy) - Hot-dev scripts:
pulse-hot-dev(development only) - Kubernetes/Helm: Deployment
pulse, Servicepulse(port configured via Helm values)
To check the active service:
# Systemd
systemctl list-units | grep pulse
systemctl status pulse
# Kubernetes
kubectl -n pulse get svc pulse
kubectl -n pulse get deploy pulse
Change Tracking (v4.24.0+)
Port changes via environment variables or system.json take effect immediately after restart. v4.24.0 records configuration changes in update history—useful for audit trails and troubleshooting.
To view change history:
# Via UI
# Navigate to Settings → System → Updates
# Via API
curl -s http://localhost:7655/api/updates/history | jq '.entries[] | {timestamp, action, status}'
Troubleshooting
Port not changing after configuration?
-
Check which service name is in use:
systemctl list-units | grep pulseIt might be
pulse(default),pulse-backend(legacy), orpulse-hot-dev(dev environment) depending on your installation method. -
Verify the configuration is loaded:
# Systemd sudo systemctl show pulse | grep Environment # Kubernetes kubectl -n pulse get deploy pulse -o jsonpath='{.spec.template.spec.containers[0].env}' | jq -
Check if another process is using the port:
sudo lsof -i :8080 -
Verify post-restart (v4.24.0+):
# Check actual listening port curl -s http://localhost:7655/api/version | jq # Check update history for restart event curl -s http://localhost:7655/api/updates/history?limit=5 | jq