Skip to main content
PERSCOM can be self-hosted on your own infrastructure. Choose from three deployment options based on your technical requirements and expertise.

Deployment Options

Railway

One-click deployment with automatic scaling and managed infrastructure.Best for: Quick setup, minimal DevOps experience

Docker

Run locally or on any server with Docker Compose.Best for: Development, small deployments, full control

Kubernetes

Production-grade deployment with Helm charts.Best for: Large organizations, high availability requirements

Railway (One-Click Deployment)

Railway provides the fastest path to a running PERSCOM instance. It handles infrastructure, databases, and scaling automatically.

Deploy To Railway

Click the button below to deploy PERSCOM to Railway: Deploy on Railway

What Railway Provisions

Railway automatically creates and configures:
  • Laravel Application — The main PERSCOM web application
  • Queue Worker — Background job processing with Horizon
  • Scheduler — Automated tasks and cron jobs
  • MySQL Database — Persistent data storage
  • Redis Cache — Session and cache storage

Deployment Steps

  1. Click the Deploy on Railway button above.
  2. Sign in to Railway (or create an account).
  3. Authorize Railway to access the repository.
  4. Wait for the build to complete (approximately 5-10 minutes).
  5. Access your PERSCOM instance at the provided URL.
Railway automatically configures all required environment variables and connects services together.

Railway Pricing

Railway offers usage-based pricing:
  • Hobby Plan — $5/month, suitable for small organizations
  • Pro Plan — $20/month, includes team features and priority support
Monitor your resource usage in the Railway dashboard to optimize costs.

Docker Compose (Local/Self-Hosted)

Docker Compose is ideal for local development or deploying to a single server.

Prerequisites

Quick Start

  1. Clone the repository:
  2. Copy the environment file:
  3. Start the containers:
  4. Run the setup command:
  5. Access PERSCOM at http://localhost:8080

Services

Docker Compose starts the following services:

Configuration

Edit your .env file to customize the deployment:

Common Commands

Production Considerations

For production Docker deployments:
  1. Use the production target: Modify compose.yaml to use the production target instead of development:
  2. Set secure passwords for MySQL and Redis.
  3. Configure a reverse proxy (nginx, Traefik, or Caddy) for SSL termination.
  4. Enable backups for the MySQL volume.
  5. Set APP_DEBUG=false and APP_ENV=production.

Kubernetes (Helm Charts)

For production environments requiring high availability and scalability, deploy PERSCOM to Kubernetes using Helm charts.

Prerequisites

  • Kubernetes cluster (1.24+)
  • Helm (3.0+)
  • kubectl configured for your cluster
  • Persistent volume provisioner (for MySQL and Redis)

Add The Helm Repository

Install PERSCOM

Configuration Values

Create a values.yaml file for custom configuration:
Install with your custom values:

Scaling

Scale the web application horizontally:
Or configure auto-scaling:

Upgrading

Environment Variables

Key environment variables for all deployment methods:

Required

Optional Integrations

Security Best Practices

Follow these security practices for all production deployments.
  1. Generate strong secrets — Use unique, random values for APP_KEY, database passwords, and API keys
  2. Enable HTTPS — Always use SSL/TLS in production
  3. Rotate credentials — Regularly update passwords and API keys
  4. Restrict database access — Only allow connections from application servers
  5. Enable backups — Configure automated database backups
  6. Monitor logs — Set up log aggregation and alerting
  7. Keep updated — Regularly update PERSCOM and dependencies

Troubleshooting

Application Won’t Start

  1. Check logs: docker compose logs perscom or kubectl logs -n perscom
  2. Verify database connectivity
  3. Ensure all required environment variables are set
  4. Run migrations: php artisan migrate

Database Connection Errors

  1. Verify DB_HOST, DB_DATABASE, DB_USERNAME, and DB_PASSWORD
  2. Ensure the database service is running
  3. Check network connectivity between services

Queue Jobs Not Processing

  1. Verify Redis is running and accessible
  2. Check Horizon status: php artisan horizon:status
  3. Review Horizon logs for errors

Permission Errors

  1. Ensure storage/ and bootstrap/cache/ directories are writable
  2. For Docker, verify volume permissions match the container user

Support

Need help with deployment?

Community Slack

Get help from the PERSCOM community.

Documentation

Browse guides and troubleshooting resources.