Skip to main content

ภาพรวม

Environment variables ช่วยให้คุณสามารถเก็บค่าการตั้งค่าและ secrets ที่แอปพลิเคชันของคุณจำเป็นต้องใช้ในการทำงาน กรณีการใช้งานทั่วไป ได้แก่:
  • API keys และ tokens
  • ข้อมูลประจำตัวของบริการภายนอก
  • Feature flags
  • การตั้งค่าเฉพาะสำหรับแต่ละ environment
ใน Stardeck, environment variables สามารถตั้งค่าได้ต่อโปรเจค และกำหนดเป้าหมายไปยัง deployment environments เฉพาะ

Deployment Targets

Environment variable แต่ละตัวสามารถตั้งค่าได้สำหรับหนึ่งหรือหลาย deployment targets:

Sandbox

Environment สำหรับการพัฒนาที่คุณสร้างและทดสอบแอปพลิเคชันของคุณ เมื่อคุณแก้ไข sandbox environment variables, dev server จะรีสตาร์ทโดยอัตโนมัติเพื่อใช้การเปลี่ยนแปลง

Preview

Branch preview deployments ที่สร้างขึ้นสำหรับ Git branches เฉพาะ ใช้ preview variables เพื่อทดสอบกับข้อมูลที่คล้ายกับ production โดยไม่กระทบกับเว็บไซต์ที่เผยแพร่แล้ว

Production

แอปพลิเคชันที่เผยแพร่และใช้งานจริงของคุณ Production variables ถูกใช้เมื่อคุณ deploy โปรเจคของคุณไปยังโดเมนที่กำหนดเองหรือ URL เริ่มต้น project-slug.stardeck.site
คุณสามารถเลือกหลาย targets สำหรับ variable เดียว ช่วยให้คุณสามารถใช้การตั้งค่าเดียวกันในหลาย environments

ประเภทของ Variable

Stardeck รองรับสองประเภทของ environment variables ที่มีรูปแบบการมองเห็นและการเข้าถึงที่แตกต่างกัน:

Non-Secret Variables

Non-secret variables เหมาะสำหรับค่าการตั้งค่าที่ไม่ละเอียดอ่อนซึ่งสามารถเปิดเผยได้อย่างปลอดภัย:
  • การเข้าถึงในขั้นตอน Build: มีอยู่แล้วโดยอัตโนมัติสำหรับ Vite ด้วย prefix VITE_ ในระหว่างกระบวนการ build
  • การเข้าถึงในขั้นตอน Runtime: มีอยู่เป็น environment variables ปกติ
  • การมองเห็น: ค่าจะมองเห็นได้ (แต่ถูกซ่อน) ใน project settings UI
  • กรณีการใช้งาน: Public API endpoints, feature flags, การตั้งค่าที่ไม่ละเอียดอ่อน
เมื่อคุณสร้าง non-secret variable ชื่อ API_URL, Stardeck จะทำให้มันพร้อมใช้งานโดยอัตโนมัติทั้งเป็น VITE_API_URL (สำหรับ client-side code) และ API_URL (สำหรับ server-side code)

Secret Variables

Secret variables ถูกเข้ารหัสและเก็บไว้อย่างปลอดภัย:
  • Runtime-only: มีอยู่เฉพาะใน runtime เท่านั้น ไม่เคยถูกเปิดเผยในระหว่างกระบวนการ build
  • การจัดเก็บแบบเข้ารหัส: ค่าถูกเข้ารหัสใน database
  • ซ่อนใน UI: ค่าจะไม่ถูกแสดงใน project settings เลย
  • กรณีการใช้งาน: API keys, tokens, passwords, database credentials
Secret variables ไม่สามารถเข้าถึงได้ โดย Vite ในขั้นตอน build พวกเขามีอยู่เฉพาะสำหรับ server-side code ใน runtime ผ่าน process.env เท่านั้น

Reserved Variables

ชื่อ environment variable บางอันถูกจองไว้โดย Stardeck สำหรับการใช้งานระบบและไม่สามารถตั้งค่าโดยผู้ใช้:

Reserved Prefixes

  • VITE_ - เพิ่มโดยอัตโนมัติให้กับ non-secret variables สำหรับการเข้าถึงฝั่ง client คุณไม่ควรสร้าง variables ที่เริ่มต้นด้วย VITE_ เพราะ Stardeck จัดการสิ่งนี้โดยอัตโนมัติ
  • OIDC_ - จองไว้สำหรับการตั้งค่า OAuth และ authentication ที่จัดการโดย Stardeck

Reserved Names

  • DATABASE_URL - Managed database connection string (ให้โดย Stardeck โดยอัตโนมัติ)
  • APP_DATABASE_NAME - ชื่อ application database
  • DATABASE_NAME - ชื่อ database (legacy)
  • DEPLOYMENT_ID - ตัวระบุ deployment ปัจจุบัน
  • CLOUDFLARE_INCLUDE_PROCESS_ENV - Cloudflare environment flag
หากคุณพยายามสร้าง variable ด้วยชื่อที่จองไว้ คุณจะได้รับข้อผิดพลาด เลือกชื่ออื่นสำหรับ custom variables ของคุณ (เช่น ใช้ EXTERNAL_DATABASE_URL แทน DATABASE_URL สำหรับการเชื่อมต่อ database ของบุคคลที่สาม)

การจัดการ Environment Variables

การเข้าถึงการตั้งค่า

  1. เปิดโปรเจคของคุณใน Stardeck dashboard
  2. คลิกปุ่ม Settings (ไอคอนเฟือง)
  3. ไปที่แท็บ Environment Variables

การเพิ่ม Variable

  1. คลิก Add Environment Variable
  2. ใส่ Key ในรูปแบบ UPPERCASE_WITH_UNDERSCORES (เช่น API_KEY, STRIPE_SECRET_KEY)
  3. ใส่ Value
  4. สลับ Secret Variable หากค่ามีข้อมูลที่ละเอียดอ่อน
  5. เลือกหนึ่งหรือหลาย Deployment Targets (sandbox, preview, production)
  6. คลิก Add Variable
สำหรับ sandbox environments, dev server จะรีสตาร์ทโดยอัตโนมัติเพื่อใช้ environment variables ใหม่

การแก้ไข Variable

  1. คลิก Edit บน variable ที่คุณต้องการแก้ไข
  2. อัปเดต key, value, สถานะ secret, หรือ deployment targets
  3. คลิก Update Variable
เมื่อแก้ไข secret variable ปล่อยช่อง value ว่างเพื่อเก็บค่า secret ที่มีอยู่ไว้โดยไม่เปลี่ยนแปลง

การลบ Variable

  1. คลิก ไอคอนถังขยะ ถัดจาก variable ที่คุณต้องการลบ
  2. ยืนยันการลบ
การลบ environment variable จะทริกเกอร์การรีสตาร์ท dev server สำหรับ sandbox environments หากเกี่ยวข้อง

การใช้ Variables ในโค้ดของคุณ

Client-Side Code (Vite/React)

เข้าถึง non-secret variables ใน client-side code ของคุณโดยใช้ import.meta.env:
// การเข้าถึง non-secret variable
const apiUrl = import.meta.env.VITE_API_URL;
const featureFlag = import.meta.env.VITE_ENABLE_FEATURE;

console.log(`API URL: ${apiUrl}`);
เฉพาะ variables ที่มี prefix VITE_ เท่านั้นที่สามารถเข้าถึงได้ใน client-side code ห้ามเก็บ secrets ใน VITE_ variables เพราะพวกเขาถูกฝังอยู่ในแอปพลิเคชันที่ build แล้ว

Server-Side Code (Node.js/API Routes)

เข้าถึงทั้ง secret และ non-secret variables ใน server code ของคุณโดยใช้ process.env:
// Server-side API route
export async function POST(req: Request) {
  // เข้าถึง secret variables
  const apiKey = process.env.STRIPE_SECRET_KEY;
  const webhookSecret = process.env.STRIPE_WEBHOOK_SECRET;
  
  // เข้าถึง non-secret variables
  const apiUrl = process.env.EXTERNAL_API_URL;
  
  // ใช้ variables
  const response = await fetch(apiUrl, {
    headers: { Authorization: `Bearer ${apiKey}` }
  });
  
  return Response.json({ data: await response.json() });
}

Best Practices

หลักการตั้งชื่อ

  • ใช้ตัวพิมพ์ใหญ่พร้อม underscores: MY_API_KEY, DATABASE_URL
  • ใช้คำที่อธิบายและสอดคล้อง: STRIPE_SECRET_KEY, STRIPE_PUBLIC_KEY
  • ปฏิบัติตามรูปแบบการตั้งชื่อของทีม

ความปลอดภัย

  • ใช้ secrets สำหรับข้อมูลที่ละเอียดอ่อน: API keys, tokens, passwords, และ connection strings ควรถูกทำเครื่องหมายเป็น secret เสมอ
  • ห้าม commit secrets: อย่าเก็บค่าที่ละเอียดอ่อนใน Git repository ของคุณ
  • หมุนเวียน credentials: อัปเดตค่า secret เป็นระยะ โดยเฉพาะหากอาจถูกเปิดเผย
  • จำกัดการเข้าถึง: เพิ่ม environment variables เฉพาะใน targets ที่จำเป็นเท่านั้น

การจัดระเบียบ

  • จัดกลุ่ม variables ที่เกี่ยวข้อง: ใช้ prefixes เพื่อจัดระเบียบการตั้งค่าที่เกี่ยวข้อง (เช่น STRIPE_, AWS_)
  • จัดทำเอกสาร variables: เก็บบันทึกว่าแต่ละ variable ใช้เพื่ออะไร
  • ความเท่าเทียมของ Environment: ใช้ชื่อ variable เดียวกันในทุก targets ด้วยค่าเฉพาะสำหรับแต่ละ environment

Client-Side Variables

  • ลดการเปิดเผยฝั่ง client: ใช้ VITE_ variables เฉพาะเมื่อค่าจำเป็นต้องเข้าถึงได้ใน browser
  • ห้ามเปิดเผย secrets: Client-side code มองเห็นได้โดยผู้ใช้ ดังนั้นอย่าใส่ข้อมูลที่ละเอียดอ่อนใน VITE_ variables
  • ตรวจสอบบน server: ตรวจสอบข้อมูลที่ client ส่งมาบน server เสมอ แม้ว่าคุณจะมีการตรวจสอบฝั่ง client
จำไว้ว่า: Non-secret variables มีอยู่โดยอัตโนมัติพร้อม prefix VITE_ สำหรับการเข้าถึงฝั่ง client คุณไม่จำเป็นต้องสร้าง variables แยก

รูปแบบทั่วไป

การตั้งค่า API

// Non-secret variable สำหรับ API endpoint
EXTERNAL_API_URL=https://api.example.com

// Secret variable สำหรับ API key (server-side เท่านั้น)
STRIPE_SECRET_KEY=sk_live_...
STRIPE_WEBHOOK_SECRET=whsec_...

การตั้งค่า External Database

// Secret variable สำหรับการเชื่อมต่อ external database
EXTERNAL_DATABASE_URL=postgresql://user:pass@host:5432/db

// Non-secret variable สำหรับ connection pool size
EXTERNAL_DB_POOL_SIZE=10
Stardeck ให้ DATABASE_URL โดยอัตโนมัติสำหรับ managed database ของโปรเจคคุณ ใช้ EXTERNAL_DATABASE_URL หรือชื่อคล้ายกันสำหรับการเชื่อมต่อไปยัง external databases

Feature Flags

// Non-secret variables สำหรับ feature toggles
VITE_ENABLE_ANALYTICS=true
VITE_ENABLE_BETA_FEATURES=false

การตั้งค่าเฉพาะ Environment

ตั้งค่าต่างกันสำหรับ variable เดียวกันในแต่ละ target:
  • Sandbox: EXTERNAL_API_URL=http://localhost:8000
  • Preview: EXTERNAL_API_URL=https://api-staging.example.com
  • Production: EXTERNAL_API_URL=https://api.example.com

ต้องการความช่วยเหลือเกี่ยวกับ environment variables? ติดต่อทีมสนับสนุนของเราผ่าน dashboard ของคุณ