Geo-MLOps starts even without a configuration file, because the signing keys and passwords have default values for convenient development. If you keep those defaults in a production installation, anyone can forge a session or sign in as the administrator. Compose silently starts with the defaults even if /etc/geo-mlops/app.env is missing or renamed, so "it starts fine" does not mean it is safe. Check the System diagnostics screen right after installation and after every deployment.

Five settings you must change

Setting (after GEO_MLOPS_)If left at the defaultAction
AUTH_SECRETCRITICAL — anyone can forge session JWTs and password reset tokensReplace with an openssl rand -hex 32 value
EDGE_TOKEN_PEPPERCRITICAL — the edge, MLflow and registry token hashes all use this valueReplace with an openssl rand -hex 32 value (different from AUTH_SECRET)
RBAC_BOOTSTRAP_ADMIN_PASSWORDCRITICAL — the first administrator's password is a value everyone knowsChange it to a strong password, or change the password after the first sign-in and empty this value
ALERTMANAGER_WEBHOOK_TOKENWARNING — the alert webhook is closed with 503 and alerts do not reach the app (setting a value opens it)Set a random value and put the same value in the monitoring/alertmanager.yml header
AUTH_COOKIE_SECUREDefault true. Setting it to false gives a WARNING — the session cookie also travels over plain HTTPKeep true if users connect over HTTPS

For how to enter the values, see the app.env example in Install with Docker Compose. After editing, recreate the app so it reads them.

docker compose -f /opt/geo-mlops/docker-compose.yml up -d app

Bootstrap administrator password

The bootstrap administrator is created from RBAC_BOOTSTRAP_ADMIN_PASSWORD only once, when the account does not exist. After that, changing this value does not change the account's password. So we recommend this order.

  1. Before the first start, put a temporary password in RBAC_BOOTSTRAP_ADMIN_PASSWORD and start the stack.
  2. Sign in with that account and change to the real password under the avatar menu at the top right → Account settings (계정 설정)Change password (비밀번호 변경).
  3. Empty it in app.env (RBAC_BOOTSTRAP_ADMIN_PASSWORD=) and recreate the app. The value now creates no account, and the diagnostics warning disappears.

If you forget the password, you can create a new administrator on the server with the admin CLI.

docker exec -it geo-mlops-app ./run geo-mlops-admin user create ops@example.com --admin
# without --password, it generates and prints a random password

Other things the diagnostics screen checks

SettingVerdictMeaning
RBAC_BOOTSTRAP_ROLE_PASSWORDWARNINGPer-role demo accounts are created with a default password. In production, empty it to turn this off
CORS_ALLOW_ORIGINS is *WARNINGCombines credentials (cookies) with a wildcard. Specify the web UI's address
MLFLOW_REQUIRE_AUTH=falseCRITICAL/mlflow is open without sign-in. Keep the default true
MOCK_DATAOPS_ENABLED=trueWARNINGA fake DataOps server for development. Turn it off in production (off by default)

Verify on the System diagnostics screen

Global admin Only global administrators can see it. The screen does not show the setting values themselves, only "is it the same as the default".

  1. Sign in as the global administrator and press System (시스템) at the top right to open the system console. If the System diagnostics (시스템 진단) card has a "Needs attention (진단 주의 필요)" badge, there is something to fix.

    System console — where a global administrator starts
  2. Open System diagnostics (시스템 진단). At the top, "Deployment info (배포 정보)" shows the commits of the backend and frontend now running, and "Dependencies (의존 컴포넌트)" shows the connection state of Postgres, the object store, Kubernetes, MLflow and so on.

    System diagnostics — deployment info, configuration hygiene, dependencies
  3. Under "Configuration hygiene (설정 위생)", fix things according to the tables above until no CRITICAL remains. Each item names the environment variable to change.

    Configuration hygiene — a signing key, pepper and passwords left at their defaults show as CRITICAL

The screenshot above shows an installation started with the defaults. The signing key, pepper and administrator password show as CRITICAL, and as long as they remain, the overall verdict stays at "Needs attention (주의 필요)" — even when every connection is healthy. Being connected and being safe are different things.

Next: First sign-in and initial setup

Written for the platform as of 2026-09-21.

© Geo-MLOps