diff --git a/README.md b/README.md index e80a9cc1e..39a28eb84 100644 --- a/README.md +++ b/README.md @@ -1,191 +1,61 @@ -# Pulse Logo Pulse for Proxmox +# Pulse for Proxmox -[![GitHub release](https://img.shields.io/github/v/release/rcourtman/Pulse)](https://github.com/rcourtman/Pulse/releases/latest) -[![Docker Pulls](https://img.shields.io/docker/pulls/rcourtman/pulse)](https://hub.docker.com/r/rcourtman/pulse) -[![License](https://img.shields.io/github/license/rcourtman/Pulse)](LICENSE) +Real-time monitoring for Proxmox VE and PBS with alerts and webhooks. -**Real-time monitoring for Proxmox VE and PBS with alerts, webhooks, and a clean web interface.** +> **⚠️ Upgrading from v3?** See [Migration Guide](docs/MIGRATION_V3_TO_V4.md) - automatic upgrades will break. -> **⚠️ IMPORTANT: Upgrading from v3?** See the [Migration Guide](docs/MIGRATION_V3_TO_V4.md) - automatic upgrades will break your installation! +![Dashboard](docs/images/01-dashboard.png) -![Pulse Dashboard](docs/images/01-dashboard.png) +## Features -## Key Features +- Live monitoring of VMs, containers, nodes, storage +- Alerts with email and webhooks (Discord, Slack, Telegram, Teams, ntfy.sh, Gotify) +- Unified view of PBS backups, PVE backups, and snapshots +- PBS push mode for firewalled servers +- Dark/light themes, responsive design +- Built with Go for minimal resource usage -- **Real-time Monitoring** - Live updates for VMs, containers, nodes, and storage via WebSockets -- **Smart Alerts** - Configurable thresholds with email and webhook notifications (Discord, Slack, Gotify, Telegram, ntfy.sh, Teams) -- **Alert History** - Persistent storage of alert events with detailed metrics and timeline -- **Unified Backups** - Single view for PBS backups, PVE backups, and snapshots -- **PBS Push Mode** - Monitor isolated/firewalled PBS servers without inbound connections -- **Modern UI** - Responsive design with dark/light themes, virtual scrolling, and expandable charts -- **Performance** - Built with Go for minimal resource usage, stops polling when no clients connected -- **Secure by Default** - Encrypted configuration storage with flexible credential management +[Screenshots →](docs/SCREENSHOTS.md) -[View Screenshots →](docs/SCREENSHOTS.md) +## Quick Start -## Support Development - -Pulse is a solo hobby project developed in my free time. If you find it useful, your support helps keep me motivated and covers hosting costs. - -[![GitHub Sponsors](https://img.shields.io/github/sponsors/rcourtman?label=Sponsors&logo=GitHub%20Sponsors&style=for-the-badge)](https://github.com/sponsors/rcourtman) -[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/rcourtman) - -## Quick Start (2 minutes) - -### Prerequisites -- Proxmox VE 7.0+ or PBS 2.0+ -- Network access to Proxmox API (ports 8006/8007) - -### Install Pulse - -Choose **one** method: +### Install ```bash -# Option A: Proxmox Helper Script - Creates dedicated LXC container (EASIEST) +# Option A: Proxmox Helper Script (creates LXC container) bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/pulse.sh)" -# Option B: Docker (Multi-arch: AMD64, ARM64, ARMv7) -docker run -d -p 7655:7655 -v pulse_data:/data --restart unless-stopped rcourtman/pulse:latest +# Option B: Docker +docker run -d -p 7655:7655 -v pulse_data:/data rcourtman/pulse:latest -# Option C: Manual Install (For existing LXC/VMs) +# Option C: Manual (existing systems) curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | sudo bash ``` -### Configure Pulse +### Configure -1. Open Pulse in your browser: `http://:7655` -2. Go to **Settings** → **Nodes** → **Add Node** -3. Enter your Proxmox credentials -4. Click **Save** - Pulse will start monitoring immediately +1. Open `http://:7655` +2. Settings → Nodes → Add Node +3. Enter Proxmox credentials +4. Save -## Configuration - -Pulse uses a modern, secure configuration system similar to popular apps like Radarr and Sonarr: - -### Everything Through the UI - -- **All configuration is done via the web interface** - no manual file editing needed -- **Settings** → **Nodes**: Add/remove Proxmox instances with a simple form -- **Settings** → **General**: Configure ports, intervals, themes, and more -- **Alerts**: Set up thresholds and notification channels -- **Configuration is encrypted** and stored securely with proper permissions - -### Zero Configuration Files - -Unlike traditional monitoring tools: -- **No YAML/JSON files to edit** -- **No environment variables to set** -- **No complex configurations** -- **Works immediately** after installation - -Just open the web UI, add your Proxmox nodes through the interface, and you're done! - -### Data Storage - -- **Docker**: All data stored in `/data` (mount with `-v pulse_data:/data`) -- **Manual Install**: All data stored in `/etc/pulse` -- **Configuration**: Everything is managed through the web UI - -### Configuration Backup & Migration - -Pulse v4.0.3+ supports encrypted configuration export/import for backup and migration: +## Docker +### Basic ```bash -# Export configuration (prompts for passphrase) -pulse config export -o pulse-backup.enc - -# Import on another instance -pulse config import -i pulse-backup.enc - -# Automated deployment (CI/CD) -PULSE_PASSPHRASE=secret pulse config import -i backup.enc --force - -# Docker with auto-import on first run docker run -d \ - -v pulse_data:/data \ - -v $(pwd)/pulse-backup.enc:/config.enc:ro \ - -e PULSE_INIT_CONFIG_FILE=/config.enc \ - -e PULSE_INIT_CONFIG_PASSPHRASE=secret \ - rcourtman/pulse:latest -``` - -**Security Notes:** -- Exports are encrypted with AES-256-GCM using your passphrase -- Credentials remain encrypted throughout the export/import process -- API endpoints (`/api/config/export`, `/api/config/import`) require API_TOKEN if configured -- Perfect for Docker deployments and infrastructure as code workflows - -### For Docker Users - -Pulse provides multi-architecture Docker images supporting: -- **linux/amd64** - Intel/AMD 64-bit servers -- **linux/arm64** - 64-bit ARM (Raspberry Pi 4/5, Apple Silicon) -- **linux/arm/v7** - 32-bit ARM (Raspberry Pi 2/3) - -The only environment variables needed are for the initial ports if you want to change defaults: - -```bash -docker run -d -p 8080:8080 \ - -e PULSE_SERVER_FRONTEND_PORT=8080 \ + --name pulse \ + -p 7655:7655 \ -v pulse_data:/data \ --restart unless-stopped \ rcourtman/pulse:latest ``` -Available Docker tags: -- `rcourtman/pulse:latest` - Latest stable release -- `rcourtman/pulse:4` - Latest v4.x release -- `rcourtman/pulse:4.0.0` - Specific version - -Once running, all configuration is done through the web UI. - -### Security - -Pulse automatically encrypts and secures all configuration: -- Credentials are encrypted using AES-256-GCM -- Configuration files have restricted permissions (0600) -- No plaintext passwords in config files -- Encryption keys derived from machine ID - -See [Security Guide](docs/SECURITY.md) for additional security options. - -## Webhooks - -Pulse supports multiple webhook providers for alerts: - -- **Discord** - Native Discord webhooks with rich embeds -- **Slack** - Slack incoming webhooks -- **Gotify** - Self-hosted push notifications -- **Telegram** - Telegram bot notifications -- **ntfy.sh** - Simple pub-sub notifications -- **Teams** - Microsoft Teams incoming webhooks -- **Generic** - Any webhook endpoint (JSON POST) - -Configure webhooks in **Alerts** → **Destinations** → **Webhooks**. - -## PBS Agent (Push Mode) - -For isolated PBS servers that can't be reached directly: - -```bash -# On the PBS server: -cd /opt -wget https://github.com/rcourtman/Pulse/releases/latest/download/pulse-pbs-agent.tar.gz -tar xzf pulse-pbs-agent.tar.gz -cd pulse-pbs-agent -./install.sh -``` - -Configure the agent to push data to your Pulse instance. See [PBS Agent Guide](docs/PBS-AGENT.md). - -## Docker Compose - +### Docker Compose ```yaml -version: '3.8' - services: pulse: - image: rcourtman/pulse:latest # Multi-arch: AMD64, ARM64, ARMv7 + image: rcourtman/pulse:latest container_name: pulse ports: - "7655:7655" @@ -197,61 +67,122 @@ volumes: pulse_data: ``` -After starting, configure everything through the web UI at `http://localhost:7655`. +### Unraid +Available in Community Applications - search "Pulse for Proxmox" -## Building from Source +## PBS Agent (Push Mode) + +For isolated PBS servers that can't be reached directly: ```bash -# Clone repository -git clone https://github.com/rcourtman/Pulse.git -cd Pulse +# On PBS server +curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install-pbs-agent.sh | sudo bash -# Build backend -go build -o pulse ./cmd/pulse +# Configure +sudo nano /etc/pulse-pbs-agent/config.json +# Add pulse_url and api_key -# Build frontend -cd frontend-modern -npm install -npm run build +sudo systemctl restart pulse-pbs-agent +``` -# Run -./pulse +[PBS Agent Details →](docs/PBS-AGENT.md) + +## Configuration + +All configuration through web UI: +- **Settings → Nodes**: Add/remove Proxmox instances +- **Settings → General**: Ports, intervals, themes +- **Alerts**: Thresholds and notifications + +Data locations: +- **Docker**: `/data` volume +- **Manual**: `/etc/pulse` + +### Backup/Restore + +```bash +# Export (v4.0.3+) +pulse config export -o backup.enc + +# Import +pulse config import -i backup.enc +``` + +Or use Settings → Security tab in UI. + +## Updates + +### Docker +```bash +docker pull rcourtman/pulse:latest +docker stop pulse +docker rm pulse +# Run docker run command again +``` + +### Manual Install +Settings → System → Check for Updates + +## API + +```bash +# Status +curl http://localhost:7655/api/status + +# Metrics +curl http://localhost:7655/api/metrics + +# With authentication (if configured) +curl -H "X-API-Token: your-token" http://localhost:7655/api/status ``` ## Troubleshooting -### Common Issues +### Connection Issues +- Check Proxmox API is accessible (port 8006/8007) +- Verify credentials have PVEAuditor role minimum +- For PBS: ensure API token has Datastore.Audit permission -1. **"Connection refused" error** - - Check firewall rules for port 7655 - - Verify Pulse is running: `systemctl status pulse-backend` +### High CPU/Memory +- Reduce polling interval in Settings +- Check number of monitored nodes +- Disable unused features (backups, snapshots) -2. **"Invalid credentials" error** - - Ensure user has at least `PVEAuditor` role - - For PBS, user needs `DatastoreReader` permissions - - Try token authentication instead of password +### Logs +```bash +# Docker +docker logs pulse -3. **No data showing** - - Check browser console for errors - - Verify Proxmox API is accessible from Pulse server - - Check Pulse logs: `journalctl -u pulse -f` +# Manual +journalctl -u pulse -f +``` -### Getting Help +## Security -- [Report Issues](https://github.com/rcourtman/Pulse/issues) -- [Discussions](https://github.com/rcourtman/Pulse/discussions) -- [FAQ](docs/FAQ.md) +- Credentials stored encrypted (AES-256-GCM) +- Optional API token authentication +- Export/import requires passphrase +- [Security Details →](docs/SECURITY.md) + +## Development + +```bash +# Frontend +cd frontend-modern +npm install +npm run dev + +# Backend +go run cmd/pulse/*.go +``` + +## Links + +- [Releases](https://github.com/rcourtman/Pulse/releases) +- [Docker Hub](https://hub.docker.com/r/rcourtman/pulse) +- [Issues](https://github.com/rcourtman/Pulse/issues) +- [Discord](https://discord.gg/hEEupTH2x3) ## License -This project is licensed under the MIT License - see [LICENSE](LICENSE) file for details. - -## Acknowledgments - -- Built with [Go](https://golang.org/) and [SolidJS](https://www.solidjs.com/) -- Icons by [Lucide](https://lucide.dev/) -- Inspired by the Proxmox community's monitoring needs - ---- - -Made with ❤️ for the Proxmox community \ No newline at end of file +MIT - See [LICENSE](LICENSE) \ No newline at end of file diff --git a/docs/FAQ.md b/docs/FAQ.md index 7d978a8a0..0f1a582ea 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -1,133 +1,66 @@ -# Frequently Asked Questions - -## General - -### What is Pulse? -Pulse is a real-time monitoring tool for Proxmox Virtual Environment (PVE) and Proxmox Backup Server (PBS). It provides a modern web interface with alerts, webhooks, and comprehensive monitoring capabilities. - -### Is Pulse free? -Yes, Pulse is completely free and open source under the MIT license. - -### What versions of Proxmox are supported? -- Proxmox VE 7.0 and later -- Proxmox Backup Server 2.0 and later +# FAQ ## Installation -### What's the easiest way to install Pulse? -The automated LXC container script is the easiest method: +### What's the easiest way to install? ```bash bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/pulse.sh)" ``` -### Can I run Pulse in Docker? -Yes! Pulse has official Docker images: -```bash -docker run -d -p 7655:7655 -v pulse_config:/etc/pulse -v pulse_data:/data rcourtman/pulse:latest -``` - -### What are the minimum system requirements? -- CPU: 1 vCPU -- RAM: 512MB (1GB recommended) -- Disk: 1GB -- Network: Access to Proxmox API +### System requirements? +- 1 vCPU, 512MB RAM (1GB recommended), 1GB disk +- Network access to Proxmox API ## Configuration -### How do I add a Proxmox node? -1. Open Pulse web UI -2. Go to Settings → Nodes -3. Click "Add Node" -4. Enter your Proxmox credentials -5. Click "Test Connection" then "Save" +### How do I add a node? +Settings → Nodes → Add Node → Enter credentials → Save -### What permissions does the Pulse user need? -- For PVE: `PVEAuditor` role minimum -- For PBS: `DatastoreReader` permission -- For full features: `PVEAdmin` recommended +### What permissions needed? +- PVE: `PVEAuditor` minimum +- PBS: `DatastoreReader` minimum -### Should I use username/password or API tokens? -API tokens are more secure and recommended for production use. They can be created in Proxmox under Datacenter → Permissions → API Tokens. - -### How do I configure alerts? -1. Go to Alerts tab -2. Set your thresholds for CPU, Memory, and Disk -3. Add notification channels (email, webhooks) -4. Configure alert schedule if needed +### API tokens vs passwords? +API tokens are more secure. Create in Proxmox: Datacenter → Permissions → API Tokens ## Troubleshooting -### Why is Pulse not showing any data? -1. Check if Pulse can reach your Proxmox server -2. Verify credentials are correct -3. Check firewall rules for ports 8006 (PVE) or 8007 (PBS) -4. Look at Pulse logs: `journalctl -u pulse -f` +### No data showing? +- Check Proxmox API is reachable (port 8006/8007) +- Verify credentials +- Check logs: `journalctl -u pulse -f` -### Connection refused errors -- Ensure port 7655 is not blocked -- Check if Pulse is running: `systemctl status pulse` -- Verify bind addresses in configuration +### Connection refused? +- Check port 7655 is open +- Verify Pulse is running: `systemctl status pulse` -### Invalid credentials error -- Ensure user exists in Proxmox -- Check realm is correct (e.g., @pam, @pve) -- For API tokens, ensure token is not expired -- Verify user has required permissions +### Invalid credentials? +- Check username includes realm (@pam, @pve) +- Verify API token not expired +- Confirm user has required permissions -### High memory usage -- This is usually from storing metrics history -- Reduce `metricsRetentionDays` in settings -- Restart Pulse to clear old metrics - -## Security - -### Is Pulse secure? -Pulse is designed for internal networks. It uses encrypted storage for credentials and supports various security levels. See the [Security Guide](SECURITY.md) for details. - -### Can I expose Pulse to the internet? -This is not recommended. If needed: -1. Use a reverse proxy with authentication -2. Enable HTTPS -3. Use strong passwords -4. Consider VPN access instead - -### How are credentials stored? -Credentials are encrypted using AES-256-GCM and stored in `/etc/pulse/pulse.enc`. The encryption key is derived from the machine ID. +### High memory usage? +Reduce `metricsRetentionDays` in settings and restart ## Features -### Can Pulse monitor multiple Proxmox clusters? -Yes! You can add multiple PVE and PBS instances in Settings → Nodes. +### Multiple clusters? +Yes, add multiple nodes in Settings -### Does Pulse support PBS in push mode? -Yes, for isolated PBS servers, you can use the PBS agent that pushes data to Pulse. +### PBS push mode? +Yes, use PBS agent for isolated servers. See [PBS Agent docs](PBS-AGENT.md) -### What webhook providers are supported? -- Discord -- Slack -- Gotify -- Telegram -- ntfy.sh -- Microsoft Teams -- Generic webhooks (any JSON endpoint) +### Webhook providers? +Discord, Slack, Gotify, Telegram, ntfy.sh, Teams, generic JSON -### Can I use Pulse with a reverse proxy? -Yes, Pulse works well behind reverse proxies like Nginx, Caddy, or Traefik. Make sure to configure WebSocket support. - -### Does Pulse have an API? -Yes, Pulse provides a REST API. See the API section in the README for endpoints. +### Works with reverse proxy? +Yes, ensure WebSocket support is enabled ## Updates -### How do I update Pulse? -- **Docker**: Pull the latest image and recreate the container -- **LXC/Manual**: Use the update script or download the latest release -- **From source**: Git pull and rebuild +### How to update? +- **Docker**: Pull latest image, recreate container +- **Manual**: Settings → System → Check for Updates -### Will updates break my configuration? -No, Pulse maintains backward compatibility. Your configuration is preserved during updates. - -### How do I know when updates are available? -- Watch the GitHub repository for releases -- Check the version in Settings → About -- Enable GitHub notifications for the project \ No newline at end of file +### Will updates break config? +No, configuration is preserved \ No newline at end of file diff --git a/docs/PBS-AGENT.md b/docs/PBS-AGENT.md index c3ee6e533..f4a58db45 100644 --- a/docs/PBS-AGENT.md +++ b/docs/PBS-AGENT.md @@ -1,240 +1,61 @@ -# PBS Agent Guide +# PBS Agent (Push Mode) -The PBS Agent allows isolated or firewalled Proxmox Backup Servers to push their data to Pulse, eliminating the need for inbound connections. +For PBS servers behind firewalls or in isolated networks that can't be reached by Pulse directly. -## When to Use PBS Agent - -Use the PBS Agent when: -- Your PBS server is behind a firewall with no inbound access -- PBS is on an isolated network segment -- You want to monitor PBS without opening firewall ports -- Corporate security policies prevent inbound connections - -## How It Works - -``` -┌─────────────┐ ┌─────────────┐ -│ PBS │ Push → │ Pulse │ -│ (Agent) │ --------> │ Server │ -│ Port: 8007 │ │ Port: 7655 │ -└─────────────┘ └─────────────┘ -``` - -The agent runs on your PBS server and: -1. Collects metrics locally via PBS API -2. Pushes data to your Pulse server -3. Handles connection failures gracefully -4. Automatically retries on network issues - -## Installation - -### Quick Install +## Quick Install On your PBS server: - ```bash -# Download and extract -cd /opt -wget https://github.com/rcourtman/Pulse/releases/latest/download/pulse-pbs-agent.tar.gz -tar xzf pulse-pbs-agent.tar.gz -cd pulse-pbs-agent - -# Run installer -sudo ./install.sh -``` - -### Manual Installation - -1. **Download the agent binary**: -```bash -wget https://github.com/rcourtman/Pulse/releases/latest/download/pulse-pbs-agent -chmod +x pulse-pbs-agent -sudo mv pulse-pbs-agent /usr/local/bin/ -``` - -2. **Create configuration**: -```bash -sudo mkdir -p /etc/pulse-agent -sudo nano /etc/pulse-agent/config.yml -``` - -3. **Add configuration**: -```yaml -# Pulse server details -pulse: - url: http://your-pulse-server:7655 - token: your-agent-token # Generated in Pulse UI - -# PBS connection -pbs: - host: https://localhost:8007 - user: monitor@pbs - password: your-password - # Or use API token: - # tokenName: monitor - # tokenValue: secret-token - verifySSL: false - -# Agent settings -agent: - interval: 30 # Seconds between updates - name: pbs-prod # Unique name for this PBS -``` - -4. **Create systemd service**: -```bash -sudo nano /etc/systemd/system/pulse-pbs-agent.service -``` - -```ini -[Unit] -Description=Pulse PBS Agent -After=network-online.target -Wants=network-online.target - -[Service] -Type=simple -ExecStart=/usr/local/bin/pulse-pbs-agent -Restart=always -RestartSec=10 -User=pulse-agent -Group=pulse-agent -WorkingDirectory=/etc/pulse-agent - -[Install] -WantedBy=multi-user.target -``` - -5. **Start the service**: -```bash -sudo useradd -r -s /bin/false pulse-agent -sudo chown -R pulse-agent:pulse-agent /etc/pulse-agent -sudo chmod 600 /etc/pulse-agent/config.yml -sudo systemctl daemon-reload -sudo systemctl enable --now pulse-pbs-agent +curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install-pbs-agent.sh | sudo bash ``` ## Configuration -### Pulse Server Setup - -1. In Pulse UI, go to **Settings** → **PBS Agents** -2. Click **Add Agent** -3. Enter a name and generate a token -4. Copy the token for agent configuration - -### Agent Configuration Options - -```yaml -pulse: - url: http://pulse.example.com:7655 # Your Pulse server - token: abc123... # Agent auth token - timeout: 30 # Connection timeout (seconds) - retryInterval: 60 # Retry interval on failure - -pbs: - host: https://localhost:8007 # PBS API endpoint - user: monitor@pbs # PBS user - password: secret # PBS password - fingerprint: "AA:BB:CC..." # Optional TLS fingerprint - verifySSL: true # Verify SSL certificates - -agent: - interval: 30 # Update interval (seconds) - name: pbs-prod # Unique agent name - logLevel: info # Log verbosity (debug|info|warn|error) +Edit `/etc/pulse-pbs-agent/config.json`: +```json +{ + "pulse_url": "http://your-pulse-server:7655", + "api_key": "your-api-key-from-pulse-settings", + "poll_interval": 30, + "pbs_url": "https://localhost:8007", + "pbs_username": "apiuser@pbs", + "pbs_token_name": "pulse", + "pbs_token_value": "uuid-from-pbs" +} ``` -### Environment Variables - -All settings can be overridden with environment variables: - -```bash -PULSE_URL=http://pulse:7655 -PULSE_TOKEN=your-token -PBS_HOST=https://localhost:8007 -PBS_USER=monitor@pbs -PBS_PASSWORD=secret -AGENT_INTERVAL=60 -AGENT_NAME=pbs-backup -``` - -## Monitoring Multiple PBS Servers - -To monitor multiple PBS servers with agents: - -1. Install the agent on each PBS server -2. Use unique agent names for each -3. Generate separate tokens in Pulse UI -4. Each agent pushes to the same Pulse server - -## Troubleshooting - -### Check Agent Status +## Start Agent ```bash +sudo systemctl enable --now pulse-pbs-agent sudo systemctl status pulse-pbs-agent -sudo journalctl -u pulse-pbs-agent -f ``` -### Common Issues +## Get API Key -**Agent can't connect to Pulse**: -- Verify Pulse server URL is correct -- Check network connectivity: `curl http://pulse-server:7655/api/health` -- Ensure firewall allows outbound connections -- Verify agent token is valid +In Pulse web UI: Settings → General → API Key → Generate -**Agent can't connect to PBS**: -- Check PBS API is accessible: `curl -k https://localhost:8007` -- Verify PBS credentials -- Ensure PBS user has DatastoreReader permission -- Check SSL settings if using self-signed certificates +## Create PBS Token -**High CPU usage**: -- Increase the update interval -- Check PBS API performance -- Review agent logs for errors +In PBS web UI: +1. Configuration → Access Control → API Tokens +2. Add Token +3. User: Choose user with Datastore.Audit permission +4. Copy token ID (username@pbs!tokenname) and secret -**Data not appearing in Pulse**: -- Verify agent name matches configuration -- Check Pulse logs for incoming data -- Ensure agent token has correct permissions -- Look for errors in agent logs +## Verify -### Debug Mode - -Run the agent in debug mode: +Check agent logs: ```bash -pulse-pbs-agent -debug +journalctl -u pulse-pbs-agent -f ``` -Or set in config: -```yaml -agent: - logLevel: debug -``` - -## Security Considerations - -1. **Use API tokens** instead of passwords when possible -2. **Secure the config file**: `chmod 600 /etc/pulse-agent/config.yml` -3. **Use HTTPS** for Pulse server connections in production -4. **Rotate tokens** periodically -5. **Monitor agent logs** for suspicious activity +In Pulse UI, PBS data should appear within 1 minute. ## Uninstall - ```bash -# Stop and disable service sudo systemctl stop pulse-pbs-agent sudo systemctl disable pulse-pbs-agent - -# Remove files +sudo rm -rf /etc/pulse-pbs-agent sudo rm /usr/local/bin/pulse-pbs-agent -sudo rm -rf /etc/pulse-agent sudo rm /etc/systemd/system/pulse-pbs-agent.service -sudo systemctl daemon-reload - -# Remove user -sudo userdel pulse-agent ``` \ No newline at end of file