11 KiB
Probo Installation Guide
This document provides comprehensive installation instructions for the Probo compliance management platform daemon (probod).
Installation Methods
Probo can be deployed using either the official Docker image or pre-compiled binaries available through GitHub releases.
Docker Installation
The official Docker images are available on GitHub Container Registry and support multiple architectures:
- Multi-architecture image:
ghcr.io/getprobo/probo:latest - AMD64 (x86_64):
ghcr.io/getprobo/probo:latest-amd64 - ARM64:
ghcr.io/getprobo/probo:latest-arm64
Basic Docker Setup
To run Probo using Docker:
docker run -d \
--name probod \
-p 8080:8080 \
-v /path/to/config.yaml:/etc/probod/config.yaml \
ghcr.io/getprobo/probo:latest
Docker Compose Setup
For a complete setup with dependencies, you can use our compose.prod.yml Docker Compose file:
You can either provide environment variables directly in the docker-compose file or use a config file mounted as a volume.
With Environment Variables
You can find environment variable options in the docker environment variables.
services:
probo:
image: "ghcr.io/getprobo/probo:latest"
environment:
# Required secrets (use secure values in production)
PROBOD_ENCRYPTION_KEY: "thisisnotasecretAAAAAAAAAAAAAAAAAAAAAAAAAAA="
AUTH_COOKIE_SECRET: "this-is-a-secure-secret-for-cookie-signing-at-least-32-bytes"
AUTH_PASSWORD_PEPPER: "this-is-a-secure-pepper-for-password-hashing-at-least-32-bytes"
TRUST_AUTH_TOKEN_SECRET: "this-is-a-secure-secret-for-trust-token-signing-at-least-32-bytes"
# Application settings
PROBOD_BASE_URL: "http://localhost:8080"
API_ADDR: "localhost:8080"
API_CORS_ALLOWED_ORIGINS: "http://localhost:8080"
# PostgreSQL database
PG_ADDR: "postgres:5432"
PG_USERNAME: "postgres"
PG_PASSWORD: "postgres"
PG_DATABASE: "probod"
PG_POOL_SIZE: "100"
# AWS/MinIO S3 storage
AWS_REGION: "us-east-1"
AWS_BUCKET: "probod"
AWS_ACCESS_KEY_ID: "probod"
AWS_SECRET_ACCESS_KEY: "thisisnotasecret"
AWS_ENDPOINT: "http://minio:9000"
# Observability - Metrics & Tracing
METRICS_ADDR: "probo:8081"
TRACING_ADDR: ""
# Email notifications
SMTP_ADDR: "your.smtp.server:587"
SMTP_TLS_REQUIRED: "false"
MAILER_SENDER_NAME: "Probo"
MAILER_SENDER_EMAIL: "no-reply@notification.getprobo.com"
# Chrome for PDF generation
CHROME_DP_ADDR: "chrome:9222"
ports:
- "8080:8080"
- "8081:8081"
- "8443:8443"
volumes:
- "probo-data:/data"
depends_on:
- postgres
- minio
- chrome
postgres:
image: "postgres:17.4"
shm_size: "1g"
command: >
postgres -c "shared_buffers=4GB"
-c "max_connections=200"
-c "log_statement=all"
ports:
- "5432:5432"
volumes:
- "./compose/postgres:/docker-entrypoint-initdb.d:ro"
- "postgres-data:/var/lib/postgresql/data:rw"
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "postgres"
minio:
image: "quay.io/minio/minio"
entrypoint: "sh"
command: |
-c 'mkdir -p /var/lib/minio/probod && minio server --json --console-address :9001 /var/lib/minio'
ports:
- "9000:9000"
- "9001:9001"
volumes:
- "minio-data:/var/lib/minio:rw"
environment:
MINIO_ROOT_USER: "probod"
MINIO_ROOT_PASSWORD: "thisisnotasecret"
chrome:
image: "chromedp/headless-shell:140.0.7259.2"
ports:
- "9222:9222"
command:
- "--headless"
- "--disable-gpu"
- "--disable-dev-shm-usage"
- "--hide-scrollbars"
- "--mute-audio"
- "--no-default-browser-check"
- "--no-first-run"
- "--disable-background-networking"
- "--disable-background-timer-throttling"
- "--disable-extensions"
volumes:
probo-data:
postgres-data:
minio-data:
With mounted Config File
You can find an example configuration file here and modify it as needed.
services:
probo:
image: "ghcr.io/getprobo/probo:latest"
ports:
- "8080:8080"
- "8081:8081"
- "8443:8443"
environment:
- PROBOD_CONFIG=/etc/probod/config.yaml
volumes:
- "probo-data:/data"
- "./cfg/dev.yaml:/etc/probod/config.yaml:ro"
depends_on:
- postgres
- minio
- chrome
postgres:
image: "postgres:17.4"
shm_size: "1g"
command: >
postgres -c "shared_buffers=4GB"
-c "max_connections=200"
-c "log_statement=all"
ports:
- "5432:5432"
volumes:
- "./compose/postgres:/docker-entrypoint-initdb.d:ro"
- "postgres-data:/var/lib/postgresql/data:rw"
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "postgres"
minio:
image: "quay.io/minio/minio"
entrypoint: "sh"
command: |
-c 'mkdir -p /var/lib/minio/probod && minio server --json --console-address :9001 /var/lib/minio'
ports:
- "9000:9000"
- "9001:9001"
volumes:
- "minio-data:/var/lib/minio:rw"
environment:
MINIO_ROOT_USER: "probod"
MINIO_ROOT_PASSWORD: "thisisnotasecret"
chrome:
image: "chromedp/headless-shell:140.0.7259.2"
ports:
- "9222:9222"
command:
- "--headless"
- "--disable-gpu"
- "--disable-dev-shm-usage"
- "--hide-scrollbars"
- "--mute-audio"
- "--no-default-browser-check"
- "--no-first-run"
- "--disable-background-networking"
- "--disable-background-timer-throttling"
- "--disable-extensions"
volumes:
probo-data:
postgres-data:
minio-data:
Docker Architecture Support
The Docker images support the following architectures:
- linux/amd64 (x86_64) - Standard 64-bit Intel/AMD processors
- linux/arm64 - ARM 64-bit processors (Apple Silicon, AWS Graviton, etc.)
Multi-architecture images automatically select the appropriate variant for your platform.
Binary Installation
Pre-compiled binaries are available for download from the GitHub releases page.
Supported Platforms
The following platforms are officially supported:
- Windows: AMD64 (x86_64)
- macOS: AMD64 (x86_64) and ARM64 (Apple Silicon)
- Linux: AMD64 (x86_64) and ARM64 (via Docker)
If your specific platform is not available, please contact us, and we may be able to add support for additional architectures.
Installation Steps
-
Download the Binary
Visit the GitHub releases page and download the appropriate archive for your platform:
- Windows:
probod_Windows_x86_64.zip - macOS (Intel):
probod_Darwin_x86_64.tar.gz - macOS (Apple Silicon):
probod_Darwin_arm64.tar.gz
- Windows:
-
Extract the Archive
# For tar.gz files (macOS/Linux) tar -xzf probod_Darwin_x86_64.tar.gz # For zip files (Windows) # Use your preferred extraction tool -
Install the Binary
macOS/Linux:
# Move to a directory in your PATH sudo mv probod /usr/local/bin/ # Make executable (if not already) sudo chmod +x /usr/local/bin/probodWindows:
# Move probod.exe to a directory in your PATH # Or add the current directory to your PATH environment variable -
Verify Installation
probod --version
Running the Binary
Once installed, you can run Probo with a configuration file:
# Using the default configuration location
probod --config /etc/probod/config.yaml
# Or specify a custom configuration file
probod --config ./my-config.yaml
System Requirements
Minimum Requirements
- CPU: 1 core, 2 GHz
- Memory: 1 GB RAM
- Storage: 10 GB available space
- Network: Internet connectivity for external integrations
Recommended Requirements
- CPU: 2+ cores, 2.4 GHz
- Memory: 4 GB RAM
- Storage: 50 GB available space (SSD preferred)
- Network: Stable internet connection
Dependencies
Probo requires the following external services:
- PostgreSQL Database (version 12 or higher)
- S3-Compatible Storage (AWS S3, MinIO, etc.)
- Chrome/Chromium (for PDF generation via Chrome DevTools Protocol)
Optional dependencies:
- SMTP Server (for email notifications)
- OpenAI API (for AI-powered features)
Quick Start
1. Database Setup
Create a PostgreSQL database for Probo:
CREATE DATABASE probod;
CREATE USER postgres WITH PASSWORD 'your_secure_password';
GRANT ALL PRIVILEGES ON DATABASE probod TO postgres;
2. Configuration
Create a basic configuration file (config.yaml):
probod:
hostname: "localhost:8080"
encryption-key: "your-base64-encoded-encryption-key"
pg:
addr: "localhost:5432"
username: "postgres"
password: "your_secure_password"
database: "probod"
aws:
region: "us-east-1"
bucket: "probod"
access-key-id: "your-access-key"
secret-access-key: "your-secret-key"
endpoint: "http://localhost:9000" # For MinIO
3. Start the Service
# Using Docker
docker run -d \
--name probod \
-p 8080:8080 \
-v ./config.yaml:/etc/probod/config.yaml \
ghcr.io/getprobo/probo:latest
# Using Binary
probod --config config.yaml
4. Access the Application
Open your web browser and navigate to http://localhost:8080 to access the Probo web interface.
Production Deployment
Security Considerations
- Use strong, unique secrets for all authentication components
- Enable TLS for all external communications
- Use managed database services with encryption at rest
- Implement proper monitoring and logging
- Regular security updates and vulnerability assessments
Load Balancing
For high-availability deployments, consider using:
- Reverse Proxy: Nginx, HAProxy, or cloud load balancers
- Database Clustering: PostgreSQL with read replicas
- File Storage: Distributed S3-compatible storage
Monitoring
Probo provides metrics and health checks:
- Health Check:
GET /health - Metrics: Prometheus-compatible metrics endpoint
- Logging: Structured JSON logging with configurable levels
Troubleshooting
Common Installation Issues
-
Permission Denied (Binary)
chmod +x probod -
Database Connection Failed
- Verify database credentials and network connectivity
- Check PostgreSQL is running and accepting connections
-
Docker Image Pull Failed
docker login ghcr.io docker pull ghcr.io/getprobo/probo:latest -
Port Already in Use
# Find process using port 8080 lsof -i :8080 # Or use a different port in configuration
Getting Help
- Documentation: Check the configuration reference
- GitHub Issues: Report bugs and request features
- Community: Join our community discussions
Log Analysis
Enable debug logging to troubleshoot issues:
probod:
# ... other configuration
log-level: debug
Check startup logs for configuration validation errors and service initialization issues.