Site ↗
Documentation sections
Operations · 0.8.1

Preparing the profile and SSH before release

Fill in the UI profile; for remote delivery, configure Docker and SSH separately on your computer.

On this page

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:

  1. Enter production in New profile name.
  2. In New profile preset, choose Single server for one VPS or Separate frontend / backend for two.
  3. 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.