Repository navigation
Expand file tree
/
Copy path.env.example
More file actions
184 lines (148 loc) · 8.18 KB
/
Copy path.env.example
File metadata and controls
184 lines (148 loc) · 8.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# Mimir Control Plane — Environment Variables
# Copy to .env and fill in values.
#
# cp .env.example .env
#
# This file configures the full stack (Docker Compose, `make dev`, or `pnpm dev`).
# ── Database ──────────────────────────────────────────────────────────────────
POSTGRES_DB=mimir
POSTGRES_USER=mimir
POSTGRES_PASSWORD=changeme # use a strong random password in production
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
# ── Redis ─────────────────────────────────────────────────────────────────────
REDIS_HOST=localhost
REDIS_PORT=6379
# ── Security (generate each with: openssl rand -hex 32) ──────────────────────
JWT_SECRET=changeme
SESSION_SECRET=changeme
SECRET_VAULT_KEY=changeme # AES-256-GCM encryption key for secrets vault
# ── API Server ────────────────────────────────────────────────────────────────
API_PORT=3001
NODE_ENV=development
LOG_LEVEL=debug
CORS_ORIGIN=http://localhost:5173
# ── Auth (Better Auth) ───────────────────────────────────────────────────────
BETTER_AUTH_URL=http://localhost:3001 # base URL for auth callbacks
# GitHub OAuth — create at https://github.com/settings/developers
# Callback URL: http://localhost:3001/api/auth/callback/github
# GITHUB_CLIENT_ID=
# GITHUB_CLIENT_SECRET=
# Google OAuth — create at https://console.cloud.google.com/apis/credentials
# Callback URL: http://localhost:3001/api/auth/callback/google
# GOOGLE_CLIENT_ID=
# GOOGLE_CLIENT_SECRET=
# Resend API key for sending emails
# Get from: https://resend.com/api-keys
# RESEND_API_KEY=
# From address for emails (must match verified domain in Resend)
# Format: "Display Name <email@yourdomain.com>"
EMAIL_FROM=noreply@sindri.dev
# Dev only — skip auth and auto-login as seed admin user
# AUTH_BYPASS=true
# ── Sindri ────────────────────────────────────────────────────────────────────
# Console connection — API key must match an ApiKey row in the DB
SINDRI_CONSOLE_API_KEY=changeme
SINDRI_CONSOLE_URL=http://localhost:3001
# CLI binary path — must be absolute; relative paths won't resolve correctly
# because the API process cwd varies depending on how it is started.
# SINDRI_BIN_PATH=/usr/local/bin/sindri
# SINDRI_CLI_TIMEOUT_MS=15000
# Default remote Docker host for all Docker-provider deployments.
# Users can override per-instance in the wizard. Leave blank for local Docker.
# Examples: ssh://user@remote-host, tcp://remote-host:2376
# DOCKER_HOST_DEFAULT=
# Multi-distro support — comma-separated list and default distro.
SINDRI_SUPPORTED_DISTROS=ubuntu,fedora,opensuse
SINDRI_DEFAULT_DISTRO=ubuntu
# Image configuration — controls registry, version, and dev-mode defaults.
# These are exposed to the frontend via /api/config and used by the YAML assembler.
# SINDRI_IMAGE_REGISTRY=ghcr.io/pacphi/sindri
# SINDRI_IMAGE_VERSION=latest
# Override the default image used when the deployment YAML has no image field.
# Dev builds: sindri:v3-<distro>-dev (built via `make v3-docker-build-dev`)
# Prod builds: sindri:v3-<distro>-local (built via `make v3-docker-build`)
# SINDRI_DEFAULT_IMAGE=sindri:v3-ubuntu-dev
# Extension catalog sync — pulls extension metadata from the Sindri GitHub repo.
# SINDRI_EXT_GITHUB_OWNER=pacphi
# SINDRI_EXT_GITHUB_REPO=sindri
# SINDRI_EXT_GITHUB_BRANCH=main
# SINDRI_EXT_GITHUB_BASE_PATH=v3/extensions
# SINDRI_EXT_SYNC_INTERVAL_MS=3600000
# Optional GitHub token for higher rate limits (60 req/hr without)
# GITHUB_TOKEN=
# ── Compute Catalog — Pricing API Keys ───────────────────────────────────────
# Optional — providers without keys gracefully fall back to static pricing.
# See docs/MAINTAINER.md for setup instructions.
#
# IMPORTANT: These use a PRICING_ prefix to avoid collision with deployment
# credentials. The sindri CLI looks for FLY_API_TOKEN, RUNPOD_API_KEY, etc.
# PRICING_* vars are invisible to the CLI subprocess, preventing accidental
# use of operator keys for user deployments. See ADR-0006.
# Fly.io — `fly auth token` or https://fly.io/user/personal_access_tokens
# PRICING_FLY_API_TOKEN=
# RunPod — https://www.runpod.io/console/user/settings
# PRICING_RUNPOD_API_KEY=
# Northflank — https://app.northflank.com/account/api
# PRICING_NORTHFLANK_API_TOKEN=
# GCP Cloud Billing — https://console.cloud.google.com/apis/credentials
# PRICING_GCP_API_KEY=
# DigitalOcean — https://cloud.digitalocean.com/account/api/tokens
# PRICING_DIGITALOCEAN_TOKEN=
# AWS — IAM user with pricing:GetProducts permission
# https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-permissions-ref.html
# PRICING_AWS_ACCESS_KEY_ID=
# PRICING_AWS_SECRET_ACCESS_KEY=
# Azure uses public pricing APIs — no keys required.
# ── Compute Catalog — Advanced Overrides ─────────────────────────────────────
# Override refresh/cache behavior per provider (defaults shown)
# CATALOG_FLY_TTL=21600
# CATALOG_FLY_INTERVAL_MS=21600000
# CATALOG_RUNPOD_TTL=14400
# CATALOG_RUNPOD_INTERVAL_MS=14400000
# CATALOG_NORTHFLANK_TTL=43200
# CATALOG_NORTHFLANK_INTERVAL_MS=43200000
# CATALOG_AWS_TTL=86400
# CATALOG_AWS_INTERVAL_MS=86400000
# CATALOG_GCP_TTL=86400
# CATALOG_GCP_INTERVAL_MS=86400000
# CATALOG_AZURE_TTL=86400
# CATALOG_AZURE_INTERVAL_MS=86400000
# CATALOG_E2B_TTL=86400
# Disable a specific provider's catalog fetching
# CATALOG_AWS_ENABLED=false
# Custom pricing for local/infrastructure-dependent providers ($/hr)
# CATALOG_DOCKER_SMALL_PRICE_HR=0.05
# CATALOG_DOCKER_MEDIUM_PRICE_HR=0.10
# CATALOG_DOCKER_LARGE_PRICE_HR=0.20
# CATALOG_DOCKER_XLARGE_PRICE_HR=0.40
# CATALOG_K8S_SMALL_PRICE_HR=0.03
# CATALOG_K8S_MEDIUM_PRICE_HR=0.06
# CATALOG_K8S_LARGE_PRICE_HR=0.12
# CATALOG_K8S_XLARGE_PRICE_HR=0.24
# Path to a JSON file for advanced catalog configuration overrides
# CATALOG_CONFIG=/etc/mimir/catalog.json
# ── Web ───────────────────────────────────────────────────────────────────────
WEB_PORT=5173
# ── IP Geolocation (optional) ─────────────────────────────────────────────────
# Used for geo-detecting Docker/Kubernetes instances that lack cloud region data.
# Without these, the system falls back to ip-api.com (free, 45 req/min, no key).
# MaxMind GeoLite2 — https://www.maxmind.com/en/geolite2/signup
# MAXMIND_ACCOUNT_ID=
# MAXMIND_LICENSE_KEY=
# Default geographic coordinates for instances that cannot be geolocated
# (e.g., Docker behind NAT with no public IP). If unset, defaults to 0°,0° (Null Island).
DEFAULT_GEO_LAT=47.6062
DEFAULT_GEO_LON=-122.3321
DEFAULT_GEO_LABEL="Seattle, WA"
# ── Shell IDE (optional) ────────────────────────────────────────────────────
# Root directory for the file explorer and editor. All filesystem operations
# (list, read, write) are jailed to this path inside Sindri containers.
# EDITOR_FS_ROOT=/alt/home/developer/workspace
# Idle timeout (ms) before an LSP WebSocket connection is closed.
# LSP_IDLE_TIMEOUT_MS=1800000
# ── Retention (optional, defaults shown) ─────────────────────────────────────
# METRICS_RETENTION_DAYS=30
# LOGS_RETENTION_DAYS=14
# EVENTS_RETENTION_DAYS=90
# AUDIT_RETENTION_DAYS=365