mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-02-19 07:50:43 +01:00
- Separated metrics collection into internal/dockeragent/collect.go - Added agent self-update pre-flight check (--self-test) - Implemented signed binary verification with key rotation for updates - Added batch update support to frontend with parallel processing - Cleaned up agent.go and added startup cleanup for backup containers - Updated documentation for Docker features and agent security
4.5 KiB
4.5 KiB
🐳 Docker Guide
Pulse is distributed as a lightweight, Alpine-based Docker image.
🚀 Quick Start
docker run -d \
--name pulse \
-p 7655:7655 \
-v pulse_data:/data \
--restart unless-stopped \
rcourtman/pulse:latest
Access at http://<your-ip>:7655.
📦 Docker Compose
Create a docker-compose.yml file:
services:
pulse:
image: rcourtman/pulse:latest
container_name: pulse
restart: unless-stopped
ports:
- "7655:7655"
volumes:
- pulse_data:/data
environment:
- TZ=Europe/London
# Optional: Pre-configure auth (skips setup wizard)
# - PULSE_AUTH_USER=admin
# - PULSE_AUTH_PASS=secret123
volumes:
pulse_data:
Run with: docker compose up -d
⚙️ Configuration
Pulse is configured via environment variables.
| Variable | Description | Default |
|---|---|---|
TZ |
Timezone | UTC |
PULSE_AUTH_USER |
Admin Username | (unset) |
PULSE_AUTH_PASS |
Admin Password | (unset) |
API_TOKENS |
Comma-separated API tokens | (unset) |
DISCOVERY_SUBNET |
Custom CIDR to scan | (auto) |
ALLOWED_ORIGINS |
CORS allowed domains | (none) |
LOG_LEVEL |
Log verbosity (debug, info, warn, error) |
info |
Tip
: Set
LOG_LEVEL=warnto reduce log volume while still capturing important events.
Advanced: Resource Limits & Healthcheck
services:
pulse:
deploy:
resources:
limits:
cpus: '0.5'
memory: 256M
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:7655/api/health"]
interval: 30s
timeout: 10s
retries: 3
🔄 Updates
To update Pulse to the latest version:
docker pull rcourtman/pulse:latest
docker stop pulse
docker rm pulse
# Re-run your docker run command
If using Compose:
docker compose pull
docker compose up -d
🔄 Container Updates
Pulse can detect and apply updates to your Docker containers directly from the UI.
How It Works
- Update Detection: Pulse compares the local image digest with the latest digest from the container registry
- Visual Indicator: Containers with available updates show a blue upward arrow icon
- One-Click Update: Click the update button, confirm, and Pulse handles the rest
- Batch Updates: Use the "Update All" button in the filter bar to update multiple containers safely in sequence
Updating a Container
- Navigate to the Docker tab
- Look for containers with a blue update arrow (⬆️)
- Click the update button → Click Confirm
- Pulse will:
- Pull the latest image
- Stop the current container
- Create a backup (renamed with
_pulse_backup_suffix) - Start a new container with the same configuration
- Clean up the backup after 5 minutes
Batch Updates
When multiple containers have updates available, an "Update All" button appears in the filter bar.
- Click "Update All"
- Confirm the action in the toast notification
- Pulse queues the updates and processes them in parallel batches (default 5 concurrent updates)
- A progress indicator shows the status of the batch operation
- Failed updates are pushed to the end of the queue and reported in the final summary
Safety Features
- Automatic Backup: The old container is renamed, not deleted, until the update succeeds
- Rollback on Failure: If the new container fails to start, the old one is restored
- Configuration Preserved: Networks, volumes, ports, environment variables are all preserved
Requirements
- Unified Agent v5.0.6+ running on the Docker host
- Agent must have Docker socket access (
/var/run/docker.sock) - Registry must be accessible for update detection (public registries work automatically)
Private Registries
For private registries, ensure your Docker daemon has credentials configured:
docker login registry.example.com
The agent uses the Docker daemon's credentials for both pulling images and checking for updates.
🛠️ Troubleshooting
-
Forgot Password?
docker exec pulse rm /data/.env docker restart pulse # Access UI again. Pulse will require a bootstrap token for setup. # Get it with: docker exec pulse /app/pulse bootstrap-token -
Logs
docker logs -f pulse -
Shell Access
docker exec -it pulse /bin/sh