Konfigurasi

File environment

Semua variabel Kanesh dalam satu file, apa yang aktif secara default, dan cara menyalakan sisanya.

Salin file ini sebagai .env dan ubah yang kamu perlukan. File ini aman untuk produksi apa adanya: mode demo mati dan tidak ada secret yang diatur.

Cara membacanya

  • Baris tanpa # aktif. Kanesh memakai nilai itu.
  • Baris yang diawali # nonaktif. Kanesh memakai default bawaan.
  • Untuk menyalakan sebuah pengaturan, hapus # dan isi nilaimu.

Misalnya, untuk memakai PostgreSQL, ubah DATABASE_DRIVER=sqlite menjadi postgres dan hapus # di depan DATABASE_URL.

Note: Docker membaca file ini lewat --env-file .env atau env_file di Compose. Proses Go tidak membacanya; export variabel di shell lebih dulu.

File lengkap

# ---- Server ----
HOST=127.0.0.1
PORT=8080
DATA_DIR=.data
# Detik yang diberikan ke request berjalan untuk selesai saat shutdown (1s sampai 5m).
SHUTDOWN_TIMEOUT=10s

# ---- Database ----
# sqlite, postgres, atau mysql.
DATABASE_DRIVER=sqlite
# URL PostgreSQL atau DSN go-sql-driver MySQL. Wajib untuk postgres dan mysql.
# DATABASE_URL=postgres://kanesh:CHANGE_ME@127.0.0.1:5432/kanesh?sslmode=disable
# Path SQLite kustom. Default: DATA_DIR/kanesh.db
# SQLITE_PATH=.data/kanesh.db

# ---- Owner pertama ----
# Secret klaim sendiri (32 sampai 256 karakter). Default: token sekali pakai di DATA_DIR/claim-token.
# BOOTSTRAP_TOKEN=
# Membuat owner hanya pada instalasi baru.
# ADMIN_EMAIL=you@example.com
# ADMIN_PASSWORD=
# Lebih aman: baca password dari secret yang di-mount.
# ADMIN_PASSWORD_FILE=/run/secrets/admin_password
# true menampilkan login owner di layar masuk. Hanya untuk demo sekali pakai.
DEMO_MODE=false

# ---- Agent dan token ----
# true menyalakan endpoint MCP read-only.
MCP_ENABLED=false
# Header token mentah tambahan. Authorization: Bearer selalu berfungsi.
# AUTH_TOKEN_HEADER=X-Api-Key

# ---- Logging ----
# debug, info, warn, atau error.
LOG_LEVEL=info
# json untuk tool log, text untuk terminal.
LOG_FORMAT=json
# Request lambat dicatat sebagai warning. 0 mematikannya.
# LOG_SLOW_REQUEST=1s

# ---- HTTPS dan header ----
# Atur true di belakang HTTPS, termasuk reverse proxy TLS.
COOKIE_SECURE=false
# Strict-Transport-Security. Default: sama dengan COOKIE_SECURE.
# HSTS_ENABLED=true
# Content-Security-Policy untuk halaman Studio. Defaultnya ketat.
# CONTENT_SECURITY_POLICY=default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; font-src 'self' data:; connect-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'self'; form-action 'self'
# Proxy yang boleh meneruskan IP client (IP atau CIDR, dipisah koma).
# TRUSTED_PROXIES=10.0.0.0/8

# ---- Secret yang disimpan dari Studio ----
# Minimal 16 karakter. Dibutuhkan untuk menyimpan secret seperti password SMTP. Backup kuncinya.
# SETTINGS_ENCRYPTION_KEY=
# Dipakai hanya jika SETTINGS_ENCRYPTION_KEY tidak diatur.
# SECRET=

# ---- Rate limit ----
RATE_LIMIT_ENABLED=true
# Request per client per window di /api/.
# RATE_LIMIT_POINTS=600
# RATE_LIMIT_DURATION=1m
# Budget yang lebih ketat untuk login dan klaim instalasi.
# RATE_LIMIT_AUTH_POINTS=20
# RATE_LIMIT_AUTH_DURATION=1m

# ---- CORS (aplikasi browser di origin lain) ----
# CORS_ENABLED=false
# CORS_ORIGINS=https://app.example.com,http://localhost:5173
# CORS_METHODS=GET,POST,PUT,PATCH,DELETE
# CORS_HEADERS=Authorization,Content-Type,If-Match,If-None-Match,X-Request-ID,X-Workspace-ID
# CORS_EXPOSE_HEADERS=ETag,X-Request-ID,X-Response-Time,Retry-After,Content-Disposition
# CORS_MAX_AGE=10m

# ---- Kebijakan akses ----
# PASSWORD_MIN_LENGTH=6
# PASSWORD_REQUIRE_CLASSES=false
# SESSION_LIFETIME=8h
# SESSION_IDLE_TIMEOUT=0s
# LOGIN_MAX_ATTEMPTS=5
# LOGIN_LOCKOUT=1m
# TOKEN_DEFAULT_LIFETIME=2160h
# TOKEN_MAX_LIFETIME=8760h
# OWNER_INVITES_ENABLED=true

# ---- Penyimpanan file ----
# database (default) atau s3.
# STORAGE_DRIVER=database
# S3 atau MinIO. Wajib saat STORAGE_DRIVER=s3.
# S3_ENDPOINT=https://s3.us-east-1.amazonaws.com
# S3_REGION=us-east-1
# S3_BUCKET=kanesh-uploads
# S3_ACCESS_KEY_ID=
# S3_SECRET_ACCESS_KEY=
# true untuk MinIO dan kebanyakan layanan yang kompatibel dengan S3.
# S3_FORCE_PATH_STYLE=false

# ---- Email ----
# smtp atau resend. Default: smtp jika SMTP_HOST diatur.
# EMAIL_PROVIDER=smtp
# API key Resend. Wajib saat EMAIL_PROVIDER=resend.
# RESEND_API_KEY=
# Pengirim untuk semua provider.
# SMTP_FROM=noreply@example.com
# SMTP_FROM_NAME=Kanesh
# Relay SMTP.
# SMTP_HOST=smtp.example.com
# SMTP_PORT=587
# SMTP_TLS=starttls
# SMTP_USERNAME=
# SMTP_PASSWORD=

Setiap grup dijelaskan di halamannya sendiri: Konfigurasi, Keamanan, CORS, Kebijakan akses, Email, dan Upload file dan penyimpanan.

Penyimpanan dijelaskan di Upload file dan penyimpanan.

Traktir kopi