2.0 KiB
2.0 KiB
SKG Marketing Studio VPS Deployment
Production domain:
- App:
https://marketing.skg.com - API:
https://marketing.skg.com/api
Current VPS target:
- Host:
76.13.31.179 - OS: Ubuntu 24.04
- Runtime: Docker Compose
- Public ingress: existing Coolify Traefik on ports 80/443
DNS:
marketing.skg.com A 76.13.31.179
Do not run a host Nginx on ports 80/443. Those ports are already owned by Coolify / Traefik. This project publishes through Docker labels on the external coolify network.
First Deploy
On the VPS:
mkdir -p /opt/skg-marketing-studio
cd /opt/skg-marketing-studio
cp deploy/.env.production.example deploy/.env.production
Fill deploy/.env.production with the real production keys. Keep this file out of git.
Create the production web login values in deploy/.env.production. Replace the password as needed and keep the session secret private:
WEB_AUTH_USERNAME=skg
WEB_AUTH_PASSWORD=change-this-password
WEB_AUTH_SESSION_SECRET=$(openssl rand -hex 32)
WEB_AUTH_COOKIE_NAME=skg_marketing_session
WEB_AUTH_COOKIE_SECURE=true
Then start:
docker compose -f docker-compose.prod.yml --env-file deploy/.env.production up -d --build
Verify:
curl -I https://marketing.skg.com
curl -I https://marketing.skg.com/login/
curl -i https://marketing.skg.com/api/health
docker compose -f docker-compose.prod.yml ps
Update
Sync the repo to /opt/skg-marketing-studio, then run:
docker compose -f docker-compose.prod.yml --env-file deploy/.env.production up -d --build
Runtime Notes
webis a static Next export served by Nginx.webexposes/login/publicly. All workspace routes redirect to/login/until the FastAPI session cookie passes Nginxauth_request;/api/returns JSON 401 when unauthenticated and then proxies toskg-marketing-api:4291after login.apiis only on the internal project network and stores jobs under/data/jobs.- Server-side job files persist in
./data/jobson the VPS. - Large uploads are allowed up to
2gat the Nginx proxy layer.