Source release commands run on the VPS. Archive and Registry run on your computer with Docker. Always run bash ./deploy/control … from the generated project root containing backend/, admin/, and Makefile.
1. Create a profile in Generator UI
Enable Docker and Production deployment in Deployment. For manual startup, choose CI provider → None. In Deployment environments:
- Enter
productionin New profile name. - In New profile preset, choose Single server for one VPS or Separate frontend / backend for two.
- Click Add profile and fill in the fields.
| UI field | Value |
|---|---|
| Runtime directory | Prepared VPS data directory, such as /srv/admingen/example_project/production |
| Admin domain | admin.example.com, without https:// |
| API domain | api.example.com, without https:// |
| TLS contact email | Your valid certificate contact email |
| Image delivery | Source, Archive, or Registry, following your chosen guide |
| Backend SSH target | For Archive/Registry: deploy@203.0.113.10, with your VPS IP |
| Frontend SSH target | For two servers: frontend VPS SSH address; leave empty for one |
| Backup destination | None, Local directory, or S3-compatible storage |
Source needs no SSH address: the command runs on the server itself. Runtime directory refers to the VPS even when filling the form on a Mac. Prepare it following server instructions.
Under Advanced, check Allowed HTTPS origins: it must include the admin address with https://. Change other defaults only if your network needs it. For Registry, also fill in three image repository addresses following Registry instructions.
For a simple first startup without external services, select Local files in project Image storage and None for profile Backup destination. This creates no automatic backups. Source/Archive does not require S3 or a registry.
Click Save deployment settings, then Generate. The created deploy/generated/environments/production.json and deploy/custom/environments/production.json are ready to use. No example JSON copying is needed. If a manual deploy/environments/production.json exists, move its settings to UI: otherwise it retains priority.
2. Archive/Registry only: prepare your computer
You need Git, Bash, jq, OpenSSH, tar, and running Docker with Compose v2 and Buildx. On a Mac, install and start Docker Desktop; install jq through Homebrew with brew install jq if desired.
git --version
jq --version
docker version
docker compose version
docker buildx version
Docker client and daemon must support API 1.49 or newer, and docker image inspect must support --platform. Images target linux/amd64; Apple Silicon must support emulation of this architecture.
3. Archive/Registry only: configure SSH once
On your computer, create a separate release key:
mkdir -p "$HOME/.config/admingen/production"
chmod 700 "$HOME/.config/admingen/production"
export DEPLOY_SSH_KEY_FILE="$HOME/.config/admingen/production/id_ed25519"
export DEPLOY_KNOWN_HOSTS_FILE="$HOME/.config/admingen/production/known_hosts"
ssh-keygen -t ed25519 -f "$DEPLOY_SSH_KEY_FILE" -C admingen-production
If the key exists at that path, do not recreate it. Press Enter for passphrase: control connects without interactive input. Show the public portion:
cat "$DEPLOY_SSH_KEY_FILE.pub"
Copy the ssh-ed25519 … line. On the VPS as root, open:
nano /home/deploy/.ssh/authorized_keys
Add the public line, save, and run on the VPS:
chown deploy:deploy /home/deploy/.ssh/authorized_keys
chmod 600 /home/deploy/.ssh/authorized_keys
Back on your computer, connect to the VPS with your IP:
ssh -i "$DEPLOY_SSH_KEY_FILE" -o IdentitiesOnly=yes \
-o "UserKnownHostsFile=$DEPLOY_KNOWN_HOSTS_FILE" \
deploy@203.0.113.10 'docker info >/dev/null && docker compose version'
chmod 600 "$DEPLOY_SSH_KEY_FILE" "$DEPLOY_KNOWN_HOSTS_FILE"
On first connection, SSH asks for server confirmation. After confirmation, its key is saved in known_hosts. The command must print the Compose version without asking for the user's password. For two VPS machines, repeat public-key addition and first connection for the frontend server.
In each new terminal, set paths to the existing files before release:
export DEPLOY_SSH_KEY_FILE="$HOME/.config/admingen/production/id_ed25519"
export DEPLOY_KNOWN_HOSTS_FILE="$HOME/.config/admingen/production/known_hosts"
No need to recreate the key or known_hosts. Continue with Source, Archive, or Registry.