Files
ladill-servers/DEPLOY.md
T
isaaccladandCursor b6c8ac343f Extract Ladill Servers as standalone app at servers.ladill.com.
VPS and dedicated server ordering, managed panels, SSO, billing, and launcher integration — forked from hosting infrastructure with server-focused routes and dashboard.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-06 19:18:30 +00:00

2.1 KiB

Ladill Servers — deploy & cutover runbook

Standalone app for VPS and dedicated servers at servers.ladill.com. Shared web hosting lives on hosting.ladill.com.

Mirrors the Ladill Hosting / Domains deployment model (app-slot + own DB + Gitea CI).


1. Gitea repo + CI

  1. Repo: ladill-servers on Gitea
  2. Push to main triggers .gitea/workflows/deploy.yml
  3. Deploy path: /var/www/ladill-servers/current

2. Server app-slot + database

sudo install -d -o deploy -g www-data /var/www/ladill-servers

sudo mysql -e "CREATE DATABASE ladill_servers CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER 'ladill_servers'@'127.0.0.1' IDENTIFIED BY '<pw>';"
sudo mysql -e "GRANT ALL ON ladill_servers.* TO 'ladill_servers'@'127.0.0.1'; FLUSH PRIVILEGES;"

Create /var/www/ladill-servers/.env from .env.example, fill secrets, then php artisan key:generate.

3. Register the OIDC client (platform / auth.ladill.com)

php artisan passport:client \
  --name="Ladill Servers" \
  --redirect_uri="https://servers.ladill.com/sso/callback"

Set LADILL_SSO_CLIENT_ID / LADILL_SSO_CLIENT_SECRET in this app's .env.

4. Platform integration

On the platform .env:

BILLING_API_KEY_SERVERS=<same as this app>
IDENTITY_API_KEY_SERVERS=<same as this app>
RP_SERVERS_FRONTCHANNEL_LOGOUT=https://servers.ladill.com/sso/logout-frontchannel
LADILL_SERVERS_APP_URL=https://servers.ladill.com

Then php artisan config:cache on the platform.

5. nginx + TLS

sudo deployment/setup-service-subdomain-nginx.sh servers --app ladill-servers

6. First deploy

Push to main, then:

cd /var/www/ladill-servers/current
php artisan migrate --force
php artisan db:seed --class=HostingProductSeeder --force
php artisan config:cache route:cache view:cache

Ensure a queue worker runs via supervisor (ladill-servers-worker:*).

7. Smoke test

  • https://servers.ladill.com/up → 200
  • Logged-out → SSO redirect to auth.ladill.com
  • Logged-in → dashboard, VPS and dedicated pages load
  • Launcher shows Servers icon; home hub no longer "Soon"