Service Environment Map¶
This page maps each service's current environment variables to their target names under the Environment Variables convention (AC_ prefix, DOMAIN_TYPE component names, standard keywords). It is the reference used during migration: for a given service, look up the variable here to see the name it should have, what it does, and an example value.
The target names come from reading each service's runtime code, not only its settings file, so the description reflects how the value is actually consumed.
Conventions used in the tables below:
- 🔒 marks a secret. Its value must come from
${secret:<service>/<path>}(see Environment Configuration), never a literal. - The component is the service's
DOMAIN_TYPEname. Cross-cutting dependencies (Kafka, Redis, object storage, Keycloak, CDN providers) are named directly without a component split. - Example values are illustrative, not real credentials.
- Context/Secret Expression — the recommended
${context:...}/${secret:...}value (or literal) once this service resolves its ownenvdef.yamlthrough Config Service, per Deployment Context & Service Naming.—means this stays the service's own directly-set variable, never resolved via context (same reasoning asAC_ENVIRONMENT). "not yet resolved" means no confirmed mapping exists — anything shown for those is illustrative, never a recommendation to copy as-is. This column is filled in service by service, verified against that service's own real code as it's done, not guessed in bulk — an empty column for a service below means it hasn't been done yet.
Resource Server¶
Repository: ac-server-resource. Component: RESOURCE_API.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_PORT |
AC_PORT |
Port Kestrel listens on. No component — each service runs in its own container, so the value is unambiguous (see Environment Variables) | 8080 |
— |
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment; ASPNETCORE_ENVIRONMENT is derived from it |
Production |
— |
SupportedCultures (appsettings) |
AC_SUPPORTED_CULTURES |
Supported UI cultures | en,tr |
— |
CUSTOMCONNSTR_RESOURCE_DB_CONNECTION_STRING / ConnectionStrings:ResourceServerDbConnection |
AC_DB_CONNECTION_STRING 🔒 |
MongoDB connection string for the resource database. The secret's storage path stays service-scoped (${secret:resource-api/...}) for authorization purposes even though the variable name is not |
${secret:resource-api/db_connection} |
${secret:resource-api/db_connection} (matches already) |
ASPNETCORE_KAFKA_SERVER_URLS / ConnectionStrings:KafkaServerUrls |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap broker host:port list, comma-separated — named after Kafka's own bootstrap.servers config key rather than the ENDPOINT keyword, since it is scheme-less and can hold multiple brokers |
kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_REDIS_ENDPOINT |
AC_REDIS_ADDRESS |
host:port of the Redis cache server, no scheme |
redis.appcircle.svc.cluster.local:6379 |
${context:resource_redis_address} |
ASPNETCORE_REDIS_PREFIX |
AC_REDIS_PREFIX |
Key prefix this service uses for its own keys in the shared Redis cache. No component — own property — kept as REDIS rather than a generic "cache" word to stay consistent with AC_REDIS_ADDRESS above |
ResourceServer |
— |
ASPNETCORE_S3_CLIENT_PROVIDER |
AC_S3_PROVIDER |
Active object-storage backend | MINIO | AWS | GCLOUD |
— (corrected; this isn't a Kafka-shaped "one value shared by every service" case — Resource Server is the only service with a live S3/object-storage client. Every other service's own MinIO/S3 vars are dead, commented-out code — see the Removed tables in Build Server, Distribution Server, Store API Service, Publish Service, Resign Service, App Parser Server, Store Submit Server, and Agent Cache Service's own note below. So this is Resource Server's own value, same reasoning as AC_ENVIRONMENT, not a context candidate at all) |
ASPNETCORE_S3_ENDPOINT |
AC_S3_ADDRESS |
host:port of the S3/MinIO server, no scheme |
minio:9000 |
not yet resolved — same open S3-as-context question as the row above |
ASPNETCORE_S3_ACCESS_KEY |
AC_S3_ACCESS_KEY 🔒 |
S3 access key | ${secret:s3/access_key} |
${secret:s3/access_key} (matches already) |
ASPNETCORE_S3_SECRET_KEY |
AC_S3_SECRET_KEY 🔒 |
S3 secret key | ${secret:s3/secret_key} |
${secret:s3/secret_key} (matches already) |
ASPNETCORE_S3_REGION |
AC_S3_REGION |
S3 region | europe-west1 |
not yet resolved — same open S3-as-context question above |
ASPNETCORE_S3_USE_HTTP |
AC_S3_HTTP_ENABLED |
Connect to S3 over plain HTTP (no TLS) — resolves the scheme that AC_S3_ADDRESS deliberately omits |
false |
not yet resolved — same open S3-as-context question above |
ASPNETCORE_S3_MIN_FILE_UPLOAD_DURATION_IN_SECONDS |
AC_S3_MIN_UPLOAD_DURATION_SECONDS |
Minimum validity, in seconds, of a presigned upload URL | 300 |
— |
ASPNETCORE_BUCKET_PREFIX |
AC_S3_BUCKET_PREFIX |
Prefix prepended to bucket names | appcircle-resource- |
— |
ASPNETCORE_GOOGLE_CREDENTIALS_BASE64 |
AC_S3_GCLOUD_CREDENTIALS_BASE64 🔒 |
Base64-encoded GCP service-account JSON for GCS | ${secret:s3/gcloud_credentials} |
${secret:s3/gcloud_credentials} (matches already) |
ASPNETCORE_S3_USE_INTERNAL_SERVER |
AC_S3_INTERNAL_SERVER_ENABLED |
This service's own routing policy — serve downloads through the internal S3 endpoint instead of CDN/external URL. No component — own property — though it sits next to genuinely cross-cutting AC_S3_* rows above, so double-check this reads unambiguously in context |
false |
— |
ASPNETCORE_EXTERNAL_RESOURCE_URL |
AC_EXTERNAL_URL |
Public base URL clients use to reach resources | https://resource.appcircle.io |
not yet resolved — no confirmed external subdomain |
ASPNETCORE_EXTERNAL_RESOURCE_PRESERVE_SUBDOMAIN |
AC_EXTERNAL_PRESERVE_SUBDOMAIN_ENABLED |
Keep the original bucket subdomain when rewriting to the external URL | false |
— |
ASPNETCORE_S3_CDN_PROVIDER |
AC_S3_CDN_PROVIDER |
Default CDN provider for signed URLs | GCLOUD | AWS | CLOUDFLARE |
— |
ASPNETCORE_S3_CDN_MAPPING |
AC_S3_CDN_MODULE_URLS |
Per-module CDN base URLs | Build=https://cdn1...,Store=https://cdn4... |
— |
ASPNETCORE_CDN_MODULE_PROVIDERS |
AC_S3_CDN_MODULE_PROVIDERS |
Per-module CDN provider overrides | CodePush=CLOUDFLARE |
— |
ASPNETCORE_CLOUDFLARE_URL_SIGN_SECRET |
AC_CLOUDFLARE_URL_SIGN_SECRET 🔒 |
Cloudflare signed-URL secret | ${secret:cloudflare/url_sign_secret} |
${secret:cloudflare/url_sign_secret} (generatable, hex(32)) |
ASPNETCORE_URL_SIGN_KEY_NAME |
AC_GCLOUD_CDN_URL_SIGN_KEY_NAME |
GCP Cloud CDN signing key name | resource-key |
— |
ASPNETCORE_URL_SIGN_SIGN_KEY |
AC_GCLOUD_CDN_URL_SIGN_KEY 🔒 |
GCP Cloud CDN signing key value | ${secret:gcloud/cdn_sign_key} |
${secret:gcloud/cdn_sign_key} (generatable, base64(32)) |
ASPNETCORE_URL_SIGN_PRIVATE_KEY |
AC_AWS_CDN_URL_SIGN_PRIVATE_KEY 🔒 |
CloudFront private key | ${secret:aws/cdn_private_key} |
${secret:aws/cdn_private_key} (generatable, rsa(2048), publicKeyPath: "aws/cdn_public_key" — see note below) |
ASPNETCORE_URL_SIGN_PUBLIC_KEY_ID |
AC_AWS_CDN_URL_SIGN_PUBLIC_KEY_ID |
CloudFront key-pair ID | K44JRUNAWZ3VN |
— |
ASPNETCORE_URL_SIGN_POLICY |
AC_AWS_CDN_URL_SIGN_POLICY |
CloudFront canned-policy template | {"Statement":[...]} |
— |
ASPNETCORE_APPCIRCLE_WEB_CLIENT_ID |
AC_KEYCLOAK_WEB_CLIENT_ID |
OIDC client id for appcircle-web, used in token exchange |
appcircle-web |
"appcircle-web" (literal, not context) |
ASPNETCORE_APPCIRCLE_WEB_CLIENT_SECRET |
AC_KEYCLOAK_WEB_CLIENT_SECRET 🔒 |
Client secret for appcircle-web |
${secret:keycloak/web_client_secret} |
${secret:keycloak/web_client_secret} (generatable) |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
External OIDC issuer base URL | https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
In-cluster Keycloak base URL | http://keycloak:8080 |
${context:keycloak_internal_url} |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's Keycloak client id — named after Keycloak (the dependency), not this service; the owning service is already implicit in its own envdef.yaml | resource-server |
"resource-server" (literal, not context — this service's own fixed id) |
ASPNETCORE_KEYCLOAK_CLIENT_SECRET |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's Keycloak client secret. The secret's storage path stays service-scoped (${secret:resource-api/...}) for authorization purposes even though the variable name is not |
${secret:resource-api/keycloak_client_secret} |
${secret:resource-api/keycloak_client_secret} (generatable) |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum log level | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Liveness health endpoint path | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Deep/readiness health endpoint path | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Log liveness health requests. Inverts the old IGNORE flag: IGNORE=true becomes ENABLED=false |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Log deep-health requests | false |
— |
ASPNETCORE_FILE_SYSTEM_ROOT_PATH |
AC_FILE_SYSTEM_ROOT_PATH |
Root directory for self-hosted filesystem storage | /data/resources |
— |
ASPNETCORE_IS_SELF_HOSTED |
AC_IS_SELF_HOSTED |
Whether the installation is self-hosted. Deployment-wide, so no component (see Environment Variables) | false |
— |
TEMP_CLEAN_PERIOD_HOURS |
AC_TEMP_CLEAN_PERIOD_HOURS |
Interval, in hours, of the expired-temp cleanup job | 24 |
— |
TEMP_CLEAN_BUCKETS |
AC_TEMP_CLEAN_BUCKETS |
Buckets scanned by the temp cleaner | build,distribution |
— |
The three CDN signing secrets are generatable, not install-provided
Confirmed via AwsUrlSigner.cs/GoogleLocalUrlSigner.cs/CloudFlareLocalUrlSigner.cs: all
three are arbitrary keys we choose, not certificates issued by the provider — Cloudflare
and GCP just HMAC a string with them, and even AWS CloudFront's is a plain RSA keypair
(ConvertPemXmlCertificate accepts PKCS#8, exactly what rsa(n) produces). Generating them
here doesn't remove the manual step: an operator still has to register the generated
public key/secret on the provider's own console (AWS Trusted Key Group, GCP Cloud CDN key,
Cloudflare Worker config) — same shape as any rsa(n) pair's public half.
Removed (unused or deprecated)¶
These variables are present in current settings but are no longer read by the code, or are explicitly deprecated. They are dropped in the target model:
| Current variable | Replaced by |
|---|---|
ASPNETCORE_RESOURCE_URL |
AC_EXTERNAL_URL |
ASPNETCORE_MINIO_ENDPOINT |
AC_S3_ADDRESS |
ASPNETCORE_MINIO_ACCESS_KEY |
AC_S3_ACCESS_KEY |
ASPNETCORE_MINIO_SECRET_KEY |
AC_S3_SECRET_KEY |
ASPNETCORE_MINIO_REGION |
AC_S3_REGION |
ASPNETCORE_URL_SIGN_ENDPOINT |
AC_S3_CDN_MODULE_URLS |
API Gateway¶
Repository: ac-server-apigateway.
The .NET host calls AddEnvironmentVariables("ASPNETCORE_"), so most keys are read prefix-stripped via IConfiguration; a few are read whole via Environment.GetEnvironmentVariable. Current names below are as actually set (from launchSettings.json and docker-compose.override.yml); rows marked "(code only)" are read at runtime but not declared in any settings file.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_PORT |
AC_PORT |
Kestrel listen port for the gateway itself | 8100 |
— |
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Hosting environment name driving env-specific behavior | Development |
— |
ASPNETCORE_CERT_PATH |
AC_CERT_PATH |
Path to the gateway's own TLS PFX certificate loaded by Kestrel | star.appcircle.io.pfx |
— |
ASPNETCORE_CERT_PASSWORD |
AC_CERT_PASSWORD 🔒 |
Password for the gateway's TLS PFX certificate | ${secret:api-gateway/cert_password} |
${secret:api-gateway/cert_password} |
ASPNETCORE_MAX_RESPONSE_BUFFER_SIZE |
AC_MAX_RESPONSE_BUFFER_SIZE |
Kestrel max response buffer size in bytes (code only) | 2147483648 |
— |
PrivateApiUrl |
AC_EXTERNAL_URL |
The gateway's own public API base URL, injected into the OpenAPI server list | https://api.appcircle.io |
${context:api_external_url} |
ASPNETCORE_OCELOT_HOSTS_API_GATEWAY |
AC_EXTERNAL_URL |
Same public base URL, substituted into the Ocelot routing template as the gateway's own host | https://api.appcircle.io |
${context:api_external_url} |
ASPNETCORE_SERVER_URLS |
AC_SERVER_URLS |
Comma-separated downstream service base URLs the gateway aggregates for service-info and deep-health probing | http://signing-identity.appcircle.svc.cluster.local,http://license.appcircle.svc.cluster.local,... |
${context:api_gateway_server_urls} |
ASPNETCORE_CORS_SUFFIX |
AC_CORS_SUFFIX |
Domain suffix used to build the allowed CORS origins | .appcircle.io |
".${context:external_root_host}" — leading . required, external_root_host itself is bare |
ASPNETCORE_ADDITIONAL_ALLOWED_CSP_HOSTS |
AC_ADDITIONAL_ALLOWED_CSP_HOSTS |
Optional, comma-separated extra hosts appended to the CSP default-src/connect-src directives, alongside the hardcoded *.appcircle.io literal and a *.{root domain} wildcard the gateway derives itself from ASPNETCORE_OIDC_EXTERNAL_URL (Startup.cs:785-798: strips the scheme, drops the first host label, prefixes *.) |
extra-cdn.example.com |
— |
ASPNETCORE_SELF_HOSTED_MODULES |
AC_SELF_HOSTED_MODULES |
Comma-separated allow-list of enabled modules in self-hosted mode | build,distribute |
— |
ASPNETCORE_IS_SELF_HOSTED |
AC_IS_SELF_HOSTED |
Deployment-wide flag marking a self-hosted install | false |
— |
ASPNETCORE_OCELOT_CONFIG_SUFFIX |
AC_OCELOT_CONFIG_SUFFIX |
Selects which ocelot-source.<suffix>.yaml template the routing config is generated from |
local |
— |
APPCIRCLE_OCELOT_PRIMARY_FILE |
AC_OCELOT_PRIMARY_FILE_PATH |
Path to the primary generated Ocelot config file loaded at startup | OcelotConfigs/ocelot.json |
— |
ASPNETCORE_RATE_LIMITING_ENABLED |
AC_RATE_LIMITING_ENABLED |
Master switch for request rate limiting | true |
— |
ASPNETCORE_RATE_LIMITING_GLOBAL_IP_ENABLED |
AC_RATE_LIMITING_GLOBAL_IP_ENABLED |
Enables the global per-IP rate-limiting middleware | false |
— |
ASPNETCORE_RATE_LIMITING_GLOBAL_IP_POLICY |
AC_RATE_LIMITING_GLOBAL_IP_POLICY |
Policy expression (window/maxRequests/header) for the global per-IP limiter (code only) | window=1m, maxRequests=600 |
— |
ASPNETCORE_OPTIMIZE_MEMORY_GC_MODE |
AC_OPTIMIZE_MEMORY_GC_MODE |
GC mode toggle (server/workstation/auto) applied at startup |
server |
— |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum NLog log level for the gateway | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Path of the shallow health endpoint, used for log filtering | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Path of the deep health endpoint | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether to log shallow health-check requests; inverted from the negative IGNORE flag (IGNORE=true becomes ENABLED=false) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether to log deep health-check requests; inverted from the negative IGNORE flag |
false |
— |
MAIL_ENCRYPTION_KEY |
AC_MAIL_ENCRYPTION_KEY 🔒 |
Key for decrypting mail/unsubscribe payload tokens | ${secret:api-gateway/mail_encryption_key} |
${secret:api-gateway/mail_encryption_key} (generatable) |
ASPNETCORE_UNSUB_RIJNDAEL_KEY |
AC_UNSUB_RIJNDAEL_KEY 🔒 |
Rijndael key for decrypting unsubscribe links | ${secret:api-gateway/unsub_rijndael_key} |
${secret:api-gateway/unsub_rijndael_key} (generatable) |
API_KEY_SECRET_ENCRYPTION_KEY |
AC_API_KEY_SECRET_ENCRYPTION_KEY 🔒 |
Encryption key for API-key secrets (code only) | ${secret:api-gateway/api_key_secret_encryption_key} |
${secret:api-gateway/api_key_secret_encryption_key} (generatable) |
KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers for the outgoing message broker | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_REDIS_ENDPOINT |
AC_REDIS_ADDRESS |
Redis host:port (no scheme) for the gateway's cache/rate-limit store | redis.appcircle.svc.cluster.local:6379 |
${context:api_gateway_redis_address} |
ASPNETCORE_REDIS_PREFIX |
AC_REDIS_PREFIX |
The gateway's own Redis key prefix/namespace (own cache prefix → no component) | Apigateway |
— |
REDIS_PASSWORD |
AC_REDIS_PASSWORD 🔒 |
Password to authenticate to Redis (code only) | ${secret:api-gateway/redis_password} |
${secret:api-gateway/redis_password} (generatable) |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Base URL of the Keycloak server the gateway calls | http://keycloak:8080 |
${context:keycloak_internal_url} |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Externally reachable Keycloak/OIDC URL used to build candidate issuers | https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_OIDC_DISCOVERY_URL |
AC_KEYCLOAK_OIDC_DISCOVERY_URL |
Keycloak OIDC discovery URL for the main appcircle realm |
http://keycloak:8080/auth/realms/appcircle/.well-known/openid-configuration |
"${context:keycloak_internal_url}/auth/realms/appcircle/.well-known/openid-configuration" |
ASPNETCORE_STORE_OIDC_DISCOVERY_URL |
AC_KEYCLOAK_STORE_OIDC_DISCOVERY_URL |
Keycloak OIDC discovery URL for the store realm |
http://keycloak:8080/auth/realms/store/.well-known/openid-configuration |
"${context:keycloak_internal_url}/auth/realms/store/.well-known/openid-configuration" |
ASPNETCORE_DISTRIBUTE_OIDC_DISCOVERY_URL |
AC_KEYCLOAK_DISTRIBUTE_OIDC_DISCOVERY_URL |
Keycloak OIDC discovery URL for the distribute realm |
http://keycloak:8080/auth/realms/distribute/.well-known/openid-configuration |
"${context:keycloak_internal_url}/auth/realms/distribute/.well-known/openid-configuration" |
ASPNETCORE_ADDITIONAL_ISSUER_URL_LIST |
AC_KEYCLOAK_ADDITIONAL_ISSUER_URLS |
Comma-separated extra token issuer URLs accepted alongside the primary issuer during JWT validation (Startup.cs:898-930, GetCandidateIssuers: the primary issuer is ASPNETCORE_OIDC_EXTERNAL_URL's scheme/host/port rewritten onto the realm's own issuer URI; this list is appended verbatim, no rewriting) |
https://auth.appcircle.io,https://auth.appcircle.io/auth/realms/store,https://auth.appcircle.io/auth/realms/distribute |
${context:api_gateway_additional_issuer_urls} |
ASPNETCORE_KEYCLOAK_AUDIENCE |
AC_KEYCLOAK_AUDIENCE |
Authorization audience for the Keycloak admin client | license-server |
"license-server" (literal, not context) |
ASPNETCORE_APPCIRCLE_WEB_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
The gateway's own Keycloak client id (appcircle-web) used for token exchange |
appcircle-web |
"appcircle-web" (literal, not context) |
ASPNETCORE_APPCIRCLE_WEB_SECRET |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
Secret for the gateway's own appcircle-web Keycloak client |
${secret:api-gateway/keycloak_client_secret} |
${secret:api-gateway/keycloak_client_secret} (generatable) |
ASPNETCORE_TESTER_CLIENT_ID |
AC_KEYCLOAK_TESTER_CLIENT_ID |
Keycloak client id for the tester web app, surfaced to clients | tester-web |
"tester-web" (literal, not context) |
ASPNETCORE_STORE_WEB_CLIENT_ID |
AC_KEYCLOAK_STORE_WEB_CLIENT_ID |
Keycloak client id for the store web app | store-web |
"store-web" (literal, not context) |
ASPNETCORE_RESOURCE_CLIENT_ID |
AC_KEYCLOAK_RESOURCE_CLIENT_ID |
Keycloak client id used as the valid audience when validating resource-server tokens | resource-server |
"resource-server" (literal, not context) |
ASPNETCORE_REPORTING_SERVER_CLIENT_ID |
AC_KEYCLOAK_REPORTING_SERVER_CLIENT_ID |
Keycloak client id for the reporting server | reporting-server |
"reporting-server" (literal, not context) |
ASPNETCORE_OCELOT_HOSTS_KEYCLOAK_HOST |
AC_KEYCLOAK_HOST |
Keycloak host (no scheme/port) substituted into the Ocelot routing template | auth.appcircle.io |
${context:keycloak_x_forwarded_host} |
ASPNETCORE_OCELOT_HOSTS_KEYCLOAK_PROTO |
AC_KEYCLOAK_SCHEME |
Scheme (http/https) for the Keycloak route | http |
${context:keycloak_x_forwarded_proto} |
ASPNETCORE_OCELOT_HOSTS_KEYCLOAK_PORT |
AC_KEYCLOAK_PORT |
Port for the Keycloak route | 80 |
${context:keycloak_x_forwarded_port} |
ASPNETCORE_STORE_JWT_RSA_PUBLIC_KEY |
AC_STORE_JWT_RSA_PUBLIC_KEY |
RSA public key used to validate JWTs issued by the Store service | -----BEGIN PUBLIC KEY-----... |
${secret:store-api/jwt_rsa_public_key} — via consumers, see note below |
ASPNETCORE_DISTRIBUTION_JWT_RSA_PUBLIC_KEY |
AC_DISTRIBUTION_JWT_RSA_PUBLIC_KEY |
RSA public key used to validate JWTs issued by the Distribution service | -----BEGIN PUBLIC KEY-----... |
${secret:distribution/jwt_rsa_public_key} — via consumers, same shape as Store API's row above |
ASPNETCORE_USER_SERVER_URL |
AC_USER_SERVER_INTERNAL_URL |
Base address of the user server the gateway calls via UserServerClient |
http://user:8021 |
${context:user_internal_url} |
ASPNETCORE_RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Base URL of the Resource service registered as ResourceClient |
http://resource:8012 |
${context:resource_internal_url} |
ASPNETCORE_FORCE_KEYCLOAK_HEADERS |
AC_FORCE_KEYCLOAK_HEADERS_ENABLED |
Bool forcing injection of Keycloak headers on requests | false |
— |
ASPNETCORE_OCELOT_HOSTS_SIGNING_IDENTITY |
AC_SIGNING_IDENTITY_API_INTERNAL_URL |
Internal URL of the signing-identity service, routed via Ocelot | http://signingidentity:8022 |
${context:signing_identity_internal_url} |
ASPNETCORE_OCELOT_HOSTS_LICENSE |
AC_LICENSE_API_INTERNAL_URL |
Internal URL of the license service | http://license:8024 |
${context:license_internal_url} |
ASPNETCORE_OCELOT_HOSTS_DISTRIBUTION |
AC_DISTRIBUTION_INTERNAL_URL |
Internal URL of the distribution service | http://distribution:8016 |
${context:distribution_internal_url} |
ASPNETCORE_OCELOT_HOSTS_NOTIFICATION |
AC_NOTIFICATION_INTERNAL_URL |
Internal URL of the notification service | http://notification:8019 |
${context:notification_internal_url} |
ASPNETCORE_OCELOT_HOSTS_IDENTITY |
AC_IDENTITY_INTERNAL_URL |
Internal URL of the identity provider route (points to Keycloak) | http://keycloak:9302 |
${context:keycloak_internal_url} — same target, different Ocelot route |
ASPNETCORE_OCELOT_HOSTS_BUILD |
AC_BUILD_API_INTERNAL_URL |
Internal URL of the build service | http://build:8023 |
${context:build_internal_url} |
ASPNETCORE_OCELOT_HOSTS_STORE_SUBMIT |
AC_STORE_SUBMIT_API_INTERNAL_URL |
Internal URL of the store-submit service | http://storesubmit:8027 |
${context:store_submit_internal_url} |
ASPNETCORE_OCELOT_HOSTS_REPORT |
AC_REPORT_INTERNAL_URL |
Internal URL of the report service | http://report:8025 |
${context:report_internal_url} |
ASPNETCORE_OCELOT_HOSTS_UI |
AC_UI_INTERNAL_URL |
Internal URL of the UI service | http://ui:56205 |
${context:ui_internal_url} |
ASPNETCORE_OCELOT_HOSTS_TASK |
AC_TASK_INTERNAL_URL |
Internal URL of the task service | http://task:8028 |
${context:task_internal_url} |
ASPNETCORE_OCELOT_HOSTS_STORE_PROFILE |
AC_STORE_PROFILE_INTERNAL_URL |
Internal URL of the store-profile service | http://store-profile:8105 |
${context:store_profile_internal_url} |
ASPNETCORE_OCELOT_HOSTS_STORE_API |
AC_STORE_API_INTERNAL_URL |
Internal URL of the store-api service | http://store-api:8106 |
${context:store_api_internal_url} |
ASPNETCORE_OCELOT_HOSTS_TESTER_API |
AC_TESTER_API_INTERNAL_URL |
Internal URL of the tester-api service | http://tester-api:8044 |
${context:tester_api_internal_url} |
ASPNETCORE_OCELOT_HOSTS_STORE_REPORT |
AC_STORE_REPORT_INTERNAL_URL |
Internal URL of the store-report service | http://store-report:8075 |
${context:store_report_internal_url} |
ASPNETCORE_OCELOT_HOSTS_WEBHOOK |
AC_WEBHOOK_INTERNAL_URL |
Internal URL of the webhook service | http://webhook:8076 |
${context:webhook_internal_url} |
ASPNETCORE_OCELOT_HOSTS_RESIGN |
AC_RESIGN_INTERNAL_URL |
Internal URL of the resign service | http://resign:8031 |
${context:resign_internal_url} |
ASPNETCORE_OCELOT_HOSTS_PUBLISH |
AC_PUBLISH_INTERNAL_URL |
Internal URL of the publish service | http://publish:8032 |
${context:publish_internal_url} |
ASPNETCORE_OCELOT_HOSTS_AGENTCACHE |
AC_AGENTCACHE_INTERNAL_URL |
Internal URL of the agent-cache service | http://agentcache:8068 |
${context:agentcache_internal_url} |
ASPNETCORE_OCELOT_HOSTS_STORE_ADMIN |
AC_STORE_ADMIN_INTERNAL_URL |
Internal URL of the store-admin service | http://store-admin:8030 |
${context:store_admin_internal_url} |
ASPNETCORE_OCELOT_HOSTS_RESOURCE |
AC_RESOURCE_API_INTERNAL_URL |
Internal URL of the resource service (routing) | http://resource:8012 |
${context:resource_internal_url} |
ASPNETCORE_OCELOT_HOSTS_CODEPUSH |
AC_CODEPUSH_INTERNAL_URL |
Internal URL of the codepush service | http://codepush:8787 |
${context:codepush_internal_url} |
ASPNETCORE_ADDITIONAL_ALLOWED_CSP_HOSTS
Confirmed via Startup.cs:786-798: read as a raw literal (, → space, http(s):// stripped)
and appended verbatim to the CSP header — no composition happens. It exists for hosts
outside the *.{root domain} wildcard the gateway already derives for itself, e.g. a
self-hosted install's own extra CDN/integration domain, so it's arbitrary operator-supplied
data, not a deployment context fact — same category as ASPNETCORE_ALLOWED_REDIRECT_HOSTS
elsewhere in this doc.
ASPNETCORE_OCELOT_HOSTS_KEYCLOAK_HOST/_PROTO/_PORT aren't a split of keycloak_internal_url
Confirmed against appcircle-self-hosted's real template: these three come from
keycloak.external.xForwardedHost/xForwardedProto/xForwardedPort, not from fragmenting
the internal Keycloak URL. They're the exact same values this file already derives as
keycloak_x_forwarded_host/_proto/_port for a related but distinct purpose (telling
Keycloak, via X-Forwarded-* headers, what external URL the original browser request came in
on, since Ocelot reaches it over its internal address). Same source, two consumers.
ASPNETCORE_STORE_JWT_RSA_PUBLIC_KEY / ASPNETCORE_DISTRIBUTION_JWT_RSA_PUBLIC_KEY are secrets, not context
An earlier pass through this doc called this an unmodeled gap — "neither ${context:...} nor
${secret:...} handles cross-service public-key distribution." That was wrong: it's a
${secret:...}, just not this service's own path. A public key isn't confidential, but it
still needs to be stable and provisioned once, which is exactly what the secret store
is for — being non-secret doesn't make it a context value, since it isn't computed from any
install input either.
It's the public half of Store API's own store-api/jwt_rsa_private_key (see that service's
own section), so it needs two sourcing-policy rules, not one: the private-key rule
(generator: "rsa(2048)", publicKeyPath: "store-api/jwt_rsa_public_key") drives generation
of both halves, and a second rule at store-api/jwt_rsa_public_key itself (not independently
generatable — it is always a byproduct of the first rule) is what actually lets anything
read the value back, with API Gateway named in that rule's own consumers — the same
mechanism already used for shared/redis_password in the worked sourcing-policy
example.
GeneratorSpec now has an rsa(n) option (SecretProvisioner writes both halves together,
and self-heals a missing public half from an existing private key without ever regenerating
the private key) — see Provisioning.
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_MINIO_ENDPOINT / _ACCESS_KEY / _SECRET_KEY / _REGION |
— (Minio client code commented out) |
ASPNETCORE_BUCKET_PREFIX |
— (never read) |
ASPNETCORE_AUDIENCE |
AC_KEYCLOAK_AUDIENCE (legacy leftover) |
ENABLE_ERROR_HANDLING |
— (never read) |
ASPNETCORE_UNSUB_RIJNDAEL_IV |
— (only ..._KEY is used) |
ASPNETCORE_GOOGLE_SHEETS_SHEET_NAME / _SPREADSHEET_ID / _CREDENTIAL_FILE |
— (never read) |
ASPNETCORE_ISSUERS / ASPNETCORE_TOKEN_CERT_PATH / ASPNETCORE_TOKEN_CERT_PASSWORD |
— (legacy leftover, never read) |
Distribution Server¶
Repository: ac-server-distribution.
The default host exposes env vars verbatim and Program.cs also calls AddEnvironmentVariables("ASPNETCORE_") (prefix stripped). Current names below are as set in launchSettings.json / appsettings.json.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment, lowercased to select NLog.production.config vs NLog.config |
production |
— |
ASPNETCORE_PORT |
AC_PORT |
Kestrel listen port; startup throws if unset | 8016 |
— |
CUSTOMCONNSTR_DISTRIBUTION_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
This service's own MongoDB connection string (distributionStore database) |
${secret:distribution-server/db_connection_string} |
${secret:distribution-server/db_connection_string} |
ASPNETCORE_REDIS_ENDPOINT |
AC_REDIS_ADDRESS |
Redis host:port (no scheme) used as the StackExchange distributed-cache configuration | redis.appcircle.svc.cluster.local:6379 |
${context:distribution_redis_address} |
ASPNETCORE_REDIS_PREFIX |
AC_REDIS_PREFIX |
This service's own Redis cache key prefix (defaults to DistributionServer) |
DistributionServer |
— |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers for the message brokers and the Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Internal Keycloak base URL used to build the Keycloak client | http://keycloak:8080 |
${context:keycloak_internal_url} |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Externally reachable Keycloak/OIDC issuer URL set as ExternalOpenIdUri |
https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id (also the default audience) | license-server |
"license-server" (literal, not context) |
ASPNETCORE_KEYCLOAK_AUDIENCE |
AC_KEYCLOAK_AUDIENCE |
This service's own expected token audience; falls back to the client id when blank | license-server |
"license-server" (literal, not context) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:distribution-server/keycloak_client_secret} |
${secret:distribution-server/keycloak_client_secret} (generatable) |
ASPNETCORE_RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Internal base URL of the Resource server, passed to AddResourceClient |
http://resource-cluster-service |
${context:resource_internal_url} |
ASPNETCORE_BUILD_SERVER_URL |
AC_BUILD_API_INTERNAL_URL |
Internal base URL of the Build server for the BuildClient |
http://buildserver-cluster-service |
${context:build_internal_url} |
ASPNETCORE_SIGNING_IDENTITY_SERVER_URL |
AC_SIGNING_IDENTITY_API_INTERNAL_URL |
Internal base URL of the Signing Identity server for the SigningIdentityClient |
http://signingidentity-cluster-service |
${context:signing_identity_internal_url} |
ASPNETCORE_STORE_SUBMIT_SERVER_URL |
AC_STORE_SUBMIT_API_INTERNAL_URL |
Internal base URL of the Store Submit server for the StoreSubmitClient |
http://storesubmitserver-cluster-service:80 |
${context:store_submit_internal_url} |
ASPNETCORE_LICENSE_SERVER_URL |
AC_LICENSE_API_INTERNAL_URL |
Internal base URL of the License server for the LicenseClient; when blank the client is left unconfigured |
http://licenseserver-cluster-service |
${context:license_internal_url} |
PrivateApiUrl |
AC_API_INTERNAL_URL |
Internal API-gateway base URL used to build binary download links and ApplicationSetting |
http://api-cluster-service |
${context:api_gateway_internal_url} |
TesterWebUrl |
AC_TESTER_WEB_URL |
External Tester/distribution web URL used to build the app links emailed to testers | https://my.appcircle.io |
${context:tester_external_url} |
WebUrl |
AC_WEB_URL |
External main web dashboard URL used when composing tester notification links | https://my.appcircle.io |
${context:tester_external_url} |
ASPNETCORE_DEFAULT_APP_ICON |
AC_DEFAULT_APP_ICON_URL |
Default application icon URL stored in ApplicationSetting |
https://cdn.appcircle.io/common/images/defaultApp.png |
— |
ASPNETCORE_UNSUB_RIJNDAEL_KEY |
AC_UNSUBSCRIBE_ENCRYPTION_KEY 🔒 |
Base64 AES-GCM key used to encrypt the unsubscribe token in notification emails | ${secret:distribution-server/unsubscribe_encryption_key} |
${secret:distribution-server/unsubscribe_encryption_key} (generatable) |
ASPNETCORE_TESTER_ENCRYPTION_KEY |
AC_TESTER_ENCRYPTION_KEY 🔒 |
Base64 AES-GCM key used to encrypt the tester approval payload in notification emails | ${secret:distribution-server/tester_encryption_key} |
${secret:distribution-server/tester_encryption_key} (generatable) |
ASPNETCORE_TESTER_EMAIL_FAIR_USAGE_LIMIT |
AC_TESTER_EMAIL_FAIR_USAGE_LIMIT |
Default tester-email fair-usage limit as count_period (e.g. 10000_1m) |
10000_1m |
— |
ASPNETCORE_TESTER_STARTER_EMAIL_FAIR_USAGE_LIMIT |
AC_TESTER_STARTER_EMAIL_FAIR_USAGE_LIMIT |
Tester-email fair-usage limit applied to Starter-license organizations | 100_1m |
— |
ASPNETCORE_DELETE_OLD_ARTIFACTS_ALLOW_DEBUG_VALUES |
AC_DELETE_OLD_ARTIFACTS_DEBUG_VALUES_ENABLED |
Boolean gating whether debug values are allowed when handling the license delete-old-artifacts event (code only) | false |
— |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum NLog log level | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Basic health-check path, consumed by NLog to suppress/route health request logs | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Deep health-check path, consumed by NLog | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
NLog switch to drop basic-health request logs; inverted from the negative form | false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
NLog switch to drop deep-health request logs; inverted from the negative form | false |
— |
SupportedCultures |
AC_SUPPORTED_CULTURES |
Comma-separated UI cultures for JSON localization | en,tr |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_BUCKET_PREFIX |
AC_S3_BUCKET_PREFIX (only in commented-out code) |
ASPNETCORE_APPETIZE_API_KEY / _DOMAIN / _QUERY_MINUTE_PERIOD |
— (Appetize report job commented out) |
ASPNETCORE_RIJNDAEL_KEY / _IV / ASPNETCORE_UNSUB_RIJNDAEL_IV |
— (AES-GCM uses the key only) |
ConnectionStrings:DistributionServerDbConnection |
AC_DB_CONNECTION_STRING (DB read from CUSTOMCONNSTR_...) |
ConnectionStrings:Redis_Connection |
AC_REDIS_ADDRESS (Redis read from ASPNETCORE_REDIS_ENDPOINT) |
ConnectionStrings:ElasticSearchConnection |
— (never read) |
Tester Web¶
Repository: ac-tester-web.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_PORT |
AC_PORT |
The TCP port Kestrel binds and listens on; startup fails if it is not a valid integer | 5000 |
— |
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment (selects the production NLog config and toggles the dev exception page) | production |
— |
IS_SELF_HOSTED |
AC_IS_SELF_HOSTED |
Deployment-wide flag marking whether the app runs self-hosted, read by HomeController |
true |
— |
TesterWebUrl |
AC_EXTERNAL_URL |
This app's own public base URL, used to build tester/device links and return URLs in emails and views | https://tester.appcircle.io |
${context:tester_external_url} |
DEFAULT_SCHEME |
AC_SCHEME |
URL scheme this app uses when constructing its own redirect/callback URLs (defaults to https) |
https |
${context:external_scheme} |
PrivateApiUrl |
AC_API_GATEWAY_INTERNAL_BASE_URL |
Internal base URL of the API gateway this app calls (fronts the tester API and signing-identity) | http://api-gateway |
${context:api_gateway_internal_url} |
ASPNETCORE_TESTER_API_SERVER_PATH |
AC_TESTER_API_PATH |
Path segment appended to the gateway base URL to reach the distribution tester API | /distribution-tester |
— |
ASPNETCORE_API_CONFIGURATION |
AC_TESTER_API_BASE_URL |
Full override for the composed tester API root; when set it replaces PrivateApiUrl + server path |
http://tester-api/distribution-tester |
— |
AuthUrl |
AC_KEYCLOAK_INTERNAL_URL |
Internal base URL of Keycloak, used to build the token endpoint and the SSO OIDC token URL | http://keycloak |
${context:keycloak_internal_url} |
ExternalAuthUrl |
AC_KEYCLOAK_EXTERNAL_URL |
External base URL of Keycloak used for the browser-facing logout redirect (falls back to AuthUrl) |
https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_CLIENT_TOKEN_URL |
AC_KEYCLOAK_TOKEN_URL |
Full Keycloak client-token endpoint URL; when set it overrides AuthUrl + TOKEN_PATH |
http://keycloak/auth/realms/distribute/protocol/openid-connect/token |
"${context:keycloak_internal_url}/auth/realms/distribute/protocol/openid-connect/token" |
TOKEN_PATH |
AC_KEYCLOAK_TOKEN_PATH |
Path appended to AuthUrl to form the Keycloak token endpoint when no full token URL is given |
/auth/realms/distribute/protocol/openid-connect/token |
— |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_OIDC_EXTERNAL_URL |
External Keycloak/OIDC issuer URL whose host seeds the CSP img-src and whose scheme decides HSTS |
https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_KEYCLOAK_TESTERWEB_CLIENT_ID |
AC_KEYCLOAK_WEB_CLIENT_ID |
Keycloak client id this app presents when requesting client and SSO tokens | tester-web |
"tester-web" (literal, not context) |
ASPNETCORE_KEYCLOAK_TESTERWEB_SECRET_ID |
AC_KEYCLOAK_WEB_CLIENT_SECRET 🔒 |
Keycloak client secret paired with the tester-web client id | ${secret:tester-web/keycloak_client_secret} |
${secret:tester-web/keycloak_client_secret} (generatable) |
ASPNETCORE_KEYCLOAK_STOREWEB_CLIENT_ID |
AC_KEYCLOAK_STORE_WEB_CLIENT_ID |
Store-web Keycloak client id referenced only in error-log messages | store-web |
"store-web" (literal, not context) |
ASPNETCORE_ALLOWED_SSO_REDIRECT_HOSTS |
AC_ALLOWED_SSO_REDIRECT_HOSTS |
Comma-separated allow-list of hosts permitted as SSO redirect targets | appcircle.io,my.appcircle.io |
not yet resolved — needs a bare-host (no-scheme) derived value |
ASPNETCORE_ALLOWED_REDIRECT_HOSTS |
AC_ALLOWED_REDIRECT_HOSTS |
Comma-separated allow-list of hosts permitted as generic redirect targets | appcircle.io |
${context:external_root_host} — matches directly, already bare |
CACHE_TIMEOUT_MINUTES |
AC_CACHE_TIMEOUT_MINUTES |
Cache expiry in minutes for the API configuration cache (defaults to 3) | 3 |
— |
FILECACHE_ENABLED |
AC_FILECACHE_ENABLED |
Boolean enabling the API file cache (defaults to true) | true |
— |
ENABLE_CACHE |
AC_CACHE_ENABLED |
Boolean toggling in-memory caching of profile lists and page models (defaults to true) | true |
— |
ASPNETCORE_ENABLE_TOKEN_LOGING |
AC_TOKEN_LOGGING_ENABLED |
Boolean enabling logging of tokens (defaults to false) | false |
— |
ASPNETCORE_OPTIMIZE_MEMORY |
AC_MEMORY_OPTIMIZE_ENABLED |
When true, registers the memory-optimizer hosted service and disables server GC |
true |
— |
ASPNETCORE_OPTIMIZE_MEMORY_IN_MINUTES |
AC_MEMORY_OPTIMIZE_PERIOD_IN_MINUTES |
Interval in minutes at which the memory-optimizer service runs | 30 |
— |
ASPNETCORE_BINARY_FILECACHE_ENABLED |
AC_BINARY_FILECACHE_ENABLED |
When true, registers the cached-binary cleaner background service |
true |
— |
ASPNETCORE_BINARY_FILECACHE_PERIOD_IN_MINUTES |
AC_BINARY_FILECACHE_PERIOD_IN_MINUTES |
Interval in minutes between binary file-cache cleanup runs (defaults to 60) | 60 |
— |
ASPNETCORE_BINARY_FILECACHE_MAX_SIZE_MB |
AC_BINARY_FILECACHE_MAX_SIZE_MB |
Maximum binary file-cache size in MB before cleanup (defaults to 1000) | 1000 |
— |
ASPNETCORE_BINARY_FILECACHE_MAX_SIZE_DURATION_HOURS |
AC_BINARY_FILECACHE_MAX_SIZE_DURATION_HOURS |
Maximum age in hours a cached binary is kept before eviction (defaults to 120) | 120 |
— |
ASPNETCORE_OTP_CODE_VALIDITY_IN_MINUTES |
AC_OTP_CODE_VALIDITY_IN_MINUTES |
Validity window in minutes for login OTP codes | 5 |
— |
RESEND_OTP_DISABLED |
AC_OTP_RESEND_DISABLED |
Boolean; when true disables the resend-OTP option on the login flow |
false |
— |
AUTH_PROXY_ENABLED |
AC_AUTH_PROXY_ENABLED |
When true, inserts the AuthProxyMiddleware into the request pipeline |
false |
— |
ASPNETCORE_OPENSSL_COMMAND |
AC_OPENSSL_COMMAND_PATH |
Path/command used to invoke the openssl binary for signing operations (defaults to openssl) |
/usr/bin/openssl |
— |
DEFAULT_ORGANIZATION_ID |
AC_DEFAULT_ORGANIZATION_ID |
Default organization GUID applied when set (self-hosted single-org handling) | 00000000-0000-0000-0000-000000000000 |
— |
ASPNETCORE_TESTER_ENCRYPTION_KEY |
AC_ENCRYPTION_KEY 🔒 |
Encryption key used to decrypt/verify unsubscribe (email-link) tokens | ${secret:tester-web/encryption_key} |
${secret:tester-web/encryption_key} (generatable) |
MOBILE_CONFIG_SIGN_PEM |
AC_MOBILE_CONFIG_SIGN_PEM 🔒 |
Base64-encoded PEM certificate written to disk to sign iOS .mobileconfig profiles |
${secret:tester-web/mobileconfig_sign_pem} |
${secret:tester-web/mobileconfig_sign_pem} — install-provided, not generatable |
MOBILE_CONFIG_SIGN_KEY |
AC_MOBILE_CONFIG_SIGN_KEY 🔒 |
Base64-encoded private key written to disk to sign iOS .mobileconfig profiles |
${secret:tester-web/mobileconfig_sign_key} |
${secret:tester-web/mobileconfig_sign_key} — install-provided, not generatable |
MOBILE_CONFIG_SIGN_CERT_CHAIN |
AC_MOBILE_CONFIG_SIGN_CERT_CHAIN 🔒 |
Base64-encoded certificate chain written to disk for .mobileconfig signing |
${secret:tester-web/mobileconfig_sign_cert_chain} |
${secret:tester-web/mobileconfig_sign_cert_chain} — install-provided, not generatable |
Tester API Service¶
Repository: ac-service-tester-api.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment; read to pick the NLog config and toggle Swagger | production |
— |
ASPNETCORE_PORT |
AC_PORT |
This service's own HTTP listen port, bound via Kestrel.ListenAnyIP |
8044 |
— |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
This service's own minimum log level, consumed by the shared NLog config | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Basic health-check path, served by app.UseBasicHealth() |
/health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Deep health-check path, served by app.UseDeepHealth() |
/health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic-health request logs are emitted (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep-health request logs are emitted (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_TESTER_API_SERVER_URL |
AC_EXTERNAL_URL |
This service's own public base URL, used to build absolute icon URLs pointing back to itself | https://tester-api.appcircle.io |
not yet resolved — tester-api isn't one of the five external subdomains this system currently derives |
CUSTOMCONNSTR_TESTER_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
This service's own MongoDB connection string (distributionStore database) |
${secret:tester-api/db_connection_string} |
${secret:tester-api/db_connection_string} |
ASPNETCORE_REDIS_ENDPOINT |
AC_REDIS_ADDRESS |
Redis host:port for the distributed cache | redis.appcircle.svc.cluster.local:6379 |
${context:tester_api_redis_address} |
ASPNETCORE_REDIS_PREFIX |
AC_REDIS_PREFIX |
This service's own cache key prefix (Redis InstanceName, defaults to TesterApi) |
TesterApi |
— |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers, passed to KafkaHealthCheck and the shared Kafka event controller |
kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Keycloak server base URL used server-side for token operations | http://keycloak:9302 |
${context:keycloak_internal_url} |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Keycloak's externally reachable OpenID issuer URI, set as ExternalOpenIdUri |
https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id | license-server |
"license-server" (literal, not context) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:tester-api/keycloak_client_secret} |
${secret:tester-api/keycloak_client_secret} (generatable) |
ASPNETCORE_JWT_RSA_PRIVATE_KEY |
AC_JWT_RSA_PRIVATE_KEY 🔒 |
This service's own RSA private key used by JwtHandler to sign issued JWTs |
${secret:tester-api/jwt_rsa_private_key} |
${secret:tester-api/jwt_rsa_private_key} (generatable, rsa(2048)) |
OTP_SERVICE_API_ROOT |
AC_OTP_INTERNAL_URL |
Base URL of the internal OTP service (health check and OtpServiceApiClient) |
http://otp:8033 |
not yet resolved — new candidate input, not confirmed |
ASPNETCORE_OTP_SERVICE_API_VERSION |
AC_OTP_API_VERSION |
API version of the internal OTP service | v1 |
— |
ASPNETCORE_RESEND_OTP_DISABLED |
AC_RESEND_OTP_ENABLED |
Whether OTP resend is allowed (inverted from the negative RESEND_OTP_DISABLED) |
true |
— |
RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Base URL of the internal Resource service, passed to AddResourceClient |
http://resource:8012 |
${context:resource_internal_url} |
PrivateApiUrl |
AC_API_INTERNAL_URL |
Internal API-gateway base URL, used as ApplicationSetting.IconBaseUrl |
https://api.appcircle.io |
${context:api_gateway_internal_url} |
TesterWebUrl |
AC_TESTER_WEB_EXTERNAL_URL |
External URL of the Tester Web frontend, used to build download/icon/redirect/2FA links | https://tester.appcircle.io |
${context:tester_external_url} |
ASPNETCORE_DEFAULT_APP_ICON |
AC_DEFAULT_APP_ICON_URL |
This service's own default app-icon URL | https://cdn.appcircle.io/common/images/defaultApp.png |
— |
ASPNETCORE_FORCE_STREAM_DOWNLOAD |
AC_FORCE_STREAM_DOWNLOAD_ENABLED |
Own behavior flag forcing binary downloads to be streamed through the service | true |
— |
SERVE_DOWNLOADS_FROM_TESTER_WEB |
AC_SERVE_DOWNLOADS_FROM_TESTER_WEB_ENABLED |
Own behavior flag routing binary download links through Tester Web instead of signed URLs | true |
— |
SERVE_ICONS_FROM_TESTER_WEB |
AC_SERVE_ICONS_FROM_TESTER_WEB_ENABLED |
Own behavior flag routing icon links through Tester Web | true |
— |
PROFILE_LIST_ALLOW_DISK_USE |
AC_PROFILE_LIST_ALLOW_DISK_USE_ENABLED |
Own behavior flag enabling Mongo allowDiskUse for the profile-list query |
false |
— |
ASPNETCORE_OPTIMIZE_MEMORY |
AC_OPTIMIZE_MEMORY_ENABLED |
Own behavior flag enabling the periodic MemoryOptimizerService |
true |
— |
ASPNETCORE_OPTIMIZE_MEMORY_IN_MINUTES |
AC_OPTIMIZE_MEMORY_PERIOD_MINUTES |
Interval in minutes for the memory optimizer's collection cycle | 1 |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_JWT_RSA_PUBLIC_KEY |
— (only the private key is used for signing) |
ASPNETCORE_ENABLE_CACHE |
— (ENABLE_CACHE is a hardcoded false field, never bound) |
ASPNETCORE_STORE_WEB_SCHEME |
— (code reads ASPNETCORE_TESTER_WEB_SCHEME, not set here) |
ASPNETCORE_MINIO_ENDPOINT / _ACCESS_KEY / _SECRET_KEY / _REGION |
— (MinIO client block commented out; downloads go through Resource) |
ASPNETCORE_BUCKET_PREFIX |
— (never read) |
ASPNETCORE_BUILD_SERVER_URL |
— (ResignReportClient registration commented out) |
Tester Admin Service¶
Repository: ac-service-tester-admin.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment that selects the NLog config and toggles Swagger | production |
— |
ASPNETCORE_PORT |
AC_PORT |
The port Kestrel binds this service to; startup throws if unset or non-numeric | 8091 |
— |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap server address(es) used to build the Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
CUSTOMCONNSTR_DISTRIBUTE_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
This service's own MongoDB connection string (distributionStore database) |
${secret:tester-admin-service/db_connection_string} |
${secret:tester-admin-service/db_connection_string} |
TesterWebUrl |
AC_TESTER_WEB_URL |
Public base URL of the Tester web portal, used as the Keycloak client root/redirect URL when provisioning SSO clients | https://test.appcircle.io |
${context:tester_external_url} |
TESTER_REDIRECT_PATH |
AC_TESTER_WEB_REDIRECT_PATH |
Callback path appended to the Tester web URL to form the SSO login redirect URL | auth_callback |
— |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Internal base URL of Keycloak used for admin/token API calls, OIDC options, and the health check | http://keycloak:9302 |
${context:keycloak_internal_url} |
ASPNETCORE_KEYCLOAK_HEALTH_PORT |
AC_KEYCLOAK_HEALTH_PORT |
Internal port on the Keycloak server the health check is rewritten to target | 9000 |
not yet resolved — port-only fragment of keycloak_internal_url |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id used to authenticate to Keycloak | distribute-admin-service |
"distribute-admin-service" (literal, not context) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:tester-admin-service/keycloak_client_secret} |
${secret:tester-admin-service/keycloak_client_secret} (generatable) |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
External (public) OIDC issuer URL of Keycloak, set as ExternalOpenIdUri |
https://auth.appcircle.io |
${context:auth_external_url} |
AuthUrl |
AC_KEYCLOAK_EXTERNAL_URL |
External Keycloak auth URL used to build the SSO browser login URL; duplicates ASPNETCORE_OIDC_EXTERNAL_URL |
https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_IS_SELF_HOSTED |
AC_IS_SELF_HOSTED |
Deployment-wide flag indicating whether the platform runs self-hosted | true |
— |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum NLog logging level (defaults to Trace) |
Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
This service's basic health endpoint path, used by NLog to optionally suppress request logs | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
This service's deep health endpoint path, used by NLog to optionally suppress request logs | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether health-endpoint request logs are emitted (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep-health request logs are emitted (inverted from the negative IGNORE form) |
false |
— |
Store API Service¶
Repository: ac-service-store-api.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_PORT |
AC_PORT |
The service's own Kestrel listen port; also reused to build http://localhost:<port> self-calls |
8106 |
— |
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment selecting the NLog config and dev behavior | Production |
— |
ASPNETCORE_IS_SELF_HOSTED |
AC_IS_SELF_HOSTED |
Deployment-wide flag toggling self-hosted vs cloud download/redirect behavior | false |
— |
CUSTOMCONNSTR_STORE_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
The service's own MongoDB connection string for the enterpriseStore database |
${secret:store-api/db_connection_string} |
${secret:store-api/db_connection_string} |
ASPNETCORE_REDIS_ENDPOINT |
AC_REDIS_ADDRESS |
Redis cache host:port used for the distributed cache and direct ConnectionMultiplexer connections |
redis.appcircle.svc.cluster.local:6379 |
${context:store_api_redis_address} |
ASPNETCORE_REDIS_PREFIX |
AC_REDIS_PREFIX |
The service's own Redis key/instance-name prefix (defaults to StoreApi) |
StoreApi |
— |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers for the event producer/consumer and the Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Base URL of the Resource service, used by the resource HTTP client and its health check | http://resource:8012 |
${context:resource_internal_url} |
ASPNETCORE_OTP_SERVICE_API_ROOT |
AC_OTP_INTERNAL_URL |
Base URL of the OTP service consumed by the OTP API client | http://otp:8033 |
not yet resolved — new candidate input, not confirmed |
ASPNETCORE_OTP_SERVICE_API_VERSION |
AC_OTP_API_VERSION |
API version segment used when calling the OTP service | v1 |
— |
ASPNETCORE_RESEND_OTP_DISABLED |
AC_OTP_RESEND_ENABLED |
Whether OTP resend is allowed (inverted from the negative RESEND_OTP_DISABLED) |
true |
— |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Internal Keycloak server base URL used by the Keycloak client | http://keycloak:9302 |
${context:keycloak_internal_url} |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Public Keycloak URL advertised to clients as the external OIDC issuer | https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
The service's own Keycloak client id | license-server |
"license-server" (literal, not context) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
The service's own Keycloak client secret | ${secret:store-api/keycloak_client_secret} |
${secret:store-api/keycloak_client_secret} (generatable) |
ASPNETCORE_STORE_URL |
AC_STOREWEB_EXTERNAL_URL |
Public Store Web base URL used to build per-organization store domains and verification/logo links | https://store.appcircle.io |
${context:store_external_url} |
ASPNETCORE_STOREWEB_URL |
AC_STOREWEB_INTERNAL_URL |
Internal Store Web service URL used for cache-invalidation calls and default-icon links | http://storeweb-headless-service:8080 |
not yet resolved — new candidate input, not confirmed |
ASPNETCORE_STORE_WEB_SCHEME |
AC_STOREWEB_SCHEME |
Explicit scheme override when constructing Store Web URLs (falls back to the store URL's scheme) | https |
${context:external_scheme} |
PrivateApiUrl |
AC_EXTERNAL_URL |
This service's own external API base URL used to construct public binary/icon download links | https://api.appcircle.io |
${context:api_external_url} |
ASPNETCORE_JWT_RSA_PRIVATE_KEY |
AC_JWT_RSA_PRIVATE_KEY 🔒 |
The service's own RSA private key used to sign store JWTs | ${secret:store-api/jwt_rsa_private_key} |
${secret:store-api/jwt_rsa_private_key} (generatable, rsa(2048)) |
ASPNETCORE_JWT_RSA_PUBLIC_KEY |
AC_JWT_RSA_PUBLIC_KEY |
The service's own RSA public key used to validate store JWTs | -----BEGIN PUBLIC KEY-----... |
${secret:store-api/jwt_rsa_public_key} — public half of the row above |
ASPNETCORE_FORCE_STREAM_DOWNLOAD |
AC_FORCE_STREAM_DOWNLOAD_ENABLED |
Toggle forcing binaries to be streamed through the service instead of redirecting | false |
— |
SERVE_ICONS_FROM_STORE_WEB |
AC_SERVE_ICONS_FROM_STORE_WEB_ENABLED |
Toggle serving app icons via Store Web rather than direct/signed URLs | false |
— |
SERVE_DOWNLOADS_FROM_STORE_WEB |
AC_SERVE_DOWNLOADS_FROM_STORE_WEB_ENABLED |
Toggle serving downloads via Store Web rather than direct/signed URLs | false |
— |
ASPNETCORE_ENABLE_TOKEN_LOGING |
AC_TOKEN_LOGGING_ENABLED |
Toggle logging of auth tokens (diagnostic switch) | false |
— |
ASPNETCORE_OPTIMIZE_MEMORY |
AC_OPTIMIZE_MEMORY_ENABLED |
Toggle registering the background MemoryOptimizerService (and disabling server GC) |
true |
— |
ASPNETCORE_OPTIMIZE_MEMORY_IN_MINUTES |
AC_OPTIMIZE_MEMORY_INTERVAL_MINUTES |
Interval in minutes at which the memory optimizer runs | 1 |
— |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
The service's own minimum NLog level | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Path of the basic health endpoint (used by NLog to suppress its request logs) | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Path of the deep health endpoint | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic health-check request logs are emitted (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep health-check request logs are emitted (inverted from the negative IGNORE form) |
false |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_CACHE_DURATION_DAYS |
— (never read) |
ASPNETCORE_STORE_API_SERVER_URL |
— (only in commented-out code) |
ASPNETCORE_MINIO_ENDPOINT / _ACCESS_KEY / _SECRET_KEY / _REGION / ASPNETCORE_BUCKET_PREFIX |
— (MinIO client registration commented out) |
Store Profile Service¶
Repository: ac-service-store-profile.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_PORT |
AC_PORT |
The TCP port the service's Kestrel host binds to; required at startup | 8105 |
— |
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment selecting the NLog config and hosting environment | Production |
— |
CUSTOMCONNSTR_STORE_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
The service's own MongoDB replica-set connection string | ${secret:store-profile/db_connection_string} |
${secret:store-profile/db_connection_string} |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap server list used by the event consumer/producer and the Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Base URL of the internal Resource Server the service calls (also health-checked) | http://resourceserver-cluster-service:80 |
${context:resource_internal_url} |
ASPNETCORE_STORE_SUBMIT_SERVER_URL |
AC_STORE_SUBMIT_API_INTERNAL_URL |
Base URL of the internal Store Submit service the StoreSubmitClient targets |
http://storesubmitserver-cluster-service:80 |
${context:store_submit_internal_url} |
PrivateApiUrl |
AC_PRIVATE_API_INTERNAL_URL |
Base URL of the private API gateway used to build binary download links | https://api.appcircle.io |
${context:api_gateway_internal_url} |
ASPNETCORE_VAULT_TOKEN |
AC_VAULT_TOKEN 🔒 |
Token used to authenticate to HashiCorp Vault for the certificate safe-store and Vault health check | ${secret:store-profile/vault-token} |
eliminated (shared static token) |
ASPNETCORE_VAULT_API |
AC_VAULT_URL |
Base API URL of the Vault server used by the Vault health check and certificate safe-store | http://vault:8200/v1/local/ |
eliminated (legacy direct Vault) |
ASPNETCORE_VAULT_SERVICE_PREFIX |
AC_VAULT_SERVICE_PREFIX |
Path prefix under which this service stores its secrets in Vault | enterprise-store |
becomes a sourcing-policy declaration (mount local, prefix enterprise-store) |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Base URL of the Keycloak server the Keycloak client connects to | http://keycloak:9302 |
${context:keycloak_internal_url} |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id (appcircle realm) |
store-server |
"store-server" (literal, not context) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:store-profile/keycloak_client_secret} |
${secret:store-profile/keycloak_client_secret} (generatable) |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Externally reachable Keycloak OIDC issuer URL set as the client's ExternalOpenIdUri |
https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_STORE_URL |
AC_STORE_WEB_URL |
Base URL of the enterprise store web frontend, into which the org subdomain is injected | https://store.appcircle.io |
${context:store_external_url} |
ASPNETCORE_STORE_WEB_SCHEME |
AC_STORE_WEB_SCHEME |
Optional scheme override applied when composing the store web URL | https |
${context:external_scheme} |
ASPNETCORE_DEFAULT_APP_ICON |
AC_DEFAULT_APP_ICON_URL |
Fallback application icon URL used when an app has no icon | https://cdn.appcircle.io/common/images/defaultApp.png |
— |
ASPNETCORE_FORCE_STREAM_DOWNLOAD |
AC_FORCE_STREAM_DOWNLOAD_ENABLED |
Boolean forcing artifact downloads to be streamed through the service | true |
— |
ASPNETCORE_FORCE_CUSTOM_DOMAIN_ENABLED |
AC_FORCE_CUSTOM_DOMAIN_ENABLED |
Boolean toggling enforcement of a custom domain for store settings | true |
— |
ASPNETCORE_FORCE_CUSTOM_DOMAIN_PER_ORGANIZATION |
AC_FORCE_CUSTOM_DOMAIN_ORGANIZATIONS |
Comma-separated list of organization ids/hosts for which custom-domain enforcement applies | DBF245EA-...,custom.local |
— |
ASPNETCORE_DELETE_OLD_ARTIFACTS_ALLOW_DEBUG_VALUES |
AC_DELETE_OLD_ARTIFACTS_ALLOW_DEBUG_ENABLED |
Boolean allowing debug values in the old-artifact deletion handling | true |
— |
ASPNETCORE_UNSUB_RIJNDAEL_KEY |
AC_UNSUB_RIJNDAEL_KEY 🔒 |
Base64 AES-GCM key used to encrypt the unsubscribe token in notification emails | ${secret:store-profile/unsub_rijndael_key} |
${secret:store-profile/unsub_rijndael_key} (generatable) |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum log level applied by the NLog configuration | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
HTTP path of the basic health endpoint | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
HTTP path of the deep health endpoint | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic health-endpoint requests are logged (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep health-endpoint requests are logged (inverted from the negative IGNORE form) |
false |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
WebUrl |
— (never read) |
ASPNETCORE_OAUTH_CALLBACK_URL |
— (only in commented-out code) |
ASPNETCORE_BUILD_SERVER_URL |
— (never read) |
STORE_URL_test |
— (leftover test value) |
ASPNETCORE_UNSUB_RIJNDAEL_IV |
— (AES-GCM derives its own nonce) |
ASPNETCORE_MINIO_ENDPOINT / _ACCESS_KEY / _SECRET_KEY / _REGION / ASPNETCORE_BUCKET_PREFIX |
AC_S3_* (only in commented-out MinIO client code) |
Store Web¶
Repository: ac-store-web.
A .NET 8 / ASP.NET Core MVC (Kestrel) app. Program.cs calls AddEnvironmentVariables("ASPNETCORE_"), so most keys are read both prefixed and prefix-stripped.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment; also picks NLog.production.config vs NLog.config |
production |
— |
ASPNETCORE_PORT |
AC_PORT |
This app's own Kestrel listen port; throws at startup if unset | 8035 |
— |
ASPNETCORE_STORE_WEB_SCHEME |
AC_SCHEME |
This app's own external scheme, used to decide whether to send HSTS (falls back to DEFAULT_SCHEME) |
https |
${context:external_scheme} |
DEFAULT_SCHEME / ASPNETCORE_DEFAULT_SCHEME |
AC_DEFAULT_SCHEME |
Fallback scheme for building redirect/callback URLs (two current vars; consolidate to one) | https |
${context:external_scheme} |
ASPNETCORE_API_CONFIGURATION |
AC_STORE_API_INTERNAL_BASE_URL |
Base URL of the Store API service this app calls server-side (also its deep health check target) | http://store-api/storeapi |
${context:store_api_internal_url} |
ASPNETCORE_API_VERSION |
AC_STORE_API_VERSION |
Version segment used when calling the Store API | v1 |
"v1" (literal, not context) |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
External Keycloak/OIDC URL; used for forwarded headers to SSO and the CSP img-src host |
https://auth.appcircle.io |
${context:auth_external_url} |
AuthUrl |
AC_KEYCLOAK_INTERNAL_URL |
Internal Keycloak base URL for building the OIDC token endpoint (AuthUrl + TOKEN_PATH) |
http://keycloak |
${context:keycloak_internal_url} |
ExternalAuthUrl |
AC_KEYCLOAK_EXTERNAL_URL |
External Keycloak URL used to build the logout URL; overlaps ASPNETCORE_OIDC_EXTERNAL_URL (consolidate) |
https://auth.appcircle.io |
${context:auth_external_url} (dropped once consolidated into ASPNETCORE_OIDC_EXTERNAL_URL above) |
ASPNETCORE_TOKEN_PATH |
AC_KEYCLOAK_TOKEN_PATH |
Path of the Keycloak OIDC token endpoint appended to the auth base URL | /auth/realms/appcircle/protocol/openid-connect/token |
"/auth/realms/appcircle/protocol/openid-connect/token" (literal, fixed Keycloak path) |
ASPNETCORE_CLIENT_TOKEN_URL |
AC_STORE_API_CLIENT_TOKEN_URL |
Optional explicit override for the Keycloak client-token HTTP client base address (points at Store API) | https://api.appcircle.io/storeapi/v1/auth/client-token |
"${context:api_external_url}/storeapi/v1/auth/client-token" (composed) |
ASPNETCORE_KEYCLOAK_STOREWEB_CLIENT_ID |
AC_KEYCLOAK_WEB_CLIENT_ID |
OIDC client id used when requesting client tokens from Keycloak | store-web |
"store-web" (literal, not context) |
ASPNETCORE_KEYCLOAK_STOREWEB_SECRET_ID |
AC_KEYCLOAK_WEB_CLIENT_SECRET 🔒 |
OIDC client secret paired with the store-web client id | ${secret:store-web/keycloak_client_secret} |
${secret:store-web/keycloak_client_secret} (generatable) |
ASPNETCORE_STORE_URL |
AC_EXTERNAL_URL |
This app's own public store URL, used to build store links (falls back to the request host) | https://store.appcircle.io |
${context:store_external_url} |
ASPNETCORE_CACHE_TIMEOUT_MINUTES |
AC_CACHE_TIMEOUT_MINUTES |
Own API-response cache timeout in minutes (default 3) | 1 |
— |
ASPNETCORE_FILECACHE_ENABLED |
AC_FILE_CACHE_ENABLED |
Toggles the app's file cache for API responses (default true) | true |
— |
ASPNETCORE_BINARY_FILECACHE_ENABLED |
AC_BINARY_FILE_CACHE_ENABLED |
Enables the background CachedBinaryCleanerService for downloaded binaries |
false |
— |
ASPNETCORE_BINARY_FILECACHE_PERIOD_IN_MINUTES |
AC_BINARY_FILE_CACHE_PERIOD_MINUTES |
Interval between binary-cache cleanup runs (default 60) | 60 |
— |
ASPNETCORE_BINARY_FILECACHE_MAX_SIZE_MB |
AC_BINARY_FILE_CACHE_MAX_SIZE_MB |
Max on-disk binary cache size in MB (default 1000) | 10000 |
— |
ASPNETCORE_BINARY_FILECACHE_MAX_SIZE_DURATION_HOURS |
AC_BINARY_FILE_CACHE_MAX_AGE_HOURS |
Max age in hours before cached binaries are evicted (default 120) | 148 |
— |
ASPNETCORE_OPTIMIZE_MEMORY |
AC_MEMORY_OPTIMIZE_ENABLED |
Enables the MemoryOptimizerService background GC helper |
false |
— |
ASPNETCORE_OPTIMIZE_MEMORY_IN_MINUTES |
AC_MEMORY_OPTIMIZE_PERIOD_MINUTES |
Interval between memory-optimizer runs | 1 |
— |
ASPNETCORE_ENABLE_TOKEN_LOGING |
AC_TOKEN_LOGGING_ENABLED |
Whether auth tokens are logged (default false) | false |
— |
ASPNETCORE_CAPTCHA_NOISE_LEVEL |
AC_CAPTCHA_NOISE_LEVEL |
Noise rate for the generated login captcha (default 600) | 600 |
— |
ASPNETCORE_CAPTCHA_DRAW_LINE_COUNT |
AC_CAPTCHA_DRAW_LINE_COUNT |
Number of distractor lines drawn on the captcha | 5 |
— |
ASPNETCORE_CAPTCHA_RIJNDAEL_KEY |
AC_CAPTCHA_RIJNDAEL_KEY 🔒 |
AES/Rijndael key used to encrypt-validate captcha values | ${secret:store-web/captcha_rijndael_key} |
${secret:store-web/captcha_rijndael_key} (generatable) |
ASPNETCORE_IS_SELF_HOSTED |
AC_IS_SELF_HOSTED |
Deployment-wide flag; when true suppresses in-app HSTS. Note: the read at Startup.cs:234 looks logically inverted and should be reviewed |
false |
— |
ASPNETCORE_ALLOWED_HOSTS |
AC_ALLOWED_HOSTS |
Comma-separated Host header allowlist enabling HostHeaderValidationMiddleware |
store.appcircle.io |
not yet resolved — needs a bare-host (no-scheme) derived value |
ASPNETCORE_ALLOWED_SSO_REDIRECT_HOSTS |
AC_ALLOWED_SSO_REDIRECT_HOSTS |
Comma-separated hosts allowed as SSO redirect targets | sso.example.com |
not yet resolved — arbitrary customer-configured SSO host, not a deployment context fact |
ASPNETCORE_ALLOWED_REDIRECT_HOSTS |
AC_ALLOWED_REDIRECT_HOSTS |
Comma-separated hosts allowed as generic post-login redirect targets | example.com |
— |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
NLog minimum log level for this app | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Health path matched by NLog to filter health-probe log lines | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Deep-health path matched by NLog for log filtering | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether health-probe logs are emitted (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep-health logs are emitted (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_RESEND_OTP_DISABLED |
AC_OTP_RESEND_ENABLED |
Whether OTP resend is allowed on login (inverted from the negative RESEND_OTP_DISABLED) |
true |
— |
ASPNETCORE_OTP_CODE_VALIDITY_IN_MINUTES |
AC_OTP_CODE_VALIDITY_MINUTES |
How long a login OTP code stays valid, in minutes | 5 |
— |
AUTH_PROXY_ENABLED |
AC_AUTH_PROXY_ENABLED |
Enables AuthProxyMiddleware (reverse-proxies auth traffic) |
false |
— |
AUTH_PROXY_FORWARD_URI |
AC_AUTH_PROXY_FORWARD_URI |
Upstream URI the auth proxy forwards requests to (required when enabled) | http://auth.internal |
not yet resolved — arbitrary configured upstream, no confirmed context mapping |
AUTH_PROXY_LISTEN_URI |
AC_AUTH_PROXY_LISTEN_URI |
Public URI the auth proxy listens on / rewrites from | https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_DEFAULT_ORGANIZATION_ID |
AC_DEFAULT_ORGANIZATION_ID |
Default organization GUID used for logo/CSS/store resolution when no org is in context | dbf245ea-... |
— |
TR_* / EN_* / DE_* (e.g. EN_STORE_TITLE) |
AC_I18N_<LANG>_<KEY> |
Optional per-language UI string overrides resolved dynamically as <UICULTURE>_<key> |
EN_STORE_TITLE=UK Store |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
STOREAPIREDIS_CLUSTER_SERVICE_PORT |
— (never referenced) |
ASPNETCORE_DEFAULT_SCHEME |
AC_DEFAULT_SCHEME (redundant with DEFAULT_SCHEME; consolidate) |
ExternalAuthUrl |
AC_KEYCLOAK_EXTERNAL_URL (overlaps ASPNETCORE_OIDC_EXTERNAL_URL) |
Store Report Service¶
Repository: ac-service-store-report.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_PORT |
AC_PORT |
The Kestrel port this service binds to; throws if unset | 8075 |
— |
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
ASP.NET hosting environment; also selects NLog.production.config vs NLog.config |
Development |
— |
CUSTOMCONNSTR_STORE_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
MongoDB connection string for the service's own enterpriseStore database |
${secret:store-report-service/db_connection_string} |
${secret:store-report-service/db_connection_string} |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers used by the consumer, the outgoing event handler, and the Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Base URL of the Keycloak server (server-to-server, internal) | http://keycloak:9302 |
${context:keycloak_internal_url} |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Public Keycloak/OIDC issuer URL set as ExternalOpenIdUri for token validation |
https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id | store-server |
"store-server" (literal, not context) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:store-report-service/keycloak_client_secret} |
${secret:store-report-service/keycloak_client_secret} (generatable) |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum log level for the NLog root logger | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Basic health endpoint path (used by the NLog filter) | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Deep health endpoint path (used by the NLog filter) | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic-health request logs are emitted (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep-health request logs are emitted (inverted from the negative IGNORE form) |
false |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_REDIS_ENDPOINT |
— (no Redis client registered; the service uses AddMemoryCache() only) |
ASPNETCORE_DEFAULT_APP_ICON |
— (never read) |
AuthUrl |
— (only read by the commented-out UserService) |
PrivateApiUrl |
— (assigned in the disabled UserService and never used) |
Store Admin Service¶
Repository: ac-service-store-admin.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_PORT |
AC_PORT |
The TCP port Kestrel binds to for this service | 8030 |
— |
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment selecting the NLog config file and dev-only Swagger | Development |
— |
ASPNETCORE_IS_SELF_HOSTED |
AC_IS_SELF_HOSTED |
Deployment-wide flag read in SystemBusiness to branch self-hosted behavior |
true |
— |
CUSTOMCONNSTR_STORE_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
This service's own MongoDB connection string for the enterpriseStore database |
${secret:store-admin-service/db_connection_string} |
${secret:store-admin-service/db_connection_string} |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers used by the message-broker handlers and the Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_VAULT_API |
AC_VAULT_URL |
Base URL of the HashiCorp Vault API used by the Vault health check and certificate safe-store | http://vault:8200/v1/local/ |
eliminated (legacy direct Vault) |
ASPNETCORE_VAULT_TOKEN |
AC_VAULT_TOKEN 🔒 |
Auth token for the Vault API | ${secret:store-admin-service/vault-token} |
eliminated (shared static token) |
ASPNETCORE_VAULT_SERVICE_PREFIX |
AC_VAULT_SERVICE_PREFIX |
This service's path prefix under Vault for storing store certificates | enterprise-store |
becomes a sourcing-policy declaration (mount local, prefix enterprise-store) |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Internal Keycloak server URL used for the Keycloak client and health check | http://keycloak:9302 |
${context:keycloak_internal_url} |
ASPNETCORE_KEYCLOAK_HEALTH_PORT |
AC_KEYCLOAK_HEALTH_PORT |
Keycloak's internal port that the service rewrites the health-check URL onto | 9000 |
not yet resolved — port-only fragment of keycloak_internal_url, same gap as Tester Admin Service's row |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id | store-admin-service |
"store-admin-service" (literal, not context) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:store-admin-service/keycloak_client_secret} |
${secret:store-admin-service/keycloak_client_secret} (generatable) |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Externally reachable Keycloak/OIDC URL set as ExternalOpenIdUri |
https://auth.appcircle.io |
${context:auth_external_url} |
AuthUrl |
AC_KEYCLOAK_EXTERNAL_URL |
Legacy duplicate of the external auth URL used by SsoBusiness to build SSO login URLs (consolidate) |
https://auth.appcircle.io |
${context:auth_external_url} (dropped once consolidated into ASPNETCORE_OIDC_EXTERNAL_URL above) |
STORE_URL |
AC_STORE_EXTERNAL_URL |
External base URL of the Store web front-end, used to compose per-organization store app root URLs | https://store.appcircle.io |
${context:store_external_url} |
ASPNETCORE_FORCE_STORE_SCHEME |
AC_STORE_SCHEME |
Forces the URL scheme used when building custom-domain store URLs (defaults to https) |
http |
${context:external_scheme} |
STORE_REDIRECT_PATH |
AC_STORE_REDIRECT_PATH |
Path appended to the store app root URL as the SSO auth callback redirect | auth_callback |
"auth_callback" (literal, fixed path) |
ASPNETCORE_K8_HOST |
AC_KUBERNETES_URL |
Kubernetes API server URL used by the shared K8Client for ingress management |
https://kubernetes.default.svc |
not yet resolved — no confirmed context mapping |
ASPNETCORE_K8_TOKEN |
AC_KUBERNETES_TOKEN 🔒 |
Service-account bearer token the K8Client uses to call the Kubernetes API |
${secret:store-admin-service/kubernetes-token} |
not yet resolved — platform-projected ServiceAccount token, not ours to provision |
ASPNETCORE_K8_NAMESPACE |
AC_KUBERNETES_NAMESPACE |
Kubernetes namespace the K8Client operates in |
appcircle |
not yet resolved — new candidate input, not confirmed |
ASPNETCORE_K8_DISABLED |
AC_KUBERNETES_ENABLED |
Toggle for the Kubernetes/ingress integration (inverted from the negative K8_DISABLED) |
true |
— |
ASPNETCORE_OPENSHIFT_SUPPORT |
AC_OPENSHIFT_ENABLED |
Boolean switch enabling OpenShift-specific behavior in the K8Client |
false |
— |
ASPNETCORE_HELM_RELEASE_NAME |
AC_HELM_RELEASE_NAME |
Helm release name passed to K8ClientOptions for naming managed ingress resources |
appcircle |
not yet resolved — new candidate input, not confirmed |
ASPNETCORE_INGRESS_CLASS_NAME |
AC_INGRESS_CLASS_NAME |
Ingress class name the K8Client sets on managed ingresses |
nginx |
— |
ASPNETCORE_INGRESS_PATH |
AC_INGRESS_PATH |
Ingress path the K8Client configures for store web routing |
/ |
— |
ASPNETCORE_INGRESS_PATH_TYPE |
AC_INGRESS_PATH_TYPE |
Ingress pathType value the K8Client sets |
Prefix |
— |
ASPNETCORE_INGRESS_NAME_SUFFIX |
AC_INGRESS_NAME_SUFFIX |
Suffix appended to the generated ingress resource name | store |
— |
ASPNETCORE_STORE_WEB_SERVICE_NAME |
AC_STORE_WEB_SERVICE_NAME |
Kubernetes service name of the Store web front-end the managed ingress routes to | store-web |
— |
ASPNETCORE_STORE_WEB_SERVICE_PORT |
AC_STORE_WEB_SERVICE_PORT |
Kubernetes service port of the Store web front-end used in the ingress backend | 80 |
— |
ASPNETCORE_DISABLE_CUSTOM_DOMAIN_CERTIFICATION_SYNC |
AC_CUSTOM_DOMAIN_CERTIFICATION_SYNC_ENABLED |
Toggle for custom-domain certificate sync (inverted from the negative DISABLE_ form) |
true |
— |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum NLog logging level for this service | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
This service's basic health endpoint path | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
This service's deep health endpoint path | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic health-check requests are logged (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep health-check requests are logged (inverted from the negative IGNORE form) |
false |
— |
App Parser Server¶
Repository: ac-server-appparser.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment name; selects the NLog config file and is surfaced as the service-info env | production |
— |
ASPNETCORE_PORT |
AC_PORT |
This service's own Kestrel listen port; throws at startup if empty | 8017 |
— |
ASPNETCORE_RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Full HTTP base URL of the Resource Server this service calls (via AddResourceClient) and health-checks |
http://resource:8012 |
${context:resource_internal_url} |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap server list used by the consumer/producer and the Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_PARSE_TOOL |
AC_PARSE_TOOL |
Name/path of the Android aapt binary the parser invokes to dump APK badging (falls back to aapt) |
aapt |
— |
ASPNETCORE_PARSE_APK_SIGNER |
AC_PARSE_APK_SIGNER |
Name/path of the apksigner binary used to read signing certificates (falls back to apksigner) |
apksigner |
— |
ASPNETCORE_PARSE_TIMEOUT_SEC |
AC_PARSE_TIMEOUT_SEC |
Optional per-parse timeout in seconds applied to the cancellation token; no timeout when unset | 600 |
— |
ASPNETCORE_MAX_JAVA_MEMORY_SIZE |
AC_MAX_JAVA_MEMORY_SIZE |
JVM -Xmx argument passed to bundletool/apktool when parsing AAB files (defaults to -Xmx4000M) |
-Xmx4000M |
— |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
This service's minimum NLog log level | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
This service's basic health-check endpoint path | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
This service's deep health-check endpoint path | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic health-check requests are logged (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep health-check requests are logged (inverted from the negative IGNORE form) |
false |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_MINIO_ENDPOINT / _ACCESS_KEY / _SECRET_KEY / _REGION |
AC_S3_* (only in commented-out Startup.cs code) |
Build Server¶
Repository: ac-server-build. Component: BUILD_API.
The host binds env vars two ways: the default builder verbatim, plus AddEnvironmentVariables("ASPNETCORE_") (prefix stripped). Current names below are as set in launchSettings.json / appsettings.json.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment; selects the NLog config and enables dev-only Git OAuth handling | Production |
— |
ASPNETCORE_PORT |
AC_PORT |
Own Kestrel listen port; throws at startup if unset | 8023 |
— |
SupportedCultures |
AC_SUPPORTED_CULTURES |
Own list of localization cultures fed to UseSupportedCulture |
en,tr |
— |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Own minimum log level consumed by the shared NLog setup | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Own basic health-check path | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Own deep health-check path | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic health-probe requests are logged (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep health-probe requests are logged (inverted from the negative IGNORE form) |
false |
— |
BUILD_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
Own MongoDB connection string for the buildStore database |
${secret:build-server/db_connection_string} |
${secret:build-server/db_connection_string} |
ASPNETCORE_REDIS_ENDPOINT |
AC_REDIS_ADDRESS |
Redis host:port used for the distributed cache and build-log stream health check | redis.appcircle.svc.cluster.local:6379 |
${context:build_redis_address} |
ASPNETCORE_REDIS_PREFIX |
AC_REDIS_PREFIX |
Own Redis key/instance-name prefix (defaults to BuildServer) |
BuildServer |
— |
ASPNETCORE_REDIS_STREAM_ENDPOINT |
AC_REDIS_STREAM_ADDRESS |
Redis host:port used to provision per-agent build-log stream connections | redis:6379 |
— |
ASPNETCORE_PIN_MIGRATION_REDIS_ENDPOINT |
AC_REDIS_MIGRATION_ADDRESS |
Redis host:port used by the pin-data migration MigrationV16 |
redis:6379 |
— |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers for producing/consuming build events and the Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_BUCKET_PREFIX |
AC_S3_BUCKET_PREFIX |
Object-storage bucket-name prefix for build/backup/temp artifacts | appcircle-resource- |
— (own value; storage goes through ${context:resource_internal_url}, no S3 credentials here) |
ASPNETCORE_CACHE_COMPONENT_PROVIDER_TYPE |
AC_CACHE_PROVIDER_TYPE |
Object-storage provider selector for the agent-cache feature (GCLOUD vs S3/MinIO) | GCLOUD |
— (own feature-selector value, same reasoning as the row above) |
ASPNETCORE_VAULT_API |
AC_VAULT_URL |
Vault API base URL used by VaultClient and the Vault health check |
http://vault:8200/v1/local/ |
eliminated (legacy direct Vault) |
ASPNETCORE_VAULT_TOKEN |
AC_VAULT_TOKEN 🔒 |
Vault token sent as X-Vault-Token |
${secret:build-server/vault-token} |
eliminated (shared static token) |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Keycloak base URL for the UserClient and Keycloak client options |
http://keycloak:8080 |
${context:keycloak_internal_url} |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Externally reachable Keycloak/OIDC URL (ExternalOpenIdUri) |
https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
Own Keycloak client id (also used as authorization audience) | build-server |
"build-server" (literal, not context) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
Own Keycloak client secret (named SECRET_ID but is the client secret) |
${secret:build-server/keycloak_client_secret} |
${secret:build-server/keycloak_client_secret} (generatable) |
RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Base URL of the Resource service HTTP client | http://resource:8012 |
${context:resource_internal_url} |
ASPNETCORE_SIGNING_IDENTITY_SERVER_URL |
AC_SIGNING_IDENTITY_API_INTERNAL_URL |
Base URL of the Signing Identity service SigningIdentityClient |
http://signingidentity:8022 |
${context:signing_identity_internal_url} |
ASPNETCORE_DISTRIBUTE_SERVER_URL |
AC_DISTRIBUTION_INTERNAL_URL |
Base URL of the Distribution service DistributionClient |
http://distribution:8016 |
${context:distribution_internal_url} |
ASPNETCORE_PUBLISH_SERVER_URL |
AC_PUBLISH_INTERNAL_URL |
Base URL of the Publish service PublishClient |
http://publish:8032 |
${context:publish_internal_url} |
ASPNETCORE_STORE_SUBMIT_SERVER_URL |
AC_STORE_SUBMIT_API_INTERNAL_URL |
Base URL of the Store Submit service StoreSubmitClient |
http://storesubmit:8027 |
${context:store_submit_internal_url} |
SCHEDULE_SERVICE_URL |
AC_SCHEDULE_INTERNAL_URL |
Base URL of the Schedule service ScheduleServiceClient |
http://schedule:8029 |
${context:schedule_manager_internal_url} (env name unconfirmed) |
ASPNETCORE_AGENTCACHESERVICE_CLUSTER_SERVICE_SERVICE_HOST |
AC_AGENT_CACHE_ADDRESS |
Host:port of the Agent Cache service CacheServiceClient |
agentcache:8068 |
not yet resolved — needs a bare host:port, same fragment gap as elsewhere |
WebUrl |
AC_WEB_URL |
Public web-frontend base URL used for OAuth redirect responses and host resolution | https://my.appcircle.io |
${context:tester_external_url} |
ASPNETCORE_AGENT_OBJECTIVEC_SWIFT_URL |
AC_AGENT_OBJECTIVEC_SWIFT_URL |
Base URL of the iOS (ObjectiveC/Swift) build-agent pool | http://ios-builders:8080/api/v1/builders |
not yet resolved — customer/install-specific build-farm address, no confirmed context mapping |
ASPNETCORE_AGENT_JAVA_KOTLIN_URL |
AC_AGENT_JAVA_KOTLIN_URL |
Base URL of the Android (Java/Kotlin) build-agent pool | http://android-builders:8080/api/v1/builders |
not yet resolved — same as above |
ASPNETCORE_MOCK_AGENT_OBJECTIVEC_SWIFT_URL |
AC_AGENT_MOCK_OBJECTIVEC_SWIFT_URL |
Base URL of the mock iOS build-agent pool | http://ios-builders:8080/api/v1/builders?mock=true |
not yet resolved — same as above |
ASPNETCORE_MOCK_AGENT_JAVA_KOTLIN_URL |
AC_AGENT_MOCK_JAVA_KOTLIN_URL |
Base URL of the mock Android build-agent pool | http://android-builders:8080/api/v1/builders?mock=true |
not yet resolved — same as above |
ASPNETCORE_AGENT_CALLBACK_PUBLIC_URL |
AC_AGENT_CALLBACK_EXTERNAL_URL |
Own externally reachable callback URL handed to build agents | https://api.appcircle.io/build/v1/callback |
"${context:api_external_url}/build/v1/callback" (composed) |
ASPNETCORE_AGENT_CALLBACK_CLUSTER_URL |
AC_AGENT_CALLBACK_INTERNAL_URL |
Own in-cluster callback URL handed to build agents | http://build:8023/build/v1/callback |
"${context:build_internal_url}/build/v1/callback" (composed) |
ASPNETCORE_AGENT_TOKEN_KEY |
AC_AGENT_TOKEN_KEY 🔒 |
Secret key used to sign/validate agent tokens | ${secret:build-server/agent_token_key} |
${secret:build-server/agent_token_key} (generatable) |
ASPNETCORE_QUEUE_LIMIT |
AC_QUEUE_LIMIT |
Own max concurrent build-queue size in ApplicationSetting |
4 |
— |
ASPNETCORE_GITSETTINGS__* (e.g. …__OAUTHS__0__CLIENTID, …__OAUTHS__0__CLIENTSECRET, …__OAUTHS__0__APIURL, …__REDIRECTURL, …__HOOKURLFORMAT) |
AC_GIT_SETTINGS__* |
Structured Git-provider OAuth/connector config (GitHub/GitLab/Bitbucket/Azure DevOps client ids, secrets, API/redirect/hook URLs) bound into GitSetting. Client-secret leaves are secrets 🔒 |
AC_GIT_SETTINGS__OAUTHS__0__CLIENTID=Iv1.abc123 |
not yet resolved — structured config, not a single expression |
ASPNETCORE_PLATFORMSETTINGS__n__TYPE, …__USEPUBLICADDRESS |
AC_PLATFORM_SETTINGS__* |
Structured per-platform build settings (platform type + whether the agent uses the public address) bound into PlatformSetting[] |
AC_PLATFORM_SETTINGS__0__TYPE=ObjectiveCSwift |
— |
ASPNETCORE_CONNECTION_TOKEN_SOURCE |
AC_CONNECTION_TOKEN_SOURCE |
Selects where Git connection tokens are read from - vault (default) vs db |
vault |
— |
ASPNETCORE_USE_INTERNAL_GIT_ADDRESS |
AC_INTERNAL_GIT_ADDRESS_ENABLED |
Toggle to rewrite repository clone URLs to an internal Git address | false |
— |
ASPNETCORE_LOCAL_AGENT |
AC_LOCAL_AGENT_ENABLED |
Toggle enabling local-agent behavior in queue handling | false |
— |
ASPNETCORE_USE_LOCAL_DEBUG_AGENT_TOKEN |
AC_LOCAL_DEBUG_AGENT_TOKEN_ENABLED |
Toggle to accept a local debug agent token instead of a real one | false |
— |
ASPNETCORE_ENABLE_WEBHOOK_SECURITY_CHECK_ENABLED |
AC_WEBHOOK_SECURITY_CHECK_ENABLED |
Toggle for verifying inbound Git webhook signatures (disabled only when literally false) |
true |
— |
ASPNETCORE_ENABLE_SERVER_DIAGNOSTIC_COMPONENT |
AC_SERVER_DIAGNOSTIC_COMPONENT_ENABLED |
Toggle enabling the server-diagnostic component in callback handling | true |
— |
ASPNETCORE_DELETE_INCONSISTENT_RESOURCE |
AC_DELETE_INCONSISTENT_RESOURCE_ENABLED |
Toggle enabling the DeleteInconsistentResourceJob background cleanup |
true |
— |
ASPNETCORE_DELETE_OLD_ARTIFACTS_ALLOW_DEBUG_VALUES |
AC_DELETE_OLD_ARTIFACTS_DEBUG_VALUES_ENABLED |
Toggle allowing debug values in the old-artifact deletion license flow | false |
— |
ASPNETCORE_CLOSING_METRIC_DATA_SENDING |
AC_CLOSING_METRIC_DATA_SENDING_ENABLED |
When true, suppresses agent-scaling metric emission in QueueTimeoutJob |
false |
— |
ASPNETCORE_METRIC_DATA_SENDING_ENVIRONMENT |
AC_METRIC_DATA_SENDING_ENVIRONMENT |
Own environment label tagged onto emitted auto-scale metrics | prod-appcircle |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_RIJNDAEL_KEY / ASPNETCORE_RIJNDAEL_IV |
— (agent-payload key is derived from the queue-item id, not these) |
ASPNETCORE_IDENTITY_SERVER_URL |
— (never read; only SIGNING_IDENTITY_SERVER_URL is used) |
ASPNETCORE_MOCK |
— (mock routing is chosen per-request) |
PrivateApiUrl |
— (not read in runtime code) |
ASPNETCORE_MINIO_ENDPOINT / _ACCESS_KEY / _SECRET_KEY / _REGION |
AC_S3_* (only in commented-out code) |
License Server¶
Repository: ac-server-license. Component: LICENSE_API.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_PORT |
AC_PORT |
Kestrel listen port; required at boot (throws if unset) | 8024 |
— |
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
.NET host environment; also selects NLog.production.config vs NLog.config |
production |
— |
ENABLE_ERROR_HANDLING |
AC_ERROR_HANDLING_ENABLED |
Toggle for the shared EnableErrorHandler global error-handler middleware |
false |
— |
SupportedCultures |
AC_SUPPORTED_CULTURES |
Comma-separated localization cultures for the shared UseSupportedCulture middleware |
en,tr |
— |
CUSTOMCONNSTR_LICENSE_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
This service's own MongoDB connection string for the licenseStore database |
${secret:license-server/db_connection_string} |
${secret:license-server/db_connection_string} |
ASPNETCORE_REDIS_ENDPOINT |
AC_REDIS_ADDRESS |
Host:port of the Redis distributed cache (no scheme) | redis.appcircle.svc.cluster.local:6379 |
${context:license_redis_address} |
ASPNETCORE_REDIS_PREFIX |
AC_REDIS_PREFIX |
This service's own Redis key prefix (defaults to LicenseServer) |
LicenseServer |
— |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers for the event controller and Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Base URL of the Keycloak server (realm appcircle) |
http://keycloak:9302 |
${context:keycloak_internal_url} |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id | license-server |
"license-server" (literal, not context) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:license-server/keycloak_client_secret} |
${secret:license-server/keycloak_client_secret} (generatable) |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Public OpenID issuer URL of Keycloak (ExternalOpenIdUri) |
https://auth.appcircle.io |
${context:auth_external_url} |
RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Internal base URL of the Resource server (client + HTTP health check) | http://resource:8012 |
${context:resource_internal_url} |
ASPNETCORE_STORE_PROFILE_SERVICE_URL |
AC_STORE_PROFILE_INTERNAL_URL |
Internal base URL for the enterprise store-profile service | http://store-profile:8105 |
${context:store_profile_internal_url} |
WebUrl |
AC_WEB_EXTERNAL_URL |
Public web dashboard URL used to build the redirect link in required-action emails | https://my.appcircle.io |
${context:tester_external_url} |
ASPNETCORE_PAYMENT_PRODUCTS |
AC_STRIPE_PRODUCTS |
Comma-separated Stripe product ids passed into StripeOptions |
prod_ABC,prod_DEF |
— |
ASPNETCORE_PAYMENT_PUBLISHABLE_KEY |
AC_STRIPE_PUBLISHABLE_KEY |
Stripe publishable (public) API key | pk_test_... |
— |
ASPNETCORE_PAYMENT_SECRET_KEY |
AC_STRIPE_SECRET_KEY 🔒 |
Stripe secret API key (assigned to StripeConfiguration.ApiKey) |
${secret:license-server/stripe_secret_key} |
${secret:license-server/stripe_secret_key} (externally issued by Stripe, not generatable) |
ASPNETCORE_PAYMENT_WEBHOOK_KEY |
AC_STRIPE_WEBHOOK_SECRET 🔒 |
Stripe webhook signing secret used to validate incoming payment webhooks | ${secret:license-server/stripe_webhook_secret} |
${secret:license-server/stripe_webhook_secret} (externally issued by Stripe, not generatable) |
ASPNETCORE_DISABLE_PAYMENT_SIGNATURE |
AC_STRIPE_SIGNATURE_ENABLED |
Whether Stripe webhook signature verification is enforced (inverted from the negative DISABLE flag) |
true |
— |
ASPNETCORE_GITHUB_MARKETPLACE_HOOK_SECRET |
AC_GITHUB_MARKETPLACE_HOOK_SECRET 🔒 |
Shared secret used to verify GitHub Marketplace webhook signatures | ${secret:license-server/github_marketplace_hook_secret} |
${secret:license-server/github_marketplace_hook_secret} (externally issued by GitHub, not generatable) |
ASPNETCORE_DELETE_USER_HOURS |
AC_DELETE_USER_HOURS |
Age threshold in hours after which pending users are deleted (default 24) | 24 |
— |
ASPNETCORE_SEND_EXPIRING_INFO_EMAILS |
AC_EXPIRING_INFO_EMAILS_ENABLED |
Toggle enabling license-expiration informing emails | true |
— |
ASPNETCORE_BLOCK_MULTI_EMAILS_PER_ORGANIZATION |
AC_BLOCK_MULTI_EMAILS_PER_ORGANIZATION_ENABLED |
When true, blocks sending multiple informing emails per organization | false |
— |
ASPNETCORE_SEND_DOWNGRADE_EMAILS |
AC_DOWNGRADE_EMAILS_ENABLED |
Toggle enabling downgrade notification emails in StripeService |
false |
— |
ASPNETCORE_DELETE_TRASH_USERS_PASSIVE_IN_DAYS |
AC_DELETE_TRASH_USERS_PASSIVE_IN_DAYS |
Passive-days threshold when purging trash users (default 90) | 90 |
— |
ASPNETCORE_DELETE_OLD_ARTIFACTS |
AC_DELETE_OLD_ARTIFACTS_ENABLED |
Toggle enabling the old-artifact cleaner | false |
— |
ASPNETCORE_DELETE_OLD_ARTIFACTS_MODE |
AC_DELETE_OLD_ARTIFACTS_MODE |
Retention mode for the artifact cleaner | 0 |
— |
ASPNETCORE_DELETE_OLD_STARTER_ARTIFACTS_HOURS |
AC_DELETE_OLD_STARTER_ARTIFACTS_HOURS |
Retention age in hours for starter-plan artifacts before deletion | 720 |
— |
ASPNETCORE_DELETE_OLD_ARTIFACTS_ITEM_PER_EVENT |
AC_DELETE_OLD_ARTIFACTS_ITEM_PER_EVENT |
Batch size of artifacts per fired delete event | 25 |
— |
ASPNETCORE_DELETE_OLD_ARTIFACTS_WAIT_SECONDS_AFTER_FIRE_EVENT |
AC_DELETE_OLD_ARTIFACTS_WAIT_SECONDS_AFTER_FIRE_EVENT |
Seconds the cleaner waits after firing each delete event | 60 |
— |
ASPNETCORE_DELETE_OLD_ARTIFACTS_DATA_RETRIVE_PAGE_SIZE |
AC_DELETE_OLD_ARTIFACTS_PAGE_SIZE |
Mongo page size when retrieving artifacts to delete (source key has a RETRIVE typo) |
100 |
— |
ASPNETCORE_DELETE_OLD_ARTIFACTS_SERVICE_LOCK_HOURS |
AC_DELETE_OLD_ARTIFACTS_SERVICE_LOCK_HOURS |
Distributed lock duration in hours for the artifact cleaner run | 70 |
— |
ASPNETCORE_DELETE_ARTIFACT_ORGANIZATION_LIMIT |
AC_DELETE_ARTIFACT_ORGANIZATION_LIMIT |
Optional organization allowlist limiting artifact deletion and expiration emails | org-id-1,org-id-2 |
— |
ASPNETCORE_CLEAN_ORPHANED_RESOURCES_ENABLED |
AC_CLEAN_ORPHANED_RESOURCES_ENABLED |
Toggle enabling the orphaned-resource cleaner | true |
— |
ASPNETCORE_CLEAN_ORPHANED_RESOURCES_MODE |
AC_CLEAN_ORPHANED_RESOURCES_MODE |
Run mode for the orphaned-resource cleaner (Log vs delete) |
Log |
— |
ASPNETCORE_CLEAN_ORPHANED_RESOURCES_ORG_LIMIT |
AC_CLEAN_ORPHANED_RESOURCES_ORG_LIMIT |
Optional organization allowlist restricting orphaned-resource cleanup | org-id-1 |
— |
ASPNETCORE_CLEAN_ORPHANED_RESOURCES_WAIT_SECONDS |
AC_CLEAN_ORPHANED_RESOURCES_WAIT_SECONDS |
Seconds to wait between orphaned-resource cleanup events (default 5) | 5 |
— |
ASPNETCORE_CLEAN_ORPHANED_RESOURCES_PAGE_SIZE |
AC_CLEAN_ORPHANED_RESOURCES_PAGE_SIZE |
Page size for scanning resources during orphan cleanup (default 100) | 100 |
— |
ASPNETCORE_CLEAN_ORPHANED_RESOURCES_LOCK_HOURS |
AC_CLEAN_ORPHANED_RESOURCES_LOCK_HOURS |
Distributed lock duration in hours for the orphaned-resource cleaner | 69 |
— |
ASPNETCORE_CLEAN_ORPHANED_RESOURCES_ENTERPRISE_BUFFER_DAYS |
AC_CLEAN_ORPHANED_RESOURCES_ENTERPRISE_BUFFER_DAYS |
Grace-period days before enterprise-plan orphaned resources are cleaned | 0 |
— |
ASPNETCORE_CLEAN_ORPHANED_RESOURCES_STARTER_BUFFER_DAYS |
AC_CLEAN_ORPHANED_RESOURCES_STARTER_BUFFER_DAYS |
Grace-period days before starter-plan orphaned resources are cleaned | 0 |
— |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum NLog level | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Basic health endpoint path used by the NLog request filter | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Deep health endpoint path used by the NLog request filter | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic health requests are logged (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep health requests are logged (inverted from the negative IGNORE form) |
false |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ConnectionStrings:DistributionServerDbConnection / ElasticSearchConnection |
— (never read) |
ConnectionStrings:Redis_Connection |
AC_REDIS_ADDRESS (Redis comes from ASPNETCORE_REDIS_ENDPOINT) |
ASPNETCORE_DELETE_TRASH_USERS |
— (deprecated; read is commented out) |
ASPNETCORE_MINIO_ENDPOINT / _ACCESS_KEY / _SECRET_KEY / _REGION / ASPNETCORE_BUCKET_PREFIX |
AC_S3_* (MinIO client block commented out) |
Notification Server¶
Repository: ac-server-notification.
Operational config comes entirely from environment variables (appsettings.json holds only AllowedHosts/SupportedCultures). The host calls AddEnvironmentVariables("ASPNETCORE_") (prefix stripped); the Mongo DSN arrives via the CUSTOMCONNSTR_ prefix.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_PORT |
AC_PORT |
Kestrel listen port; also surfaced to the UI-server settings | 8019 |
— |
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Hosting environment name; selects the NLog config file | Production |
— |
CUSTOMCONNSTR_NOTIFICATION_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
This service's own MongoDB connection string | ${secret:notification-server/db_connection_string} |
${secret:notification-server/db_connection_string} |
ASPNETCORE_IS_SELF_HOSTED |
AC_IS_SELF_HOSTED |
Deployment-wide flag toggling scoped vs singleton mail/email/Vault wiring | true |
— |
ASPNETCORE_MAIL_PROVIDER |
AC_MAIL_PROVIDER |
Selects the mail sender implementation | SMTP | SendGrid | MailKitSMTP |
— |
ASPNETCORE_SMS_PROVIDER |
AC_SMS_PROVIDER |
Selects the SMS sender implementation | WebhookSmsSender |
— |
ASPNETCORE_WEBHOOK_SMS_URL |
AC_WEBHOOK_SMS_URL |
Base URL of the external webhook the SMS sender POSTs to | https://example.pipedream.net |
not yet resolved — arbitrary third-party webhook endpoint, no confirmed context mapping |
ASPNETCORE_SMTP_HOST |
AC_SMTP_HOST |
SMTP server hostname of the mail dependency | smtp.sendgrid.net |
— |
ASPNETCORE_SMTP_PORT |
AC_SMTP_PORT |
SMTP server port (defaults to 587 if unparseable) | 587 |
— |
ASPNETCORE_SMTP_USERNAME |
AC_SMTP_USERNAME |
Username to authenticate to the SMTP server | apikey |
— |
ASPNETCORE_SMTP_PASSWORD |
AC_SMTP_PASSWORD 🔒 |
Password/API key to authenticate to the SMTP server | ${secret:notification-server/smtp_password} |
${secret:notification-server/smtp_password} (externally issued, not generatable) |
ASPNETCORE_SMTP_FROM |
AC_SMTP_FROM |
Default from-address for outgoing mail | noreply@appcircle.io |
— |
ASPNETCORE_SMTP_FROM_NAME |
AC_SMTP_FROM_NAME |
Sender display name used when building the from header | Appcircle Inc. |
— |
ASPNETCORE_SMTP_FROM_DISPLAY_NAME |
AC_SMTP_FROM_DISPLAY_NAME |
Alternate sender display name (takes precedence over SMTP_FROM_NAME) |
Appcircle Inc. |
— |
ASPNETCORE_SMTP_DOMAIN |
AC_SMTP_DOMAIN |
SMTP HELO/EHLO domain | appcircle.io |
— |
ASPNETCORE_SMTP_USE_SSL |
AC_SMTP_SSL_ENABLED |
Whether the SMTP connection uses SSL | true |
— |
ASPNETCORE_SMTP_START_TLS |
AC_SMTP_START_TLS_ENABLED |
Whether STARTTLS is used on the SMTP connection | false |
— |
ASPNETCORE_SMTP_AUTH |
AC_SMTP_AUTH_ENABLED |
Whether SMTP authentication is performed | true |
— |
ASPNETCORE_SMTP_VALIDATE_SERVER_CERT |
AC_SMTP_SERVER_CERT_VALIDATION_ENABLED |
Whether the SMTP server certificate is validated | false |
— |
ASPNETCORE_SENDGRID_APIKEY |
AC_SENDGRID_API_KEY 🔒 |
API key for the SendGrid mail provider | ${secret:notification-server/sendgrid_api_key} |
${secret:notification-server/sendgrid_api_key} (externally issued, not generatable) |
ASPNETCORE_SENDGRID_HEALTH_CHECK_KEYWORD |
AC_SENDGRID_HEALTH_CHECK_KEYWORD |
Keyword expected on SendGrid's status page for the health check | All Systems Operational |
— |
ASPNETCORE_SUPPORT_EMAIL |
AC_SUPPORT_EMAIL |
Fallback support recipient address for certain notifications | support@appcircle.io |
— |
ASPNETCORE_UNSUB_RIJNDAEL_KEY |
AC_UNSUBSCRIBE_ENCRYPTION_KEY 🔒 |
Base64 AES-GCM key used to encrypt the unsubscribe-link payload in emails | ${secret:notification-server/unsubscribe_encryption_key} |
${secret:notification-server/unsubscribe_encryption_key} (generatable) |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers for the message broker and Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Base URL of the Keycloak server this service authenticates against | http://keycloak:9302 |
${context:keycloak_internal_url} |
ASPNETCORE_KEYCLOAK_REALM |
AC_KEYCLOAK_REALM |
Keycloak realm name (defaults to appcircle) |
appcircle |
"appcircle" (literal, fixed realm name) |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id | notification-server |
"notification-server" (literal) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:notification-server/keycloak_client_secret} |
${secret:notification-server/keycloak_client_secret} (generatable) |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Externally reachable OIDC/Keycloak issuer URL | https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_VAULT_API |
AC_VAULT_URL |
Base URL (with path) of the Vault instance used for SMTP-config storage/health | http://vault:8200/v1/local/ |
eliminated (legacy direct Vault) |
ASPNETCORE_VAULT_TOKEN |
AC_VAULT_TOKEN 🔒 |
Vault access token sent as X-Vault-Token |
${secret:notification-server/vault-token} |
eliminated (shared static token) |
RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Base URL of the Resource server dependency (client + HTTP health check) | http://resource:8012 |
${context:resource_internal_url} |
PrivateApiUrl |
AC_API_INTERNAL_URL |
Base URL of the internal (private) API gateway, injected into notification templates | https://api.appcircle.io |
${context:api_external_url} |
WebUrl |
AC_WEB_URL |
Base URL of the Appcircle web app, used to build links in notifications | https://my.appcircle.io |
${context:tester_external_url} |
TesterWebUrl |
AC_TESTER_WEB_URL |
Base URL of the Appcircle tester web app, used in notification links | https://my.appcircle.io |
${context:tester_external_url} |
SmfUrl |
AC_SMF_URL |
Base URL of the short-URL (SMF) service used to shorten notification links | https://smf.to |
not yet resolved — external third-party dependency, no confirmed context mapping |
ASPNETCORE_OAUTH_CALLBACK_URL |
AC_OAUTH_CALLBACK_URL |
This service's own OAuth callback URL for app-integration authorization | https://api.appcircle.io/notification/v1/app/authorized |
"${context:api_external_url}/notification/v1/app/authorized" (composed) |
ASPNETCORE_CALLBACK_SERVER_URL |
AC_CALLBACK_SERVER_URL |
Base URL of the UI/hook (web-event) callback server | http://hook:8080 |
${context:webhook_internal_url} |
ASPNETCORE_CALLBACK_SERVER_PATH |
AC_CALLBACK_SERVER_PATH |
URL path appended when calling the web-event callback server | /notifications |
"/notifications" (literal, fixed path) |
ASPNETCORE_ENABLED_MULTI_UI_SERVER |
AC_MULTI_UI_SERVER_ENABLED |
Whether events are broadcast to multiple UI-server instances | true |
— |
ASPNETCORE_APPSETTINGS__<n>__* |
AC_APPSETTINGS__<n>__* 🔒 |
Indexed array of third-party integration OAuth apps (Slack/Froged/Jira) bound via Configuration.Bind; each entry has NAME, CLIENTID, CLIENTSECRET, SCOPE, AUTHORIZEURL, TOKENURL, APIURL, DISPLAY. CLIENTSECRET leaves are secrets |
AC_APPSETTINGS__0__NAME=Slack |
not yet resolved — same structured-config gap as Build Server's GITSETTINGS__* |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum log level for this service | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Path for the basic health endpoint | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Path for the deep health endpoint | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic-health requests are logged (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep-health requests are logged (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_RIJNDAEL_KEY |
AC_ENCRYPTION_KEY 🔒 |
AES-GCM key backing the shared encryption helper used to encrypt OAuth state in the app-authorization flow |
${secret:notification-server/encryption_key} |
${secret:notification-server/encryption_key} (generatable) |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_RIJNDAEL_IV / ASPNETCORE_UNSUB_RIJNDAEL_IV |
— (AES-GCM uses a random nonce; no static IV) |
ASPNETCORE_FROGED_API_URL |
AC_APPSETTINGS__<n>__APIURL (Froged config comes from the APPSETTINGS array) |
ASPNETCORE_FROGED_API_KEY |
AC_APPSETTINGS__<n>__CLIENTSECRET (Froged config comes from the APPSETTINGS array) |
ASPNETCORE_SMS_2FA_VERIFY_TEXT |
— (not read by the configured SMS sender) |
Signing Identity Server¶
Repository: ac-server-signingidentity. Component: SIGNING_IDENTITY_API.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_PORT |
AC_PORT |
Kestrel listen port this service binds; required (startup throws if unset) | 8022 |
— |
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment; selects NLog.production.config vs NLog.config and the service-info banner |
Production |
— |
CUSTOMCONNSTR_SIGNINGIDENTITY_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
This service's own MongoDB connection string for the signingIdentityStore database |
${secret:signing-identity-server/db_connection_string} |
${secret:signing-identity-server/db_connection_string} |
ASPNETCORE_REDIS_ENDPOINT |
AC_REDIS_ADDRESS |
Host:port of the Redis instance used for the distributed cache (no scheme) | redis.appcircle.svc.cluster.local:6379 |
${context:signing_identity_redis_address} |
ASPNETCORE_REDIS_PREFIX |
AC_REDIS_PREFIX |
This service's own Redis key/instance-name prefix (defaults to SigningIdentityServer) |
SigningIdentityServer |
— |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers for the incoming/outgoing message broker | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_KEYTOOL |
AC_KEYTOOL_PATH |
Filesystem path to the Java keytool executable the keystore controllers shell out to for Android keystore operations |
/usr/lib/jvm/java-21-openjdk-amd64/bin/keytool |
— |
ASPNETCORE_VAULT_TOKEN |
AC_VAULT_TOKEN 🔒 |
Token used to authenticate to HashiCorp Vault (Vault health check and SafeStore secret storage) |
${secret:signing-identity-server/vault-token} |
eliminated (shared static token) |
ASPNETCORE_VAULT_API |
AC_VAULT_URL |
Full base URL of the Vault API this service reads/writes signing secrets against | http://vault:8200/v1/local/ |
eliminated (legacy direct Vault) |
ASPNETCORE_VAULT_SERVICE_PREFIX |
AC_VAULT_SERVICE_PREFIX |
Per-service path segment under which this service's P12/keystore passwords are namespaced in Vault | signing |
becomes a sourcing-policy declaration (mount local, prefix signing) |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Internal base URL of the Keycloak server used for token validation (appcircle realm) |
http://keycloak:9302 |
${context:keycloak_internal_url} |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id | signing-identity-server |
"signing-identity-server" (literal) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:signing-identity-server/keycloak_client_secret} |
${secret:signing-identity-server/keycloak_client_secret} (generatable) |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
External (public) OIDC issuer URL set as ExternalOpenIdUri |
https://auth.appcircle.io |
${context:auth_external_url} |
RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Internal base URL of the Resource service, wired via AddResourceClient |
http://resource:8012 |
${context:resource_internal_url} |
WebUrl |
AC_WEB_EXTERNAL_URL |
External URL of the Appcircle web frontend, used when building device-registration email links | https://my.appcircle.io |
${context:tester_external_url} |
TesterWebUrl |
AC_TESTER_WEB_EXTERNAL_URL |
External URL of the tester web portal, used for device-registration links | https://my.appcircle.io |
${context:tester_external_url} |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum NLog log level for this service | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Path of the basic (liveness) health endpoint | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Path of the deep (dependency) health endpoint | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic health-endpoint request logs are emitted (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep health-endpoint request logs are emitted (inverted from the negative IGNORE form) |
false |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_UNSUB_RIJNDAEL_KEY / ASPNETCORE_UNSUB_RIJNDAEL_IV |
— (leftover unsubscribe-token AES key/IV; not read anywhere) |
Task Server¶
Repository: ac-server-task.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Runtime environment; selects NLog.production.config vs NLog.config and drives env.IsDevelopment() |
Production |
— |
ASPNETCORE_PORT |
AC_PORT |
The service's own Kestrel listen port; throws if unset | 8028 |
— |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers used as the consumer/producer BootstrapServers and the Kafka health check |
kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_REDIS_ENDPOINT |
AC_REDIS_ADDRESS |
Redis host:port for the StackExchange distributed cache (no scheme) | redis.appcircle.svc.cluster.local:6379 |
${context:task_redis_address} |
ASPNETCORE_REDIS_PREFIX |
AC_REDIS_PREFIX |
This service's own Redis cache key prefix (InstanceName, defaults to TaskServer) |
TaskServer |
— |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum log level for the NLog logger rule (defaults to Info) |
Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Basic health endpoint path, consumed by NLog to optionally suppress health-check logs | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Deep health endpoint path, consumed by NLog to optionally suppress deep-health logs | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic-health request logs are written (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep-health request logs are written (inverted from the negative IGNORE form) |
false |
— |
Agent Cache Service¶
Repository: ac-service-agent-cache.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_PORT |
AC_PORT |
Kestrel listen port this service binds to; startup throws if unset | 8068 |
— |
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment; selects the NLog config file and the service-info banner | Production |
— |
CUSTOMCONNSTR_AGENTCACHE_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
MongoDB connection string for this service's own agentCacheStore database |
${secret:agent-cache-service/db_connection_string} |
${secret:agent-cache-service/db_connection_string} |
ASPNETCORE_REDIS_ENDPOINT |
AC_REDIS_ADDRESS |
Redis host:port used as the StackExchange distributed cache backend | redis.appcircle.svc.cluster.local:6379 |
${context:agentcache_redis_address} |
ASPNETCORE_REDIS_PREFIX |
AC_REDIS_PREFIX |
This service's own key namespace (defaults to AgentCacheService) |
AgentCacheService |
— |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers for the message broker and the Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_BUCKET_NAME |
AC_S3_BUCKET_NAME |
Object-storage bucket name holding the agent cache blobs; used when presigning upload/download URLs and in the signed-URL health check | appcircle-agent-cache |
— (own value; presigning is delegated to Resource Server, see Removed table below) |
ASPNETCORE_CACHE_DURATION_DAYS |
AC_CACHE_DURATION_DAYS |
Retention window in days; the expired-cache cleaner deletes entries older than this | 30 |
— |
ASPNETCORE_LICENSE_CACHE_LIMIT |
AC_LICENSE_CACHE_LIMIT |
Per-license-tier cache size caps (GB), parsed into a tier=limit map to enforce quotas |
starter=5,professional=20,enterprise=30 |
— |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Base URL of the Keycloak server this service authenticates against (realm appcircle) |
http://keycloak:9302 |
${context:keycloak_internal_url} |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id | agent-cache-service |
"agent-cache-service" (literal) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:agent-cache-service/keycloak_client_secret} |
${secret:agent-cache-service/keycloak_client_secret} (generatable) |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Externally reachable OpenID/Keycloak issuer URL (ExternalOpenIdUri) |
https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Internal base URL of the Resource service; passed to AddResourceClient for presign/metadata calls |
http://resource:8012 |
${context:resource_internal_url} |
ASPNETCORE_RESOURCE_URL |
AC_RESOURCE_API_EXTERNAL_URL |
External base URL of the Resource service, read in SignUrlHelper when generating signed download/upload URLs |
https://resource.appcircle.io |
not yet resolved — no confirmed external subdomain, same gap as Resource Server's own row |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum NLog log level for this service | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Path for the basic liveness health endpoint | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Path for the deep (dependency-checking) health endpoint | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic health-path request logs are emitted (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep health-path request logs are emitted (inverted from the negative IGNORE form) |
false |
— |
SupportedCultures |
AC_SUPPORTED_CULTURES |
Comma-separated locales this service localizes responses into | en,tr |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_BUILD_SERVER_URL |
— (loaded into settings but the only consumer is commented out) |
ASPNETCORE_GCLOUD_SERVICE_ACC_PATH |
— (GCS signing delegated to the Resource client; consumer commented out) |
ASPNETCORE_CACHE_UPLOAD_URL_SIGNER_TYPE |
— (signer chosen by the Resource client; selection switch commented out) |
ASPNETCORE_MINIO_ENDPOINT / _ACCESS_KEY / _SECRET_KEY / _REGION |
AC_S3_* (commented out; not read) |
Webhook Service¶
Repository: ac-service-webhook.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment; picks the NLog config file and drives the framework host | production |
— |
ASPNETCORE_PORT |
AC_PORT |
This service's own Kestrel listen port; throws at startup if unset | 8076 |
— |
CUSTOMCONNSTR_WEBHOOK_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
This service's own MongoDB connection string for the webhookStore database (and Mongo deep-health) |
${secret:webhook-service/db_connection_string} |
${secret:webhook-service/db_connection_string} |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers for the message-broker handlers and the Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Internal base URL of the Resource service, passed to AddResourceClient |
http://resource:8012 |
${context:resource_internal_url} |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Internal base URL of the Keycloak server used to build the Keycloak client | http://keycloak:9302 |
${context:keycloak_internal_url} |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Externally reachable Keycloak/OIDC issuer URL set as ExternalOpenIdUri |
https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_KEYCLOAK_REALM |
AC_KEYCLOAK_REALM |
Keycloak realm name for the Keycloak client (defaults to appcircle) |
appcircle |
"appcircle" (literal, fixed realm name) |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id | webhook-service |
"webhook-service" (literal) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:webhook-service/keycloak_client_secret} |
${secret:webhook-service/keycloak_client_secret} (generatable) |
WebUrl |
AC_WEB_EXTERNAL_URL |
Public Appcircle web-app base URL used to build user-facing links inside webhook notification payloads | https://my.appcircle.io |
${context:tester_external_url} |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum log level, consumed by the shared logging middleware | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Path of this service's basic health endpoint | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Path of this service's deep (dependency) health endpoint | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic health-endpoint request logs are emitted (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep health-endpoint request logs are emitted (inverted from the negative IGNORE form) |
false |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_REDIS_ENDPOINT |
— (no Redis client referenced; dead) |
AuthUrl / PrivateApiUrl |
— (only read by the commented-out UserService) |
Resign Service¶
Repository: ac-service-resign.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment; picks the NLog config and drives the ASP.NET host | Production |
— |
ASPNETCORE_PORT |
AC_PORT |
The port Kestrel listens on; throws if unset | 8031 |
— |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers used by the message-broker services and the Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
CUSTOMCONNSTR_RESIGN_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
This service's own MongoDB connection string for the resignStore database |
${secret:resign-service/db_connection_string} |
${secret:resign-service/db_connection_string} |
ASPNETCORE_BUILD_SERVER_URL |
AC_BUILD_API_INTERNAL_URL |
Base URL of the Build service, used for the ResignReportClient and a build-server health check |
http://build:8023 |
${context:build_internal_url} |
ASPNETCORE_STORE_SUBMIT_SERVER_URL |
AC_STORE_SUBMIT_API_INTERNAL_URL |
Base URL of the Store Submit service, used for the StoreSubmitClient |
http://storesubmit:8027 |
${context:store_submit_internal_url} |
RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Base URL of the Resource service, passed to AddResourceClient |
http://resource:8012 |
${context:resource_internal_url} |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Keycloak server base URL for the Keycloak client (appcircle realm) |
http://keycloak:8080 |
${context:keycloak_internal_url} |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id | resign-service |
"resign-service" (literal, not context) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:resign-service/keycloak_client_secret} |
${secret:resign-service/keycloak_client_secret} (generatable) |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum NLog logging level | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Path for the basic health endpoint | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Path for the deep health endpoint | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic health-check requests are logged (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep health-check requests are logged (inverted from the negative IGNORE form) |
false |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_OIDC_EXTERNAL_URL |
— (not referenced; auth goes through the Keycloak client vars) |
ASPNETCORE_MINIO_ENDPOINT / _ACCESS_KEY / _SECRET_KEY / _REGION / ASPNETCORE_BUCKET_PREFIX |
AC_S3_* (only in commented-out code) |
ASPNETCORE_FASTLANE_VERSION |
— (read commented out; fastlane version hardcoded to latest) |
Publish Service¶
Repository: ac-service-publish.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_PORT |
AC_PORT |
The TCP port Kestrel binds to; startup throws if unset | 8032 |
— |
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Hosting environment; selects the NLog config file | Production |
— |
CUSTOMCONNSTR_PUBLISH_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
The service's own MongoDB connection string for the publishStore database |
${secret:publish-service/db_connection_string} |
${secret:publish-service/db_connection_string} |
ASPNETCORE_REDIS_ENDPOINT |
AC_REDIS_ADDRESS |
Host:port of the Redis instance backing the StackExchange distributed cache | redis.appcircle.svc.cluster.local:6379 |
${context:publish_redis_address} |
ASPNETCORE_REDIS_PREFIX |
AC_REDIS_PREFIX |
This service's own Redis key/instance-name prefix (defaults to PublishServer) |
PublishServer |
— |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap server list used by the event controller and Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
SupportedCultures |
AC_SUPPORTED_CULTURES |
Comma-separated locales enabled for JSON localization | en,tr |
— |
PrivateApiUrl |
AC_API_INTERNAL_URL |
Internal API gateway base URL embedded in ApplicationSetting for building API links |
https://api.appcircle.io |
${context:api_external_url} |
ASPNETCORE_DEFAULT_APP_ICON |
AC_DEFAULT_APP_ICON_URL |
Fallback app-icon URL used when a published app has no icon | https://cdn.appcircle.io/common/images/defaultApp.png |
— |
RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Base URL of the internal Resource service (file storage), registered via AddResourceClient |
http://resource:8012 |
${context:resource_internal_url} |
STORE_SUBMIT_SERVER_URL |
AC_STORE_SUBMIT_API_INTERNAL_URL |
Base URL of the internal Store Submit service HttpClient |
http://storesubmit:8027 |
${context:store_submit_internal_url} |
BUILD_SERVER_URL |
AC_BUILD_API_INTERNAL_URL |
Base URL of the internal Build service HttpClient |
http://build:8023 |
${context:build_internal_url} |
ASPNETCORE_DISTRIBUTE_SERVER_URL |
AC_DISTRIBUTION_INTERNAL_URL |
Base URL of the internal Distribution service HttpClient |
http://distribution:8016 |
${context:distribution_internal_url} |
ASPNETCORE_SIGNING_IDENTITY_SERVER_URL |
AC_SIGNING_IDENTITY_API_INTERNAL_URL |
Base URL of the internal Signing-Identity service HttpClient |
http://signingidentity:8022 |
${context:signing_identity_internal_url} |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Keycloak base URL used to construct the Keycloak client (realm appcircle) |
http://keycloak:8080 |
${context:keycloak_internal_url} |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id | publish-server |
"publish-server" (literal, not context) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:publish-service/keycloak_client_secret} |
${secret:publish-service/keycloak_client_secret} (generatable) |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Externally reachable Keycloak/OIDC URL set as ExternalOpenIdUri |
https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_VAULT_API |
AC_VAULT_URL |
HashiCorp Vault API base URL for VaultClient and the Vault health check |
http://vault:8200/v1/local/ |
eliminated (legacy direct Vault) |
ASPNETCORE_VAULT_TOKEN |
AC_VAULT_TOKEN 🔒 |
Vault access token sent as the X-Vault-Token header |
${secret:publish-service/vault-token} |
eliminated (shared static token) |
ASPNETCORE_APPSTORECONNECT_API_URL |
AC_APPSTORE_API_URL |
Apple App Store Connect API base URL | https://api.appstoreconnect.apple.com |
— |
ASPNETCORE_PLAYSTORE_API_URL |
AC_GOOGLEPLAY_API_URL |
Google Play (Android Publisher) API base URL | https://androidpublisher.googleapis.com/ |
— |
ASPNETCORE_INTUNE_API_URL |
AC_INTUNE_API_URL |
Microsoft Intune Graph API base URL used by IntuneService |
https://graph.microsoft.com |
— |
ASPNETCORE_INTUNE_LOGIN_URL |
AC_INTUNE_LOGIN_URL |
Microsoft Intune/Azure AD login (token) base URL used by IntuneService |
https://login.microsoftonline.com |
— |
ASPNETCORE_STORE_STATUS_UPDATE_INTERVAL_MINUTES |
AC_STORE_STATUS_UPDATE_INTERVAL_MINUTES |
Polling interval (minutes) for the App Store / Play Store status-update background services | 60 |
— |
ASPNETCORE_SUPPORTED_XCODE_LIST |
AC_SUPPORTED_XCODE_LIST |
Comma-separated list of supported Xcode versions returned by the component controller | 16.2.x,16.1.x |
— |
ASPNETCORE_FFMEG_PATH |
AC_FFMPEG_PATH |
Filesystem path to the ffmpeg binary (defaults to ffmpeg) |
/usr/bin/ffmpeg |
— |
ASPNETCORE_UPLOAD_MAX_FILE_SIZE |
AC_UPLOAD_MAX_FILE_SIZE |
Maximum allowed upload size (bytes) applied to the Resource client configuration | 524288000 |
— |
ASPNETCORE_DELETE_OLD_ARTIFACTS_ALLOW_DEBUG_VALUES |
AC_DELETE_OLD_ARTIFACTS_DEBUG_VALUES_ENABLED |
Whether the license/artifact-cleanup event handler is allowed to use debug values | false |
— |
ASPNETCORE_UNSUB_RIJNDAEL_KEY |
AC_UNSUB_RIJNDAEL_KEY 🔒 |
Rijndael/AES key used to encrypt unsubscribe tokens in publish email links | ${secret:publish-service/unsub_rijndael_key} |
${secret:publish-service/unsub_rijndael_key} (generatable) |
FORCE_STREAM_DOWNLOAD |
AC_FORCE_STREAM_DOWNLOAD_ENABLED |
When true, forces artifact streaming instead of a direct download URL |
false |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
WebUrl / ASPNETCORE_PUBLISH_EXTERNAL_SCHEME / ASPNETCORE_PUBLISH_EXTERNAL_URL |
— (never read) |
ASPNETCORE_VAULT_SERVICE_PREFIX |
— (never read; VaultClient uses only token + API URL) |
ASPNETCORE_UNSUB_RIJNDAEL_IV |
— (only in commented-out code; active crypto uses the key alone) |
ASPNETCORE_FASTLANE_VERSION |
— (read commented out; hardcoded latest) |
ASPNETCORE_BUCKET_PREFIX / MINIO_ENDPOINT / MINIO_ACCESS_KEY / MINIO_SECRET_KEY / MINIO_REGION |
AC_S3_* (commented-out MinIO block) |
ASPNETCORE_OAUTH_CALLBACK_URL |
— (only in a commented-out block) |
Schedule Service¶
Repository: ac-service-schedule.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment; selects the NLog config file and toggles Swagger | production |
— |
ASPNETCORE_PORT |
AC_PORT |
The port this service's Kestrel server listens on; throws if unset | 8036 |
— |
SCHEDULE_SERVICE_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
Full MongoDB connection string for this service's own scheduleServiceStore (jobs store) |
${secret:schedule-service/db_connection_string} |
${secret:schedule-service/db_connection_string} |
ASPNETCORE_REDIS_ENDPOINT |
AC_REDIS_ADDRESS |
Redis host:port (no scheme) used for the IConnectionMultiplexer and distributed cache |
redis.appcircle.svc.cluster.local:6379 |
${context:schedule_manager_redis_address} |
ASPNETCORE_REDIS_PREFIX |
AC_REDIS_PREFIX |
This service's own Redis cache key prefix (defaults to ScheduleService) |
ScheduleService |
— |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers used to publish outgoing events | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Base URL of the Keycloak server this service authenticates against (realm appcircle) |
http://keycloak:9302 |
${context:keycloak_internal_url} |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own OIDC client id | schedule-service |
"schedule-service" (literal, not context) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own OIDC client secret | ${secret:schedule-service/keycloak_client_secret} |
${secret:schedule-service/keycloak_client_secret} (generatable) |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Public external OpenID issuer URL of Keycloak, passed as ExternalOpenIdUri |
https://auth.appcircle.io |
${context:auth_external_url} |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum NLog level for this service's logs | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Path for this service's basic health endpoint | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Path for this service's deep (Mongo-checking) health endpoint | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic health-endpoint requests are logged (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep health-endpoint requests are logged (inverted from the negative IGNORE form) |
false |
— |
Store Submit Server¶
Repository: ac-server-storesubmit. Component: STORE_SUBMIT_API.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_PORT |
AC_PORT |
Kestrel listen port for this service; throws if unset | 8027 |
— |
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Runtime environment; selects the NLog config file | Production |
— |
CUSTOMCONNSTR_STORESUBMIT_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
MongoDB connection string for this service's own store | ${secret:store-submit-server/db_connection_string} |
${secret:store-submit-server/db_connection_string} |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers for the consumer/producer and the Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_REDIS_ENDPOINT |
AC_REDIS_ADDRESS |
Redis host:port used as the StackExchange distributed-cache configuration | redis.appcircle.svc.cluster.local:6379 |
${context:store_submit_redis_address} |
ASPNETCORE_REDIS_PREFIX |
AC_REDIS_PREFIX |
This service's own Redis cache key/instance prefix (defaults to StoreSubmitServer) |
StoreSubmitServer |
— |
RESOURCE_SERVER_URL |
AC_RESOURCE_API_INTERNAL_URL |
Base URL of the Resource service; used by AddResourceClient and an HTTP health check |
http://resource:8012 |
${context:resource_internal_url} |
ASPNETCORE_VAULT_API |
AC_VAULT_URL |
Base URL of the Vault API used to store/read store credentials; also probed by the Vault health check | http://vault:8200/v1/local/ |
eliminated (legacy direct Vault) |
ASPNETCORE_VAULT_TOKEN |
AC_VAULT_TOKEN 🔒 |
Auth token for the Vault API | ${secret:store-submit-server/vault-token} |
eliminated (shared static token) |
ASPNETCORE_VAULT_SERVICE_PREFIX |
AC_VAULT_SERVICE_PREFIX |
Per-service path prefix under which this service's secrets are scoped in Vault | store-submit |
becomes a sourcing-policy declaration (mount store, prefix store-submit) |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Base URL of the Keycloak server the shared Keycloak client authenticates against | http://keycloak:9302 |
${context:keycloak_internal_url} |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id (realm appcircle) |
store-submit-server |
"store-submit-server" (literal) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:store-submit-server/keycloak_client_secret} |
${secret:store-submit-server/keycloak_client_secret} (generatable) |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Externally reachable OIDC/Keycloak issuer URL set as ExternalOpenIdUri |
https://auth.appcircle.io |
${context:auth_external_url} |
PrivateApiUrl |
AC_API_INTERNAL_URL |
Internal API-gateway base URL used as the icon base URL when building app-icon download links | https://api.appcircle.io |
${context:api_external_url} |
ASPNETCORE_DEFAULT_APP_ICON |
AC_DEFAULT_APP_ICON_URL |
Fallback app-icon URL used when a profile has no icon | https://cdn.appcircle.io/common/images/defaultApp.png |
— |
ASPNETCORE_APPSTORECONNECT_API_URL |
AC_APPSTORECONNECT_API_URL |
Base URL of Apple's App Store Connect API used by the Apple connector | https://api.appstoreconnect.apple.com |
— |
ASPNETCORE_VALIDATE_APPLE_CREDENTIALS |
AC_APPLE_CREDENTIALS_VALIDATION_ENABLED |
When not false, validates Apple App Store credentials before saving |
true |
— |
ASPNETCORE_VALIDATE_HUAWEI_CREDENTIALS |
AC_HUAWEI_CREDENTIALS_VALIDATION_ENABLED |
When not false, validates Huawei AppGallery credentials before saving |
true |
— |
ASPNETCORE_VALIDATE_PLAYSTORE_CREDENTIALS |
AC_GOOGLEPLAY_CREDENTIALS_VALIDATION_ENABLED |
When not false, validates Google Play credentials before saving |
true |
— |
ASPNETCORE_VALIDATE_INTUNE_CREDENTIALS |
AC_INTUNE_CREDENTIALS_VALIDATION_ENABLED |
When not false, validates Microsoft Intune credentials before saving |
true |
— |
ASPNETCORE_VALIDATE_STORE_CREDENTIALS |
AC_STORE_CREDENTIALS_VALIDATION_ENABLED |
Generic switch; when not false, store-credential validation is performed before saving |
true |
— |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum NLog log level | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Basic health-check URL path | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Deep health-check URL path | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic-health request logs are written (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep-health request logs are written (inverted from the negative IGNORE form) |
false |
— |
SupportedCultures |
AC_SUPPORTED_CULTURES |
Comma-separated locales this service localizes responses for | en,tr |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_BUILD_SERVER_URL |
— (never read; would be AC_BUILD_API_INTERNAL_URL) |
FASTLANE_BUNDLE_INSTALL_PATH |
— (local-dev leftover, not read) |
ASPNETCORE_MINIO_ENDPOINT / _ACCESS_KEY / _SECRET_KEY / _REGION / ASPNETCORE_BUCKET_PREFIX |
— (MinIO client commented out; object access goes through the Resource service) |
ConnectionStrings:StoreSubmitServerDbConnection |
AC_DB_CONNECTION_STRING (code reads STORESUBMIT_DB_CONNECTION_STRING) |
ConnectionStrings:Redis_Connection |
AC_REDIS_ADDRESS (code reads ASPNETCORE_REDIS_ENDPOINT) |
ConnectionStrings:ElasticSearchConnection |
— (no ElasticSearch usage) |
Reporting Server¶
Repository: ac-server-reporting.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_PORT |
AC_PORT |
Kestrel listen port; required at boot (throws if unset) | 8025 |
— |
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
.NET host environment; selects the NLog config and dev exception page | Production |
— |
CUSTOMCONNSTR_REPORTING_DB_CONNECTION_STRING |
AC_DB_CONNECTION_STRING 🔒 |
This service's own MongoDB connection string for the reportingStore database |
${secret:reporting-server/db_connection_string} |
${secret:reporting-server/db_connection_string} |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers used by the consumer/producer factories and the Kafka health check | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_KEYCLOAK_SERVER_URL |
AC_KEYCLOAK_INTERNAL_URL |
Internal Keycloak base URL used to validate tokens / build the Keycloak client | http://keycloak:9302 |
${context:keycloak_internal_url} |
ASPNETCORE_OIDC_EXTERNAL_URL |
AC_KEYCLOAK_EXTERNAL_URL |
Externally reachable Keycloak/OIDC issuer URL (ExternalOpenIdUri) |
https://auth.appcircle.io |
${context:auth_external_url} |
AuthUrl |
AC_KEYCLOAK_EXTERNAL_URL |
External Keycloak base URL used by UserService for admin realm calls; overlaps ASPNETCORE_OIDC_EXTERNAL_URL (consolidate) |
https://auth.appcircle.io |
${context:auth_external_url} (dropped once consolidated into ASPNETCORE_OIDC_EXTERNAL_URL above) |
ASPNETCORE_KEYCLOAK_CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
This service's own Keycloak client id (also the token audience) | reporting-server |
"reporting-server" (literal, not context) |
ASPNETCORE_KEYCLOAK_SECRET_ID |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
This service's own Keycloak client secret | ${secret:reporting-server/keycloak_client_secret} |
${secret:reporting-server/keycloak_client_secret} (generatable) |
CLIENT_ID |
AC_KEYCLOAK_CLIENT_ID |
Legacy duplicate client id read by UserService for its papi-token flow (consolidate with ASPNETCORE_KEYCLOAK_CLIENT_ID) |
reporting-server |
"reporting-server" (dropped once consolidated into ASPNETCORE_KEYCLOAK_CLIENT_ID above) |
CLIENT_SECRET |
AC_KEYCLOAK_CLIENT_SECRET 🔒 |
Legacy duplicate client secret read by UserService (has a hard-coded fallback in code; consolidate) |
${secret:reporting-server/keycloak_client_secret} |
${secret:reporting-server/keycloak_client_secret} (consolidated above) |
DISTRIBUTION_SERVER_URL |
AC_DISTRIBUTION_INTERNAL_URL |
Base URL of the Distribution service, used as the DistributionServiceClient address and in MigrationV4 |
http://distribution:8016 |
${context:distribution_internal_url} |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum log level for this service | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Path of this service's basic health endpoint | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Path of this service's deep health endpoint | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic health-check requests are logged (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep health-check requests are logged (inverted from the negative IGNORE form) |
false |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_REDIS_ENDPOINT |
— (never read; service uses in-memory AddMemoryCache) |
ASPNETCORE_DEFAULT_APP_ICON |
— (never read) |
PrivateApiUrl |
— (read into UserService but the field is never used; dead) |
OTP Service¶
Repository: ac-service-otp.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Deployment environment; picks NLog.production.config vs NLog.config and toggles Swagger |
Production |
— |
ASPNETCORE_PORT |
AC_PORT |
This service's own HTTP listen port; throws if unset | 8033 |
— |
ASPNETCORE_KAFKA_SERVER_URLS |
AC_KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers for the Kafka health check and the message-broker layer publishing notification events | kafka:9092 |
${context:kafka_bootstrap_servers} |
ASPNETCORE_REDIS_ENDPOINT |
AC_REDIS_ADDRESS |
Host:port of the Redis instance backing the distributed OTP cache | redis.appcircle.svc.cluster.local:6379 |
${context:otp_redis_address} |
ASPNETCORE_REDIS_PREFIX |
AC_REDIS_PREFIX |
This service's own Redis key prefix / cache instance name (defaults to OtpService) |
OtpService |
— |
ASPNETCORE_MAX_RESEND_COUNT |
AC_MAX_RESEND_COUNT |
Maximum number of OTP resends allowed per organization+recipient before a new code is required (default 3) | 3 |
— |
ASPNETCORE_OTP_CODE_VALIDITY_IN_MINUTES |
AC_CODE_VALIDITY_IN_MINUTES |
Lifetime in minutes of a generated OTP code and its cache entry (default 60) | 300 |
— |
ASPNETCORE_LOG_MIN_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum NLog log level for this service | Info |
— |
ASPNETCORE_HEALTH_PATH |
AC_HEALTH_PATH |
Path of this service's basic health endpoint | /health |
— |
ASPNETCORE_DEEP_HEALTH_PATH |
AC_DEEP_HEALTH_PATH |
Path of this service's deep health endpoint | /health/deep |
— |
ASPNETCORE_IGNORE_HEALTH_LOGS |
AC_HEALTH_LOGS_ENABLED |
Whether basic health-probe requests are logged (inverted from the negative IGNORE form) |
false |
— |
ASPNETCORE_IGNORE_DEEP_HEALTH_LOGS |
AC_DEEP_HEALTH_LOGS_ENABLED |
Whether deep health-probe requests are logged (inverted from the negative IGNORE form) |
false |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_MAX_VALIDATE_ATTEMPT |
— (never read; the validate-attempt limit is hardcoded to 3) |
ASPNETCORE_MAX_RETRY_ATTEMPT |
— (not referenced anywhere) |
CodePush Proxy¶
Repository: ac-service-codepush-proxy.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
ASPNETCORE_ENVIRONMENT |
AC_ENVIRONMENT |
Selects the deployment environment; picks the NLog config and gates the dev exception page / Swagger via env.IsDevelopment() |
production |
— |
ASPNETCORE_PORT |
AC_PORT |
The TCP port Kestrel binds to; throws at startup if unset | 8787 |
— |
CODEPUSH_PROXY_LISTEN_URI |
AC_EXTERNAL_URL |
This proxy's own listen URI; the middleware matches the incoming request host/port against it before proxying | https://codepush.appcircle.io |
not yet resolved — no confirmed external subdomain |
ASPNETCORE_API_CONFIGURATION |
AC_CODEPUSH_UPSTREAM_URL |
Full URL of the upstream CodePush API root used by ApiClient; when set it overrides the PrivateApiUrl + path composition |
http://codepush-api/codepush |
not yet resolved — distinct upstream backend, not this proxy's own address |
PrivateApiUrl |
AC_CODEPUSH_UPSTREAM_BASE_URL |
Base URL of the upstream Appcircle CodePush (private) API; the HttpClient base address and deep health-check target |
http://codepush-api |
not yet resolved — same upstream-dependency gap as the row above |
ASPNETCORE_CODEPUSH_API_SERVER_PATH |
AC_CODEPUSH_UPSTREAM_PATH |
Path segment appended to PrivateApiUrl to build the upstream API root and health-check URL |
/codepush |
"/codepush" (literal, fixed path) |
CODEPUSH_PROXY_FORWARD_URI |
AC_CODEPUSH_UPSTREAM_FORWARD_URL |
Full URL the middleware forwards allowed CodePush requests to; service refuses to start if it is not a valid absolute URI | http://codepush-api |
not yet resolved — same upstream-dependency gap |
CODEPUSH_PROXY_MODULE_PREFIX |
AC_CODEPUSH_UPSTREAM_MODULE_PREFIX |
Path prefix prepended to the forwarded request path when building the upstream URL | codepush |
"codepush" (literal, fixed prefix) |
ASPNETCORE_BINARY_FILECACHE_ENABLED |
AC_BINARY_FILE_CACHE_ENABLED |
Enables on-disk caching of downloaded JS bundles (gates the local serve/save path and the cleaner service) | true |
— |
ASPNETCORE_BINARY_FILECACHE_PERIOD_IN_MINUTES |
AC_BINARY_FILE_CACHE_CLEANUP_PERIOD_MINUTES |
Interval in minutes between runs of the cached-binary cleaner (default 60) | 60 |
— |
ASPNETCORE_BINARY_FILECACHE_MAX_SIZE_MB |
AC_BINARY_FILE_CACHE_MAX_SIZE_MB |
Maximum total size of the bundle cache in MB; the cleaner frees ~30% once exceeded (default 1000) | 1000 |
— |
ASPNETCORE_BINARY_FILECACHE_MAX_SIZE_DURATION_HOURS |
AC_BINARY_FILE_CACHE_MAX_AGE_HOURS |
Maximum age in hours a cached bundle is kept before deletion (default 120) | 120 |
— |
CACHE_TIMEOUT_MINUTES |
AC_CACHE_TIMEOUT_MINUTES |
Read into ApiConfiguration.CacheTimeoutMinutes (default 3) but currently not consumed downstream; effectively a no-op |
3 |
— |
FILECACHE_ENABLED |
AC_FILE_CACHE_ENABLED |
Read into ApiConfiguration.FileCacheEnabled (default true) but not consumed; superseded by ASPNETCORE_BINARY_FILECACHE_ENABLED |
true |
— |
ASPNETCORE_ENABLE_TOKEN_LOGING |
AC_TOKEN_LOGGING_ENABLED |
Read into ApiConfiguration.LogTokens (default false) but not consumed downstream; effectively a no-op |
false |
— |
Removed (unused or deprecated)¶
| Current variable | Replaced by |
|---|---|
ASPNETCORE_DEFAULT_SCHEME |
— (set in launchSettings but never read) |
ASPNETCORE_IS_SELF_HOSTED |
— (not read here; deployment-wide AC_IS_SELF_HOSTED covers it elsewhere) |
MCP Service¶
Repository: ac-service-mcp.
| Current variable | Target name | Description | Example | Context/Secret Expression |
|---|---|---|---|---|
APPCIRCLE_ACCESS_TOKEN |
AC_API_GATEWAY_ACCESS_TOKEN 🔒 |
Appcircle API access token the server uses to authenticate its outbound calls to the Appcircle API; read only on the stdio transport path (HTTP clients each pass their own bearer token) | ${secret:mcp-service/api_gateway_access_token} |
${secret:mcp-service/api_gateway_access_token} (an operator-issued API access token, not generatable) |
APPCIRCLE_API_URL |
AC_API_GATEWAY_BASE_URL |
Full base URL of the Appcircle API the tools call, overridable for self-hosted (defaults to the public API) | https://api.appcircle.io |
${context:api_external_url} |
APPCIRCLE_MCP_ALLOWED_HOST |
AC_EXTERNAL_HOST |
This server's own public hostname (no scheme or port); on the streamable-http transport it enables DNS-rebinding protection so only this Host header is accepted |
mcp.appcircle.io |
not yet resolved — own bare hostname, not one of the 5 derivable subdomains |
APPCIRCLE_MCP_PORT |
AC_PORT |
This server's own HTTP bind port for the streamable-http transport (used when --port is not passed; defaults to 8000) |
8080 |
— |
APPCIRCLE_EXCLUDED_TOOLSETS |
AC_EXCLUDED_TOOLSETS |
Comma-separated list of this server's own toolsets to skip registering (merged with the --exclude-toolsets CLI flags) |
build_module,report |
— |
LOG_LEVEL |
AC_LOG_MIN_LEVEL |
Minimum log level for this server's logger (defaults to INFO) |
INFO |
— |