Reference

Image settings

Both images are set up through environment variables. The API's names use a double underscore between levels, such as Smtp__Host. A setting left out keeps its default. The starter kits on Hosting with Docker, Hosting on Kubernetes and Hosting on AKS already set everything a normal installation needs; this page is for changing one, or for a setup of your own (Running the images).

API: databases

SettingWhat it does
ConnectionStrings__DefaultConnectionThe database the default workspace's data lives in, such as Host=postgres;Database=omnicore-db;Username=archestack;Password=.... Required.
ConnectionStrings__CoreThe default workspace's metadata: entities, pages, scripts. Database omnicore-core. Required.
ConnectionStrings__IdentityUsers, workspaces and keys, shared by every workspace. Database omnicore-identity. Required.
ConnectionStrings__KeycloakOnly when moving users over from Keycloak. Set it empty otherwise.
ConnectionStrings__ClusterHow several API instances tell each other about changes. Defaults to the identity database; set it to PostgreSQL itself when a connection pooler such as PgBouncer sits in between.
Database__CreateMissingtrue makes the data database when it is missing; the other two are made either way. Default false; the kits set true.

The user in these strings needs the right to create databases: every new workspace gets two of its own, named after the base names above.

API: addresses

SettingWhat it does
ASPNETCORE_URLSWhere the API listens inside the container: http://+:8080.
ASPNETCORE_ENVIRONMENTAlways Production. Anything else shows error details to anybody.
Http__PathBaseThe path the API is served under, such as /archestack. Empty at the root.
Identity__AppBaseUrlThe builder's address, such as https://apps.example.com/archestack. Invitation and password reset links point here.
ForwardedHeaders__TrustedProxiesThe addresses of the proxies in front, whose X-Forwarded-For is believed. The default covers private networks; without the right one, every visitor looks like the proxy and shares one rate limit.
Tenancy__HostSuffixServes every workspace on a hostname of its own, <label>.<suffix>, and lets workspaces add domains of their own. Empty by default.

API: sign-in

SettingWhat it does
Identity__ProviderBuiltin: Archestack signs people in itself. Default.
Identity__InitialAdminEmail, Identity__InitialAdminPasswordThe first admin, made on the first start when there is no user yet. Used once: change the password in Archestack afterwards. Leave both out to create the admin in the builder instead.
Identity__AllowCompanySignuptrue lets anyone create a company of their own at /register. Default false. A company's admins can run scripts on the server, so leave it off unless you run a public service.
Identity__AccessTokenMinutesHow long a sign-in token lasts before it is renewed. Default 15.
Identity__RefreshTokenDaysHow long somebody stays signed in without using Archestack. Default 30.
Identity__MinimumPasswordLengthDefault 8.
Identity__MaxFailedLogins, Identity__LockoutMinutesAfter this many wrong passwords an account is locked for this long. Defaults 10 and 15.

API: mail

SettingWhat it does
Smtp__Host, Smtp__Port, Smtp__UseSslThe mail server for invitations and password resets. Port 587 and SSL by default. Without a host, the admin who sends an invitation gets the link to pass on.
Smtp__Username, Smtp__PasswordThe mail server's sign-in.
Smtp__From, Smtp__FromNameThe sender those mails show.

The mail that applications send goes through the mail accounts each workspace sets up in its builder.

API: files and backups

SettingWhat it does
Files__DirectoryWhere uploads and workspace files go, such as /files. Put a volume there: in a container without one, files are lost at the next update.
Files__MaxFileBytesThe largest single file. Default 100 MB.
Files__MaxWorkspaceBytesHow much one workspace may keep. Default 0, no limit.
Backup__DirectoryWhere backups go, such as /backups. Also a volume, and copy what lands there somewhere else.
Backup__RetentionDaysHow long backups are kept. Default 30.
Backup__CronScheduleWhen the nightly backup runs, as a Quartz cron. Default 0 0 3 * * ?, 03:00.

API: scale and limits

SettingWhat it does
Realtime__EntityChangesfalse stops screens refreshing when a record changes elsewhere. Default true. Turned off, one installation serves many more people at once; see Capacity and sizing.
Cluster__EnabledLets several API instances work as one. Default true; leave it on.
RateLimiting__EnabledPer-caller request limits. Default true. The limits apply per API instance.
RateLimiting__PermitsPerMinuteRequests one person may make per minute. Default 2000.
RateLimiting__AuthPermitsPerMinuteSign-in attempts per minute from one address. Default 20.
RateLimiting__PublicPagePermitsPerMinuteWhat a visitor without an account may ask of public pages per minute. Default 240.
Scripting__TypedData__EnabledBusiness entities as typed sets in scripts (Db.Order). Default true.

API: keys

SettingWhat it does
DataProtection__CertificatePath, DataProtection__CertificatePasswordA certificate that protects the keys stored passwords are encrypted with. Without it those keys are in the identity database unprotected, so a copy of that database holds both halves.
Push__VapidPublicKey, Push__VapidPrivateKey, Push__SubjectOne key pair for browser notifications on every workspace. Left out, each workspace makes its own. Never change it once people have allowed notifications: their subscriptions stop working.

API: monitoring

SettingWhat it does
Observability__EnabledSends traces, metrics and logs over OpenTelemetry. Default false.
Observability__OtlpEndpointWhere to, such as http://otel-collector:4317.
Observability__Instance, Observability__EnvironmentNames this installation in the dashboards.

The web image

SettingWhat it does
VITE_API_URLThe API's address as the browser reaches it, such as https://api.example.com. Empty when the API is on the same address under /api.
BASE_PATHThe path it is served under, such as /archestack. Empty at the root.
VITE_UI_MODEdashboard shows the builder at / and the published app under /app. kiosk shows the published app at /, for an address that is only the app.
VITE_DASHBOARD_URLWith kiosk, the builder's address when it is on another hostname.
VITE_APP_URLWith dashboard, the published app's address when it is on another hostname.
API_INTERNAL_URLThe API's address inside the network, such as http://api:8080. Link previews in chat apps and the pages search engines read come from it. In Kubernetes, write the service's full name, http://<service>.<namespace>.svc.cluster.local:8080.

The PostgreSQL image

SettingWhat it does
POSTGRES_USER, POSTGRES_PASSWORDThe user the API connects as. The password is set when PostgreSQL first starts on an empty disk; changing the variable later does not change it in the database.
POSTGRES_DBpostgres. The API makes its own databases.
PGDATAOnly on a fresh disk whose root holds lost+found, as in Kubernetes: a folder below the mount, such as /var/lib/postgresql/data/pgdata.

Give the container 1 GB of shared memory, as Running the images explains.