Skip to content
Current State: ALPHA - Use at your own risk / Work in Progress

Deployment Guide

Want to try it first? Check out the live demo at app.eryxon.eu before deploying your own instance.

The fastest way to deploy Eryxon MES:

Terminal window
chmod +x scripts/setup.sh
./scripts/setup.sh

This interactive script handles all setup steps. For manual setup, continue reading.

  1. Go to supabase.com and create a new project
  2. Note your Project URL, anon key, and service role key from Settings > API
Terminal window
cp .env.example .env
# Fill in VITE_SUPABASE_URL and VITE_SUPABASE_PUBLISHABLE_KEY
supabase link --project-ref <your-project-ref>
supabase db push
Terminal window
# Apply via SQL Editor in Supabase Dashboard, or:
supabase db execute < supabase/seed.sql

This creates storage buckets (parts-images, issues, parts-cad, batch-images) and schedules cron jobs.

Terminal window
supabase functions deploy
Terminal window
supabase secrets set \
SUPABASE_URL=<your-project-url> \
SUPABASE_SERVICE_ROLE_KEY=<your-service-role-key>

Optional secrets:

SecretPurpose
RESEND_API_KEYEmail invitations via Resend
APP_URLBase URL for invitation links
EMAIL_FROMSender email for invitations
CRON_SECRETAuth for monthly-reset-cron
SELF_HOSTED_MODESet to “true” for self-hosted mode
Terminal window
npm ci
npm run dev
  1. Connect your Git repository to Cloudflare Pages
  2. Build command: npm run build
  3. Output directory: dist
  4. Add environment variables in Cloudflare Pages settings
Terminal window
docker build \
--build-arg VITE_SUPABASE_URL=<url> \
--build-arg VITE_SUPABASE_PUBLISHABLE_KEY=<key> \
--build-arg VITE_SUPABASE_PROJECT_ID=<project-id> \
-t eryxon-flow .
docker run -p 80:80 eryxon-flow

Option D: Docker Compose (Production with SSL)

Section titled “Option D: Docker Compose (Production with SSL)”
Terminal window
# Edit Caddyfile - replace domain with yours
# Edit docker-compose.prod.yml if needed
docker compose -f docker-compose.prod.yml up -d
  1. Navigate to your deployment URL
  2. Click “Sign Up” to create the first admin account
  3. The first user automatically becomes admin with their own tenant

Turnstile is optional. Without it, auth works but without bot protection.

To enable:

  1. Create a Turnstile widget at Cloudflare Dashboard
  2. Set VITE_TURNSTILE_SITE_KEY in your environment
  3. Configure the Turnstile secret key in Supabase Dashboard > Auth > Captcha
  4. On Vercel, keep the repo vercel.json so SPA rewrites and CSP headers continue to allow https://challenges.cloudflare.com

Run the verification script to check your setup:

Terminal window
chmod +x scripts/verify-setup.sh
./scripts/verify-setup.sh

See the Self-Hosting Guide for the complete rollout, troubleshooting, and environment notes.