Quick Deploy: Railway
The fastest way to deploy Pala to production.Prerequisites
- Railway account (free to start)
- Domain name (optional, Railway provides a free subdomain)
Deployment Steps
2
Configure environment (optional)
Set environment variables if you want automated setup:
PALA_SUPERUSER_EMAILPALA_SUPERUSER_PASSWORDPALA_APP_URL(optional, auto-detected)
3
Wait for deployment
Railway will:
- Pull the Docker image
- Create a persistent volume
- Deploy the container
- Generate a URL
4
Access your instance
Click the generated URL to access Pala. If you didn’t set environment variables, you’ll see the setup screen.
5
Configure custom domain (optional)
Railway Settings → Domains → Add custom domain
VPS Deployment
Deploy to any VPS for full control over your infrastructure.Prerequisites
- VPS with Docker installed (Hetzner, DigitalOcean, etc.)
- SSH access to your server
- Domain name pointed to your server IP
- Basic command line knowledge
Option 1: Docker Compose (Recommended)
1
SSH into your server
2
Create project directory
3
Create docker-compose.yml
4
Start the container
5
Verify it's running
Option 2: Docker Run
For simpler setups without compose:Configure Reverse Proxy
Pala runs on port 8080. Use a reverse proxy for SSL and domain routing:- Nginx
- Caddy
- Traefik
Platform-Specific Guides
Hetzner Cloud
Hetzner offers affordable VPS hosting in Europe and the US.- Create a VPS (CX22 recommended: €4/month)
- Install Docker:
- Follow VPS deployment steps above
- Configure firewall to allow ports 80, 443, and 22
DigitalOcean
DigitalOcean provides simple VPS hosting with excellent documentation.- Create a Droplet ($6/month minimum)
- Choose “Docker” from one-click apps (or install manually)
- Follow VPS deployment steps above
- Use DigitalOcean’s cloud firewalls for security
Fly.io
Fly.io offers a free tier with persistent volumes:1
Install Fly CLI
2
Login to Fly
3
Create fly.toml
4
Create volume
5
Deploy
Database Backups
Pala uses SQLite, stored in/app/pb_data. Back up this directory regularly.
Cloud users: Backups are handled automatically. Backup frequency depends on your plan.
PocketBase Automated Backups (Recommended)
PocketBase has built-in automated backups that you can configure through the admin UI.1
Access PocketBase Admin
Navigate to
https://your-domain.com/_/ and log in with your admin credentials.2
Go to Settings → Backups
Click on Settings in the sidebar, then select the Backups tab.
3
Configure backup schedule
Set a cron expression for your backup schedule:
- Daily at 2 AM:
0 2 * * * - Every 6 hours:
0 */6 * * * - Hourly:
0 * * * * - Every minute (not recommended):
* * * * *
4
Choose backup location
- Local storage: Backups saved to
/app/pb_data/backups - S3-compatible storage: Configure AWS S3, Backblaze B2, or similar for off-site backups
5
Set retention policy
Configure how many backups to keep (e.g., keep last 7 days of backups).
Manual Backups with Docker
Restore from Backup
Updating Pala
Docker Compose
Docker Run
Performance Optimization
Enable Gzip Compression
In your reverse proxy: Nginx:Add Caching Headers
Use a CDN
Point your domain through Cloudflare (free tier) for:- Global CDN
- DDoS protection
- SSL certificates
- Caching
Security Checklist
Use strong passwords
Use strong passwords
Generate random passwords for all accounts. Never use default or simple passwords.
Enable firewall
Enable firewall
Only allow ports 80, 443, and 22 (SSH). Block all other inbound traffic.
Keep Docker updated
Keep Docker updated
Regularly update Docker and the Pala image for security patches.
Use HTTPS everywhere
Use HTTPS everywhere
Never serve Pala over HTTP in production. Use Let’s Encrypt for free SSL certificates.
Restrict SSH access
Restrict SSH access
- Disable password authentication
- Use SSH keys only
- Change default SSH port
- Use fail2ban to block brute force attempts
Regular backups
Regular backups
Automate daily backups and store them off-server (S3, Backblaze, etc.).
Monitor logs
Monitor logs
Check Docker logs regularly for suspicious activity: