Configure · Complete reference
Manager environment
A sanitized, searchable public copy of every Manager template key, with actual defaults, sensitivity, consumer, failure behavior, and the change required to apply it.
Configuration file model
A local .env is for foreground or development use; keep it out of Git and protect it with mode 0600. systemd uses /etc/pauiops/pauiops.env, normally root-owned, mode 0640, and readable only by root and the service group.
Exported process variables win over file-loaded values. Re-running the installer preserves unrelated settings and secrets while synchronizing only installer-managed keys and tightening permissions. Most runtime changes need a restart; service identity, binary path, sudo policy, or installer-managed paths need -service=enable.
curl -fsSLo manager.env.example https://pauiops.kpa.ph/manager.env.example
chmod 600 manager.env.example60 of 60 variables shown. Secrets are labeled but never populated with real values.
PAUIOPS_ALLOWED_ORIGINSBrowser & privileged access · Optional
comma-separated originsNot secret+
PAUIOPS_ALLOWED_ORIGINSBrowser & privileged access · Optional
Default
same-origin only
Safe example
https://center.pauiops.kpa.ph
Behavior
Exact CORS and WebSocket browser origins; never use * in production.
Consumer
Manager HTTP/WebSocket server
Apply change
Restart
SUDO_PASSWORDBrowser & privileged access · Conditional
passwordSensitive+
SUDO_PASSWORDBrowser & privileged access · Conditional
Default
empty; privileged actions disabled
Safe example
<generated-in-protected-environment>
Behavior
Used only with the exact Dashboard sudo allowlist. A dedicated account can receive an installer-generated value; human account passwords are never changed.
Consumer
Manager service identity
Apply change
Run -service=enable
ANTHROPIC_API_KEYBrowser & privileged access · Optional
API keySensitive+
ANTHROPIC_API_KEYBrowser & privileged access · Optional
Default
empty; suggestions disabled
Safe example
<anthropic-api-key>
Behavior
Enables review-only Git or Docker command suggestions; commands never auto-execute.
Consumer
Manager suggestion service
Apply change
Restart
PAUIOPS_APP_NAMEApplication & project root · Optional
textNot secret+
PAUIOPS_APP_NAMEApplication & project root · Optional
Default
PAUIOps Manager
Safe example
PAUIOps Manager
Behavior
Changes the displayed application identity.
Consumer
Manager UI and API
Apply change
Restart
PAUIOPS_APP_VERSIONApplication & project root · Optional
release versionNot secret+
PAUIOPS_APP_VERSIONApplication & project root · Optional
Default
build version
Safe example
<release-version>
Behavior
Reported by version and health responses; release automation normally supplies it.
Consumer
Manager API
Apply change
Restart
PAUIOPS_ADMIN_EMAILApplication & project root · Optional
emailNot secret+
PAUIOPS_ADMIN_EMAILApplication & project root · Optional
Default
empty
Safe example
ops@example.com
Behavior
May be used as an author-email fallback; it is not a login credential.
Consumer
Manager
Apply change
Restart
PAUIOPS_ROOT_PATHApplication & project root · Required
absolute pathNot secret+
PAUIOPS_ROOT_PATHApplication & project root · Required
Default
current directory in foreground development
Safe example
/home/deploy/repos
Behavior
Production startup validates protected paths, symlinks, traversal, and writability. An unsafe or inaccessible root is fatal.
Consumer
Manager service identity
Apply change
Run -service=enable for service installs
PAUIOPS_SERVICE_USERLinux service lifecycle · Optional
Linux accountNot secret+
PAUIOPS_SERVICE_USERLinux service lifecycle · Optional
Default
installer-resolved
Safe example
pauiops
Behavior
Explicit or existing-unit identity wins. root is rejected.
Consumer
Service installer
Apply change
Run -service=enable
PAUIOPS_SERVICE_GROUPLinux service lifecycle · Optional
Linux groupNot secret+
PAUIOPS_SERVICE_GROUPLinux service lifecycle · Optional
Default
installer-resolved
Safe example
pauiops
Behavior
Controls managed-root group ownership; Docker socket group membership remains separate and highly privileged.
Consumer
Service installer
Apply change
Run -service=enable
PAUIOPS_SERVICE_GROUP_WRITELinux service lifecycle · Optional
booleanNot secret+
PAUIOPS_SERVICE_GROUP_WRITELinux service lifecycle · Optional
Default
derived from shared-group use
Safe example
true
Behavior
Selects whether the configured project group receives write access.
Consumer
Service installer
Apply change
Run -service=enable
PAUIOPS_MANAGER_INSTALL_PATHLinux service lifecycle · Optional
absolute executable pathNot secret+
PAUIOPS_MANAGER_INSTALL_PATHLinux service lifecycle · Optional
Default
/usr/local/bin/pauiops
Safe example
/usr/local/bin/pauiops
Behavior
Must be a full executable path and is shared by service install and binary upgrade.
Consumer
Service installer and upgrader
Apply change
Run -service=enable
PAUIOPS_UPGRADE_HEALTH_URLLinux service lifecycle · Optional
HTTP(S) URLNot secret+
PAUIOPS_UPGRADE_HEALTH_URLLinux service lifecycle · Optional
Default
empty; systemd active check only
Safe example
http://127.0.0.1:51800/api/ready
Behavior
Adds an application-level 2xx gate after a Manager binary upgrade.
Consumer
Binary upgrader
Apply change
Next upgrade invocation
PAUIOPS_UPGRADE_HEALTH_TIMEOUTLinux service lifecycle · Optional
Go durationNot secret+
PAUIOPS_UPGRADE_HEALTH_TIMEOUTLinux service lifecycle · Optional
Default
30s
Safe example
30s
Behavior
Bounds the optional post-upgrade health gate; invalid values fall back with a warning.
Consumer
Binary upgrader
Apply change
Next upgrade invocation
PAUIOPS_OTP_REQUIREDLogin OTP & SMTP · Optional
booleanNot secret+
PAUIOPS_OTP_REQUIREDLogin OTP & SMTP · Optional
Default
false
Safe example
true
Behavior
Requires a six-digit second factor after password login. Working SMTP or controlled code logging becomes required.
Consumer
Authentication service
Apply change
Restart
PAUIOPS_OTP_TTLLogin OTP & SMTP · Optional
Go durationNot secret+
PAUIOPS_OTP_TTLLogin OTP & SMTP · Optional
Default
5m
Safe example
5m
Behavior
Sets login-code lifetime; password-reset codes use a separate fixed flow.
Consumer
Authentication service
Apply change
Restart
PAUIOPS_OTP_BYPASS_EMAILLogin OTP & SMTP · Optional
emailNot secret+
PAUIOPS_OTP_BYPASS_EMAILLogin OTP & SMTP · Optional
Default
empty
Safe example
admin@example.com
Behavior
Temporary break-glass bypass for one address; reduces security and emits a warning.
Consumer
Authentication service
Apply change
Restart
PAUIOPS_OTP_LOG_CODESLogin OTP & SMTP · Optional
booleanNot secret+
PAUIOPS_OTP_LOG_CODESLogin OTP & SMTP · Optional
Default
false
Safe example
false
Behavior
Logs login and reset codes for controlled diagnosis. This is a temporary security reduction.
Consumer
Authentication service
Apply change
Restart
PAUIOPS_SMTP_HOSTLogin OTP & SMTP · Conditional
hostnameNot secret+
PAUIOPS_SMTP_HOSTLogin OTP & SMTP · Conditional
Default
empty
Safe example
smtp.example.com
Behavior
No delivery default exists; required when email-based OTP or recovery must work.
Consumer
Manager mailer
Apply change
Restart
PAUIOPS_SMTP_PORTLogin OTP & SMTP · Conditional
integer portNot secret+
PAUIOPS_SMTP_PORTLogin OTP & SMTP · Conditional
Default
provider-dependent
Safe example
587
Behavior
Must match the configured SMTP service.
Consumer
Manager mailer
Apply change
Restart
PAUIOPS_SMTP_USERNAMELogin OTP & SMTP · Conditional
textSensitive+
PAUIOPS_SMTP_USERNAMELogin OTP & SMTP · Conditional
Default
empty
Safe example
ops@example.com
Behavior
Leave empty only when the SMTP server permits the intended unauthenticated flow.
Consumer
Manager mailer
Apply change
Restart
PAUIOPS_SMTP_PASSWORDLogin OTP & SMTP · Conditional
passwordSensitive+
PAUIOPS_SMTP_PASSWORDLogin OTP & SMTP · Conditional
Default
empty
Safe example
<smtp-password>
Behavior
Protect in the service environment; Manager has no usable mail password default.
Consumer
Manager mailer
Apply change
Restart
PAUIOPS_SMTP_FROM_EMAILLogin OTP & SMTP · Conditional
emailNot secret+
PAUIOPS_SMTP_FROM_EMAILLogin OTP & SMTP · Conditional
Default
empty
Safe example
ops@example.com
Behavior
Must be accepted by the selected SMTP provider.
Consumer
Manager mailer
Apply change
Restart
PAUIOPS_CLOUDFLARE_API_TOKENCloudflare · Conditional
API tokenSensitive+
PAUIOPS_CLOUDFLARE_API_TOKENCloudflare · Conditional
Default
empty; integration disabled
Safe example
<scoped-cloudflare-token>
Behavior
Configure with only the cache-purge permission for the intended zone.
Consumer
Manager integration
Apply change
Restart
PAUIOPS_CLOUDFLARE_ZONE_IDCloudflare · Conditional
zone IDSensitive+
PAUIOPS_CLOUDFLARE_ZONE_IDCloudflare · Conditional
Default
empty
Safe example
<cloudflare-zone-id>
Behavior
Must identify the same intended zone as the token and record name.
Consumer
Manager integration
Apply change
Restart
PAUIOPS_CLOUDFLARE_RECORD_NAMECloudflare · Conditional
DNS record nameNot secret+
PAUIOPS_CLOUDFLARE_RECORD_NAMECloudflare · Conditional
Default
empty
Safe example
app.example.com
Behavior
Names the configured record context for cache operations.
Consumer
Manager integration
Apply change
Restart
PAUIOPS_DB_DRIVERDatabase & first administrator · Optional
sqlite | mysqlNot secret+
PAUIOPS_DB_DRIVERDatabase & first administrator · Optional
Default
sqlite
Safe example
sqlite
Behavior
Invalid drivers are fatal. MySQL is never auto-migrated.
Consumer
Manager database layer
Apply change
Restart
PAUIOPS_DB_DSNDatabase & first administrator · Optional
path or MySQL DSNSensitive+
PAUIOPS_DB_DSNDatabase & first administrator · Optional
Default
pauiops.db
Safe example
/var/lib/pauiops/pauiops.db
Behavior
SQLite migration uses verified backup and refuses ambiguity; a MySQL DSN may contain a password.
Consumer
Manager database layer
Apply change
Restart
PAUIOPS_BOOTSTRAP_ADMIN_USERNAMEDatabase & first administrator · Conditional
usernameNot secret+
PAUIOPS_BOOTSTRAP_ADMIN_USERNAMEDatabase & first administrator · Conditional
Default
empty
Safe example
admin
Behavior
Used only when no account or importable legacy user exists.
Consumer
Manager bootstrap
Apply change
Restart
PAUIOPS_BOOTSTRAP_ADMIN_PASSWORDDatabase & first administrator · Conditional
strong passwordSensitive+
PAUIOPS_BOOTSTRAP_ADMIN_PASSWORDDatabase & first administrator · Conditional
Default
empty
Safe example
<strong-one-time-password>
Behavior
Remove immediately after the first successful login; it is not a recurring credential.
Consumer
Manager bootstrap
Apply change
Restart
PAUIOPS_BOOTSTRAP_ADMIN_EMAILDatabase & first administrator · Conditional
emailNot secret+
PAUIOPS_BOOTSTRAP_ADMIN_EMAILDatabase & first administrator · Conditional
Default
empty
Safe example
admin@example.com
Behavior
Required with the other bootstrap values when the user database is empty.
Consumer
Manager bootstrap
Apply change
Restart
PAUIOPS_ROLES_JSONRoles & command presets · Optional
JSON array/objectNot secret+
PAUIOPS_ROLES_JSONRoles & command presets · Optional
Default
built-in roles
Safe example
<valid-roles-json>
Behavior
Invalid JSON is fatal; an override must contain at least one role and include admin.
Consumer
Authorization layer
Apply change
Restart
PAUIOPS_GIT_PRESETS_JSONRoles & command presets · Optional
valid JSONNot secret+
PAUIOPS_GIT_PRESETS_JSONRoles & command presets · Optional
Default
built-in presets
Safe example
[]
Behavior
Commands are normalized; presets never bypass permissions or destructive confirmations.
Consumer
Terminal UI
Apply change
Restart
PAUIOPS_GIT_USERNAMEGit · Conditional
provider usernameSensitive+
PAUIOPS_GIT_USERNAMEGit · Conditional
Default
empty
Safe example
<git-provider-username>
Behavior
Must be paired with PAUIOPS_GIT_PASSWORD. Used for app clone and service-user credential-store setup.
Consumer
Manager Git runners
Apply change
Restart
PAUIOPS_GIT_PASSWORDGit · Conditional
scoped provider tokenSensitive+
PAUIOPS_GIT_PASSWORDGit · Conditional
Default
empty
Safe example
<provider-access-token>
Behavior
A normal account password is usually unsuitable. Clearing it does not remove a previously stored credential.
Consumer
Manager Git runners
Apply change
Restart
PAUIOPS_GIT_HOSTGit · Optional
bare HTTPS host[:port]Not secret+
PAUIOPS_GIT_HOSTGit · Optional
Default
github.com
Safe example
github.com
Behavior
No scheme or repository path. Changing hosts preserves the old host entry until explicitly rejected.
Consumer
Credential auto-configuration
Apply change
Restart
PAUIOPS_AWS_ACCESS_KEY_IDAWS RDS allowlisting · Optional
AWS credentialSensitive+
PAUIOPS_AWS_ACCESS_KEY_IDAWS RDS allowlisting · Optional
Default
SDK credential chain
Safe example
<leave-empty-for-instance-role>
Behavior
Prefer an instance role or standard SDK chain over static keys.
Consumer
AWS SDK in Manager
Apply change
Restart
PAUIOPS_AWS_SECRET_ACCESS_KEYAWS RDS allowlisting · Optional
AWS secretSensitive+
PAUIOPS_AWS_SECRET_ACCESS_KEYAWS RDS allowlisting · Optional
Default
SDK credential chain
Safe example
<leave-empty-for-instance-role>
Behavior
Requires the matching access-key ID if static credentials are deliberately used.
Consumer
AWS SDK in Manager
Apply change
Restart
PAUIOPS_AWS_SESSION_TOKENAWS RDS allowlisting · Optional
temporary session tokenSensitive+
PAUIOPS_AWS_SESSION_TOKENAWS RDS allowlisting · Optional
Default
SDK credential chain
Safe example
<temporary-session-token>
Behavior
Use only with temporary credentials that require it.
Consumer
AWS SDK in Manager
Apply change
Restart
PAUIOPS_AWS_DEFAULT_REGIONAWS RDS allowlisting · Conditional
AWS regionNot secret+
PAUIOPS_AWS_DEFAULT_REGIONAWS RDS allowlisting · Conditional
Default
SDK/provider resolution
Safe example
ap-southeast-1
Behavior
Must match the intended security group region.
Consumer
AWS SDK in Manager
Apply change
Restart
PAUIOPS_AWS_RDS_SECURITY_GROUP_IDAWS RDS allowlisting · Conditional
sg- identifierSensitive+
PAUIOPS_AWS_RDS_SECURITY_GROUP_IDAWS RDS allowlisting · Conditional
Default
empty; feature disabled
Safe example
sg-0123456789abcdef0
Behavior
The credential requires the narrow EC2 ingress permission for this intended group.
Consumer
Manager RDS integration
Apply change
Restart
PAUIOPS_AWS_RDS_DATABASE_PORTAWS RDS allowlisting · Optional
integer portNot secret+
PAUIOPS_AWS_RDS_DATABASE_PORTAWS RDS allowlisting · Optional
Default
3306
Safe example
3306
Behavior
Creates the narrowly scoped ingress rule for the database port.
Consumer
Manager RDS integration
Apply change
Restart
PAUIOPS_TRUST_PROXY_HEADERSAWS RDS allowlisting · Optional
booleanNot secret+
PAUIOPS_TRUST_PROXY_HEADERSAWS RDS allowlisting · Optional
Default
false
Safe example
true
Behavior
Trust forwarded source/protocol only behind a controlled proxy that replaces untrusted headers.
Consumer
Manager HTTP server
Apply change
Restart
PAUIOPS_SESSION_TIMEOUTOperational limits · Optional
Go durationNot secret+
PAUIOPS_SESSION_TIMEOUTOperational limits · Optional
Default
24h
Safe example
24h
Behavior
Controls session lifetime; invalid values fall back with a warning where implemented.
Consumer
Authentication service
Apply change
Restart
PAUIOPS_COMMAND_TIMEOUTOperational limits · Optional
Go durationNot secret+
PAUIOPS_COMMAND_TIMEOUTOperational limits · Optional
Default
10m
Safe example
10m
Behavior
Bounds buffered commands and safety checks; diagnose slow Git before increasing it.
Consumer
Command runner
Apply change
Restart
PAUIOPS_MAX_CONCURRENT_COMMANDSOperational limits · Optional
non-negative integerNot secret+
PAUIOPS_MAX_CONCURRENT_COMMANDSOperational limits · Optional
Default
0 (unlimited)
Safe example
4
Behavior
0 means unlimited only for command concurrency.
Consumer
Command runner
Apply change
Restart
PAUIOPS_SHUTDOWN_TIMEOUTOperational limits · Optional
Go durationNot secret+
PAUIOPS_SHUTDOWN_TIMEOUTOperational limits · Optional
Default
25s
Safe example
25s
Behavior
Keeps graceful draining below the generated unit’s TimeoutStopSec=30.
Consumer
Manager lifecycle
Apply change
Restart
PAUIOPS_FILE_WATCH_INTERVALOperational limits · Optional
Go durationNot secret+
PAUIOPS_FILE_WATCH_INTERVALOperational limits · Optional
Default
5s
Safe example
5s
Behavior
Controls file-tree refresh cadence.
Consumer
File workspace
Apply change
Restart
PAUIOPS_OVERVIEW_INTERVALOperational limits · Optional
Go durationNot secret+
PAUIOPS_OVERVIEW_INTERVALOperational limits · Optional
Default
10s
Safe example
10s
Behavior
Controls overview metric refresh cadence.
Consumer
Overview streamer
Apply change
Restart
PAUIOPS_MAX_EDIT_FILE_MBOperational limits · Optional
positive MB integerNot secret+
PAUIOPS_MAX_EDIT_FILE_MBOperational limits · Optional
Default
5
Safe example
5
Behavior
Files above the limit cannot be edited in the browser.
Consumer
File API
Apply change
Restart
PAUIOPS_MAX_UPLOAD_MBOperational limits · Optional
positive MB integerNot secret+
PAUIOPS_MAX_UPLOAD_MBOperational limits · Optional
Default
25
Safe example
25
Behavior
Requests above the upload-body limit are rejected.
Consumer
File API
Apply change
Restart
PAUIOPS_SEARCH_MAX_RESULTSOperational limits · Optional
positive integerNot secret+
PAUIOPS_SEARCH_MAX_RESULTSOperational limits · Optional
Default
300
Safe example
300
Behavior
Caps file search results for predictable resource use.
Consumer
Search API
Apply change
Restart
PAUIOPS_SEARCH_MAX_FILE_MBOperational limits · Optional
positive MB integerNot secret+
PAUIOPS_SEARCH_MAX_FILE_MBOperational limits · Optional
Default
2
Safe example
2
Behavior
Skips oversized files during content search.
Consumer
Search API
Apply change
Restart
PAUIOPS_SYSTEMD_UNIT_PATHDisposable test overrides · Test only
absolute file pathNot secret+
PAUIOPS_SYSTEMD_UNIT_PATHDisposable test overrides · Test only
Default
/etc/systemd/system/pauiops.service
Safe example
<temporary-test-path>
Behavior
Unsupported for ordinary production path customization.
Consumer
Integration harness
Apply change
Next one-shot command
PAUIOPS_SYSTEMD_ENV_PATHDisposable test overrides · Test only
absolute file pathNot secret+
PAUIOPS_SYSTEMD_ENV_PATHDisposable test overrides · Test only
Default
/etc/pauiops/pauiops.env
Safe example
<temporary-test-path>
Behavior
Keep unset outside disposable integration environments.
Consumer
Integration harness
Apply change
Next one-shot command
PORTImplementation-supported additions · Optional
integer portNot secret+
PORTImplementation-supported additions · Optional
Default
51800
Safe example
51800
Behavior
Foreground HTTP port; -port overrides it. This key is supported but not printed in the sanitized source template.
Consumer
Manager HTTP server
Apply change
Restart
Template status
Implementation-supported addition; not printed in the source template
PAUIOPS_PUBLIC_IP_ECHO_URLImplementation-supported additions · Optional
single HTTP(S) URLNot secret+
PAUIOPS_PUBLIC_IP_ECHO_URLImplementation-supported additions · Optional
Default
built-in bounded endpoint
Safe example
https://ip.example.com
Behavior
Optional server-side public-IP echo for self-hosted or air-gapped discovery; never use a secret-bearing URL.
Consumer
Manager RDS integration
Apply change
Restart
Template status
Implementation-supported addition; not printed in the source template
Implementation-supported additions
PORT and PAUIOPS_PUBLIC_IP_ECHO_URL are supported at runtime but are deliberately marked as supplemental because they are not printed in the sanitized source template. The drift check keeps that distinction explicit.