Documentation

Deploy: Your Own Server

Taking an exported system live on a plain VPS

Deploying to your own server

[PLACEHOLDER — route to confirm] This guide targets a plain VPS ([own VPS] — e.g. DigitalOcean, Hetzner, AWS EC2) managed by hand or with a provisioning tool. Once the recommended route is confirmed, name the tool and fold its specifics in.

This guide is for the developer or Stellify partner taking an exported Stellify system live on their own infrastructure. The export is standard Laravel — it runs anywhere PHP runs, with no Stellify runtime.

Prerequisites

  • A server with PHP 8.2+ (with the usual Laravel extensions: mbstring, openssl, pdo, tokenizer, xml, ctype, curl, fileinfo), Composer, Node.js + npm
  • A web server (nginx is typical) with the document root pointed at the app's public/ directory
  • MySQL or PostgreSQL
  • HTTPS via your certificate tooling of choice
  • The exported code, via GitHub sync (recommended) or ZIP download

Environment variables

Copy .env.example to .env and fill it in:

  • APP_NAME, APP_ENV=production, APP_DEBUG=false, APP_URL
  • APP_KEY — generate with php artisan key:generate
  • DB_* — your database credentials
  • SESSION_DRIVER, CACHE_STORE, QUEUE_CONNECTION — exports default these to database, which works without Redis; switch to Redis later if load demands it
  • MAIL_MAILER + MAIL_* for your email provider, if the system sends email
  • Any module-specific keys listed in .env.example (Stripe, S3, and so on)

Database

Create the database and user, set the DB_* variables, then:

php artisan migrate --force

Queue worker and scheduler

If the system queues work, run a supervised worker (systemd or Supervisor):

[program:app-worker]
command=php /var/www/app/artisan queue:work --tries=3 --max-time=3600
autostart=true
autorestart=true

If the system uses scheduled tasks, add the scheduler cron:

* * * * * cd /var/www/app && php artisan schedule:run >> /dev/null 2>&1

Mail

Set the MAIL_* variables and send a test before go-live. Verify your sending domain with the provider so mail lands in inboxes.

First deployment

git clone <your-repo> /var/www/app && cd /var/www/app
composer install --no-dev --optimize-autoloader
cp .env.example .env   # then fill it in
php artisan key:generate
npm ci && npm run build
php artisan migrate --force
php artisan config:cache && php artisan route:cache && php artisan view:cache
chown -R www-data:www-data storage bootstrap/cache

Point nginx at public/, confirm HTTPS, and you're live.

Applying a re-export

As Stellify improves the modules a system is built from, the customer can buy a re-export: a fresh build from the latest module versions against their accepted requirements, committed to the same repo via GitHub sync. Changes you made outside the Studio are not carried across — re-apply them on top, reviewing the merge like any upstream update. Then deploy:

git pull
composer install --no-dev --optimize-autoloader
npm ci && npm run build
php artisan migrate --force
php artisan config:cache && php artisan route:cache && php artisan view:cache