Skip to main content
Pala offers two installation options: self-hosting for full control over your infrastructure, or our upcoming managed cloud platform.

Self-Hosted Installation

Run Pala on your own infrastructure for complete control. Ideal for teams with specific security, compliance, or customization requirements.Pala’s architecture is intentionally simple—a single monolithic application with a SQLite database. This means self-hosting requires minimal operational overhead. No complex microservices, separate database servers, or distributed systems to manage.
Persistent Storage Required: Pala stores uses a SQLite database that requires persistent disk storage. It will NOT work on some serverless platforms like Vercel, Netlify, or Cloudflare Pages.

Choose Your Hosting Path

Select the approach that matches your technical comfort level and requirements. All options can run Pala for $5-7/month.
New to self-hosting? Start with Railway or Fly.io for the easiest setup. If you need more control or lower costs at scale, consider VPS hosting.
What you get: One-click deployment, automatic SSL, managed infrastructure. No server management required.Railway (Recommended)
  • Click deploy button, done in 5 minutes
  • From $5/month with persistent volumes included
  • Automatic deployments and SSL certificates
  • What you need: Just a Railway account
Fly.io
  • Free tier includes 3GB persistent volume
  • Global edge deployment
  • Good for testing or small production sites
  • What you need: Fly.io account + CLI installation
Quick start: If you just want to try Pala, click the Railway deploy button for instant setup. For production sites or when you need full control, choose the VPS path.
For contributing to Pala or testing locally:
  • devenv (install here) or Dev Container compatible environment (VS Code)
  • Git
Local Development Steps:
1

Clone the repository

git clone https://github.com/palacms/palacms.git
cd palacms
2

Open the devenv shell

devenv shell
If you have configured direnvto automatically open the devenv shell, you may ignore this step.
3

Install dependencies

npm install
4

Build the application

npm run build
Initial build is required before starting the dev server.
5

Start development server

npm run dev
6

Access the application

Local development is for testing only. All code and content is stored in local database under pb_data directory.

Manual Deployment (VPS & Custom Infrastructure)

Using Railway or Fly.io? You can skip this section - those platforms handle Docker deployment automatically.
For VPS hosting (Hetzner, DigitalOcean, etc.) or custom infrastructure, deploy Pala as a Docker container using Docker Compose or by running Docker commands directly. See the PocketBase production deployment guide for additional information.
1

Point your domain to the server

Configure your DNS to point your domain name to the server where you’ll host Pala.
2

Prepare Docker deployment

Use Docker Compose (recommended) or run Docker commands directly. Use ghcr.io/palacms/palacms:latest as the image.Required volume: Add a volume for the path /app/pb_data. This is where all files and the database will be stored.Optional environment variables (only take effect on first start):
  • PALA_APP_URL - Sets base URL used for generating links in the backend (e.g., emails)
  • PALA_SUPERUSER_EMAIL + PALA_SUPERUSER_PASSWORD - Creates initial superuser account for accessing PocketBase dashboard.
  • PALA_USER_EMAIL + PALA_USER_PASSWORD - Creates initial user account for accessing PalaCMS.
services:
  palacms:
    image: ghcr.io/palacms/palacms:latest
    restart: always
    ports:
      - 8080:8080
    volumes:
      - palacms-data:/app/pb_data
    # Optional environment variables:
    # environment:
    #   - PALA_APP_URL=https://example.com
    #   - [email protected]
    #   - PALA_SUPERUSER_PASSWORD=secure-password
    #   - [email protected]
    #   - PALA_USER_PASSWORD=secure-password

volumes:
  palacms-data:
3

Complete setup

Navigate to your domain name to complete setup. Setup only starts if a superuser was not created using environment variables in the previous step.
4

Configure PocketBase

Configure PocketBase settings by navigating to https://your-domain.com/_/ (replace with your domain).
5

Create your first site

Create your first site by navigating to https://your-domain.com/admin (replace with your domain). Note that the site is created using the domain name used to access the CMS.

Next Steps