Production Deployment
Server requirements
Section titled “Server requirements”Backend
Section titled “Backend”- PHP 8.4+ with extensions:
pdo_pgsql,mbstring,xml,curl,zip - Composer 2.x
- PostgreSQL 18
- Redis (recommended for cache/queues)
- Nginx or Apache
Frontend
Section titled “Frontend”- Node.js 20+ (for build)
- Static web server (Nginx, Vercel, Netlify…)
Backend deployment
Section titled “Backend deployment”-
Clone and install
Terminal window git clone https://github.com/xetaio/XetaSuite-core.gitcd XetaSuite-corecomposer install --no-dev --optimize-autoloader -
Configure environment
Terminal window cp .env.example .envphp artisan key:generateEdit
.env:Terminal window APP_ENV=productionAPP_DEBUG=falseAPP_URL=https://api.xetasuite.comDB_CONNECTION=pgsqlDB_HOST=your-db-hostDB_DATABASE=xetasuiteDB_USERNAME=your-userDB_PASSWORD=your-passwordSANCTUM_STATEFUL_DOMAINS=xetasuite.comSESSION_DOMAIN=.xetasuite.comSPA_URL=https://xetasuite.comQUEUE_CONNECTION=redisCACHE_DRIVER=redisSESSION_DRIVER=database -
Optimize for production
Terminal window php artisan config:cachephp artisan route:cachephp artisan view:cachephp artisan event:cache -
Run migrations
Terminal window php artisan migrate --force -
Configure storage
Terminal window php artisan storage:link
Nginx configuration (Backend)
Section titled “Nginx configuration (Backend)”server { listen 443 ssl http2; server_name api.xetasuite.com;
root /var/www/xetasuite-core/public; index index.php;
ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key;
add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff";
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; }
location ~ /\.(?!well-known).* { deny all; }}Frontend deployment
Section titled “Frontend deployment”-
Production build
Terminal window cd XetaSuite-Reactnpm cinpm run build -
Configure environment
Create
.env:Terminal window VITE_API_URL=https://api.xetasuite.com -
Deploy static files
Upload the
dist/folder contents to your web server or CDN.
Nginx configuration (Frontend)
Section titled “Nginx configuration (Frontend)”server { listen 443 ssl http2; server_name app.xetasuite.com;
root /var/www/xetasuite-react/dist; index index.html;
ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key;
location / { try_files $uri $uri/ /index.html; }
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ { expires 1y; add_header Cache-Control "public, immutable"; }}Queue workers
Section titled “Queue workers”See the Queue Workers guide for setting up Supervisor or Systemd.
SSL certificates
Section titled “SSL certificates”sudo apt install certbot python3-certbot-nginxsudo certbot --nginx -d api.xetasuite.com -d app.xetasuite.comForge automatically manages SSL certificates with Let’s Encrypt.
Post-deployment checklist
Section titled “Post-deployment checklist”-
APP_DEBUG=false -
APP_ENV=production - Caches generated (
config:cache,route:cache, etc.) - Queue worker running
- Scheduler cron configured
- SSL certificates installed
- Backups configured
- Monitoring set up