Tovább a tartalomhoz

Környezeti változók

Az ElyOS projekt Varlock-ot használ a környezeti változók typesafe kezeléséhez. Ez biztosítja, hogy minden konfiguráció validált és típusbiztos legyen, mielőtt az alkalmazás elindul.

A környezeti változók kezelése kritikus az alkalmazás működéséhez:

  • Adatbázis kapcsolatDATABASE_URL nélkül nem indul az alkalmazás
  • AutentikációBETTER_AUTH_SECRET és BETTER_AUTH_URL szükséges
  • Email küldés — SMTP vagy más email provider beállítások
  • Secrets management — Infisical integráció a biztonságos secrets kezeléshez

Az ElyOS környezeti változó kezelése három rétegből áll:

A típusdefiníciók és annotációk forrása. Ebből generálódik az env.d.ts TypeScript típusfájl.

Fájl: apps/web/.env.schema

Részletek: Varlock séma formátum →

A futásidejű validációs logika TypeScript-ben. Ez ellenőrzi az Infisical-ból vagy .env fájlból betöltött értékeket.

Fájl: apps/web/src/lib/secrets/schema.ts

Részletek: Runtime validáció →

A típusbiztos hozzáférési pont az alkalmazáskódból.

Fájl: apps/web/src/lib/env.ts

Használat:

import { env } from '$lib/env';
const port = env.ELYOS_PORT; // number
const devMode = env.DEV_MODE; // boolean
const dbUrl = env.DATABASE_URL; // string
Terminál
bun app:dev

A .env.local fájlból tölti be a változókat. Gyors és egyszerű lokális fejlesztéshez.

Terminál
bun app:dev:varlock

Az Infisical-ból tölti be a változókat. Teszteléshez, ha az éles környezethez hasonló konfigurációt szeretnél.

CMD ["varlock", "run", "--", "bun", "run", "apps/web/server.js"]

Csak a bootstrap credentials vannak a .env fájlban, minden más az Infisical-ból jön.

Részletek: Indítási módok és Infisical →

Ha új környezeti változót adsz hozzá, 3 helyen kell frissítened:

  1. .env.schema — Varlock annotációkkal
  2. schema.ts — 4 helyen (EXPECTED_KEYS, REQUIRED_KEYS, validateSchema, validEnvArbitrary)
  3. .env.example — példa érték

Részletes útmutató: Új változó hozzáadása →

elyos-core/
├── .env.example # Példa konfiguráció
├── .env.local # Lokális fejlesztői változók (gitignore)
├── apps/web/
│ ├── .env.schema # Varlock séma (@generateTypes)
│ ├── src/
│ │ ├── env.d.ts # Generált TypeScript típusok
│ │ ├── lib/
│ │ │ ├── env.ts # Központi env export
│ │ │ └── secrets/
│ │ │ ├── varlock.ts # Infisical integráció
│ │ │ └── schema.ts # Runtime validáció
│ │ └── server.js # Express + Socket.IO szerver
│ └── vite.config.ts # envDir: '../..'
  • Típusbiztonság — teljes TypeScript támogatás
  • Validáció — séma alapú validáció indításkor és runtime-ban
  • Secrets management — központi Infisical integráció
  • Fallback — lokális fejlesztés támogatása
  • Coercion — automatikus típuskonverzió (string → boolean/number)
  • Token renewal — automatikus token megújítás
  • Retry logic — hibatűrő kapcsolódás (3 újrapróbálkozás)