SUPABASE_ENCRYPTION_KEY: Generated in Step 1 using openssl rand -base64 32
GITHUB_APP_ID: GitHub → Settings → Developer settings → GitHub Apps → Your App → App ID (at top of page)
GITHUB_APP_PRIVATE_KEY: GitHub App settings → Scroll to "Private keys" section → Generate a private key → Download .pem file (replace newlines with \n)
AUTH_SUPABASE_URL and AUTH_SUPABASE_ANON_KEY: Same as SUPABASE_URL and SUPABASE_ANON_KEY if not using global auth
Note: For GITHUB_APP_PRIVATE_KEY, replace all line breaks with \n to make it a single line.
Validation: The configuration will be validated when you run sfp server init in Step 4. Invalid credentials will cause the initialization to fail with specific error messages.
Step 3: Prepare Your Server
SSH into your server and run:
Step 4: Deploy SFP Server
From your local machine, run:
Alternative for local deployment:
The initialization process will:
Create directory structure
Generate Docker Compose configuration
Configure Caddy for automatic HTTPS
Initialize database schema
Create default admin user (if Supabase credentials provided)
Step 5: Start the Server
After initialization, start the server containers:
Step 6: Verify Installation
Expected response:
Step 7: Enable Auto-Restart
SSH to your server and configure auto-restart:
Optional Features
Slack Bot Integration (Experimental)
After your server is running, you can optionally enable the AI-powered Slack bot for natural language interaction with your sfp-server:
# Check server status
sfp server status \
--tenant your-company \
--ssh-connection ubuntu@your-server-ip \
--identity-file ~/.ssh/your-key.pem
# Test the API endpoint
curl https://sfp.yourcompany.com/health
{"status": "healthy", "version": "x.x.x"}
# Enable Docker on boot
sudo systemctl enable docker
# Set restart policy
docker update --restart=unless-stopped $(docker ps -q)
# Run the interactive setup wizard
sfp server slack setup
# View logs
sfp server logs --tenant your-company \
--ssh-connection ubuntu@your-server-ip \
--identity-file ~/.ssh/your-key.pem
# Stop server
sfp server stop --tenant your-company \
--ssh-connection ubuntu@your-server-ip \
--identity-file ~/.ssh/your-key.pem
# Start server
sfp server start --tenant your-company \
--ssh-connection ubuntu@your-server-ip \
--identity-file ~/.ssh/your-key.pem
# Update to latest version
sfp server update --tenant your-company \
--ssh-connection ubuntu@your-server-ip \
--identity-file ~/.ssh/your-key.pem
# On the server
docker logout ghcr.io
echo "your-pat" | docker login ghcr.io -u username --password-stdin
# Check logs on the server
cd /opt/sfp-server/tenants/your-company
docker compose logs -f