Files
Nikolas Garza ec1ed831c0 fix(deployment): keep MinIO and its copy service stopped on a fresh Compose install (#16429)
## Description

A fresh hand-run Compose install no longer starts MinIO or
`object-store-copy`. Fixes
[ENG-4429](https://linear.app/onyx-app/issue/ENG-4429/a-fresh-manual-compose-install-still-starts-minio).

**Why**
- With the v5 compose file and `env.template` defaults, MinIO started on
a fresh install. Only onyx-cli set `MINIO_REPLICAS=0`.
- Even with it set, `object-store-copy` started and idled forever.

**What**
- `env.template` sets `MINIO_REPLICAS=0`, since a fresh install never
held files in MinIO.
- `object-store-copy` follows `MINIO_REPLICAS` like `minio` does.
- The compose default stays `1`, so an earlier release's `.env`, which
lacks the variable, keeps MinIO and the copy running.
- `env.prod.template` names the object store, the S3 key pair and
`MINIO_REPLICAS=0`. A fresh prod `.env` defaulted the app to MinIO
before.
- The retire step stops MinIO with `docker compose up -d --no-deps minio
object-store-copy`, since a plain `up -d` recreates every service that
loads `.env`.
- Not changed: Compose still creates the empty `minio_data` volume for a
zero-replica service. Only a profile split across the CLI, ods, CI and
installers would avoid it.

Docs: https://github.com/onyx-dot-app/documentation/pull/521

## How Has This Been Tested?

Live on scratch Compose projects with the v5.0.0-beta.2 images. A `.env`
copied from the new `env.template` ran only `object-store` and
`relational_db`, with no `minio` or `object-store-copy` container. An
upgraded `.env` without `MINIO_REPLICAS` ran `minio` and
`object-store-copy`, and the copy started. `docker compose config` shows
replicas 0 and 1 for the two cases. With `docker-compose.prod.yml` and a
fresh `env.prod.template` plus keys, `api_server` points at
`object-store` and `minio` and `object-store-copy` are at 0, and empty
keys still refuse to start. `go test ./...` in `cli` passes. In
`tools/ods`, `TestDevcontainerCommands` and `TestRunDevRebuild` fail
locally because `SSH_AUTH_SOCK` adds a mount, which is unrelated.

## Additional Options

- [ ] [Optional] Please cherry-pick this PR to the latest release
version.
2026-10-21 22:34:45 +00:00

89 lines
3.3 KiB
Plaintext

# Fill in the values and copy the contents of this file to .env in the deployment directory.
# Some valid default values are provided where applicable, delete the variables which you don't set values for.
# This is only necessary when using the docker-compose.prod.yml compose file.
# Could be something like onyx.companyname.com
WEB_DOMAIN=http://localhost:3000
# Set to false to let any origin embed Onyx in an <iframe>, disabling
# clickjacking protection. Protected by default.
# WEB_FRAME_PROTECTION_ENABLED=false
# Set to true to add strict Content-Security-Policy directives
# (default-src/script-src/connect-src/etc.) restricting where scripts load
# from and where data can be sent. Off by default.
# WEB_STRICT_CSP_ENABLED=true
# User authentication is always enabled. Email/password login works out of the
# box, and the first user to sign up becomes an admin.
# SSO (Google / OIDC / SAML) and its per-provider options are configured in the
# admin panel (Admin Panel > Organization > SSO Providers), no env vars needed.
# See https://docs.onyx.app/deployment/authentication for details.
# Legacy pre-v4.4 SSO configuration. Imported into an SSO provider entry on
# upgrade, so keep these set through the upgrade. Planned for removal in v4.5.
#AUTH_TYPE=
#GOOGLE_OAUTH_CLIENT_ID=
#GOOGLE_OAUTH_CLIENT_SECRET=
#OAUTH_CLIENT_ID=
#OAUTH_CLIENT_SECRET=
#OPENID_CONFIG_URL=
# Forces PKCE on for every provider. Superseded by the per-provider setting.
#OIDC_PKCE_ENABLED=
# SAML config directory for pre-v4.4 OneLogin compatible setups
#SAML_CONF_DIR=
# if you want to require email verification,
# then uncomment / set the following
#REQUIRE_EMAIL_VERIFICATION=true
#SMTP_USER=your-email@company.com
#SMTP_PASS=your-gmail-password
# The below are only needed if you aren't using gmail as your SMTP
#SMTP_SERVER=
#SMTP_PORT=
# When missing SMTP_USER, this is used instead
#EMAIL_FROM=
# Optional comma-separated BCC archive recipients for all emails
#EMAIL_ARCHIVE_BCC_ADDRESSES=
# How long before user needs to reauthenticate, default to 7 days. (cookie expiration time)
SESSION_EXPIRE_TIME_SECONDS=604800
# Use the below to specify a list of allowed user domains
# e.g. `VALID_EMAIL_DOMAINS=example.com,example.org` will only allow users
# with an @example.com or an @example.org email
#VALID_EMAIL_DOMAINS=
# Set to "true" to restrict GET /users to admins. Non-admins can't enumerate
# accounts or share agents with individual users; group sharing still works.
#USER_DIRECTORY_ADMIN_ONLY=
# Default values here are what Postgres uses by default, feel free to change.
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password
# Default values here for the read-only user for the knowledge graph and other future read-only purposes.
# Please change password!
DB_READONLY_USER=db_readonly_user
DB_READONLY_PASSWORD=password
# Bundled object store (SeaweedFS) for uploaded files. The pair is its admin identity, so set
# long random values. Compose refuses to start without them.
S3_ENDPOINT_URL=http://object-store:8333
S3_AWS_ACCESS_KEY_ID=
S3_AWS_SECRET_ACCESS_KEY=
# A fresh install never held files in MinIO, so MinIO and object-store-copy never start.
# A .env from a release before v5.0 lacks this line, so both keep running.
MINIO_REPLICAS=0
# Show extra/uncommon connectors
# See https://docs.onyx.app/admins/connectors/overview for a full list of connectors
SHOW_EXTRA_CONNECTORS=False