RaisFastRaisFast
Full-Stack Development

Production Deployment

Deploy RaisFast to production — single server, Docker, TLS, CI/CD, and monitoring.

Deployment Options

MethodBest ForComplexity
Single binary + systemdSmall apps, VPSLow
DockerTeams, CI/CDMedium
Docker ComposeFull stack (backend + frontend)Medium

Option 1 — Single Binary

The simplest deployment. Just copy and run.

Build or Download

# Download latest release
curl -fsSL https://raisfast.com/install.sh | sh

# Or build from source
git clone https://github.com/RaisFast/raisfast.git
cd raisfast
cargo build --release --no-default-features --features db-sqlite

Production .env

APP_ENV=production
APP_HOST=0.0.0.0
APP_PORT=9898

DATABASE_URL=sqlite:./storage/db/raisfast.db?mode=rwc

JWT_SECRET=<your-strong-secret-at-least-32-chars>
JWT_ACCESS_EXPIRES=900
JWT_REFRESH_EXPIRES=604800

CORS_ORIGINS=https://yourdomain.com
BASE_URL=https://api.yourdomain.com

STORAGE_DRIVER=local
UPLOAD_DIR=./storage/uploads
MAX_UPLOAD_SIZE=104857600

systemd Service

[Unit]
Description=RaisFast Server
After=network.target

[Service]
Type=simple
User=raisfast
WorkingDirectory=/opt/raisfast
ExecStart=/opt/raisfast/raisfast
Restart=always
RestartSec=5
EnvironmentFile=/opt/raisfast/.env

[Install]
WantedBy=multi-user.target
sudo systemctl enable raisfast
sudo systemctl start raisfast

Option 2 — Docker

Dockerfile

FROM debian:bookworm-slim

COPY target/release/raisfast /usr/local/bin/raisfast
COPY .env /app/.env
WORKDIR /app

EXPOSE 9898
CMD ["raisfast"]

Build and Run

docker build -t raisfast .
docker run -d \
  --name raisfast \
  -p 9898:9898 \
  -v raisfast-data:/app/storage \
  --env-file .env \
  raisfast

Docker Compose (Backend + Frontend)

services:
  backend:
    build: .
    ports:
      - "9898:9898"
    volumes:
      - ./storage:/app/storage
    env_file: .env

  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    environment:
      - RAISFAST_URL=http://backend:9898

  caddy:
    image: caddy:2
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy-data:/data
      - caddy-config:/config

volumes:
  caddy-data:
  caddy-config:

TLS / HTTPS

Option A — Caddy (Automatic HTTPS)

yourdomain.com {
    reverse_proxy localhost:3000
}

api.yourdomain.com {
    reverse_proxy localhost:9898
}

Caddy automatically provisions and renews Let's Encrypt certificates.

Option B — Nginx + Certbot

server {
    listen 443 ssl http2;
    server_name api.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/api.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/api.yourdomain.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:9898;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Option C — Built-in TLS

TLS_CERT_PATH=/etc/ssl/certs/yourdomain.pem
TLS_KEY_PATH=/etc/ssl/private/yourdomain.key

Health Monitoring

Health Endpoint

curl http://localhost:9898/health

Server Info

curl http://localhost:9898/api/v1/info

Backup

# Manual backup
raisfast db backup

# Cron job (daily at 2 AM)
0 2 * * * /usr/local/bin/raisfast db backup >> /var/log/raisfast-backup.log 2>&1

CI/CD (GitHub Actions Example)

name: Deploy
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build frontend
        run: |
          cd frontend
          npm ci
          npm run build
      - name: Deploy
        run: |
          rsync -avz frontend/dist/ server:/var/www/frontend/
          ssh server "cd /opt/raisfast && git pull && sudo systemctl restart raisfast"

Production Checklist

  1. APP_ENV=production is set
  2. JWT_SECRET is a strong random string (32+ chars)
  3. CORS_ORIGINS lists your frontend domains
  4. BASE_URL matches your public URL
  5. TLS is enabled (Caddy/Nginx/built-in)
  6. Database backups are scheduled
  7. Upload directory is writable
  8. Health endpoint is monitored

On this page