PATIPHAN DEV
หน้าแรกคอร์สเรียนผลงานสินค้าบทความเกี่ยวกับผมติดต่อ
เข้าสู่ระบบ
ศัพท์และพื้นฐาน Claude สำหรับผู้เริ่มต้น
ความคืบหน้า0/15 บทเรียน (0%)

บทที่ 1 · รู้จัก Claude ก่อนเริ่มใช้งาน

  • Claude คืออะไร มีกี่แบบ ต่างกันตรงไหน15 นาที
  • รู้จักตระกูลโมเดล Claude: Opus, Sonnet, Haiku, Fable เลือกใช้ตัวไหนดี18 นาที
  • Prompt, Token และ Context Window คืออะไร15 นาที

บทที่ 2 · ไฟล์และโฟลเดอร์สำคัญที่ Claude Code ใช้

  • CLAUDE.md ทำหน้าที่อะไร ต่างจาก README ยังไง15 นาที
  • settings.json กับ settings.local.json ต่างกันตรงไหน18 นาที
  • ข้างในโฟลเดอร์ .claude/ มีอะไรบ้าง18 นาที

บทที่ 3 · ศัพท์เทคนิคที่เจอบ่อยตอนใช้งาน

  • Subagent คืออะไร ใช้ตอนไหน16 นาที
  • Skill กับ Slash Command ต่างกันยังไง16 นาที
  • MCP (Model Context Protocol) คืออะไร ทำไมสำคัญ18 นาที

บทที่ 4 · เตรียมพร้อมก่อนเริ่มใช้งานจริง

  • ศัพท์ที่เจอบ่อยแบบสรุปย่อ (Cheat Sheet)12 นาที
  • คำถามที่พบบ่อยสำหรับผู้เริ่มต้น (FAQ)15 นาที
100%

.env และการเก็บ API key อย่างปลอดภัย

ใช้เวลาประมาณ 15 นาที

ในบทนี้

  1. 1..env คืออะไร และทำไมต้องมี
  2. 2.ทำไมห้าม commit เข้า git เด็ดขาด
  3. 3.Claude Code อ่าน API key จากตรงไหน
  4. 4.เก็บ secret อย่างปลอดภัยเมื่อทำงานกับ Claude Code
  5. 5.สรุป

.env คืออะไร และทำไมต้องมี

ไฟล์ .env คือไฟล์เก็บ environment variable ของโปรเจกต์ ซึ่งมักใช้เก็บค่าที่เป็นความลับหรือค่าที่เปลี่ยนไปตามเครื่อง/สภาพแวดล้อม เช่น API key, connection string ของฐานข้อมูล, token สำหรับเชื่อมต่อบริการภายนอก

รูปแบบไฟล์เป็น key-value ธรรมดา:

ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxx
DATABASE_URL=postgres://user:pass@host:5432/dbname
NEXT_PUBLIC_SITE_URL=https://patiphandev.com

ไฟล์นี้ไม่เกี่ยวกับ CLAUDE.md หรือ settings.json โดยตรง — มันเป็นกลไกมาตรฐานของ ecosystem การพัฒนาซอฟต์แวร์ทั่วไป (Node.js, Next.js, Python ฯลฯ) ที่แอปพลิเคชันของคุณอ่านค่าจากตัวแปรเหล่านี้ตอนรัน ไม่ใช่ hardcode ค่าไว้ในโค้ด

ทำไมห้าม commit เข้า git เด็ดขาด

กฎเหล็ก

ไฟล์ .env (และไฟล์ตระกูลเดียวกันอย่าง .env.local, .env.production) ต้องอยู่ใน เสมอ เพราะถ้าหลุดเข้า git แม้จะลบออกในภายหลัง ค่า secret นั้นจะยังอยู่ใน git history ตลอดไป (ยกเว้นจะ rewrite history ทั้งหมด) ผู้ไม่หวังดีที่เข้าถึง repo หรือ commit history จะเห็น API key/password ได้ทันที

บทถัดไป

Subagent คืออะไร ใช้ตอนไหน

ใช้เวลาประมาณ 16 นาที

บทก่อนหน้า: ข้างในโฟลเดอร์ .claude/ มีอะไรบ้าง
.env และการเก็บ API key อย่างปลอดภัย
15 นาที
Hook คืออะไร ใช้ทำอะไรได้บ้าง
16 นาที
  • Permission Mode คืออะไร ควบคุมอะไรบ้าง15 นาที
  • Plan Mode คืออะไร ช่วยอะไรก่อนลงมือทำงานจริง14 นาที
  • .gitignore

    วิธีตรวจสอบเบื้องต้น:

    # .gitignore
    .env
    .env.local
    .env.*.local
    

    ถ้าเผลอ commit ไปแล้ว ขั้นตอนที่ถูกต้องคือ หมุน (rotate) key ตัวนั้นทันที ผ่าน dashboard ของผู้ให้บริการ (เช่น สร้าง API key ใหม่แล้วเพิกถอนตัวเก่า) การลบไฟล์ออกจาก commit ล่าสุดอย่างเดียวไม่พอ เพราะ key เดิมยังอยู่ใน history

    Claude Code อ่าน API key จากตรงไหน

    Claude Code เอง (ตัว CLI) จะมองหา environment variable ชื่อ ANTHROPIC_API_KEY เพื่อยืนยันตัวตนกับ API ถ้าตั้งค่าไว้ในเครื่อง Claude Code จะใช้ค่านั้น

    ระวังเรื่องการเรียกเก็บเงินซ้ำ

    ถ้าคุณ login เข้า Claude Code ด้วย subscription (เช่น Claude Pro/Max ผ่าน claude.ai) แต่ในเครื่องหรือใน .env มีการตั้งค่า ANTHROPIC_API_KEY ไว้ด้วย ระบบจะใช้ค่า API key นั้นเรียกเก็บเงินแบบ pay-as-you-go แยกต่างหากจาก subscription โดยไม่รู้ตัว ถ้าต้องการใช้โควตาจาก subscription เพียงอย่างเดียว ให้ตรวจสอบว่าไม่มีตัวแปร ANTHROPIC_API_KEY ค้างอยู่ในเครื่องหรือไฟล์ env ใดๆ

    มีสองวิธีหลักในการตั้งค่าตัวแปรนี้:

    1. ผ่าน shell config เช่นเพิ่มใน ~/.zshrc: export ANTHROPIC_API_KEY="your-key" แล้ว source ~/.zshrc
    2. ผ่าน settings.json ด้วย field env ที่กล่าวถึงในบทก่อนหน้า — Claude Code จะอ่านค่าจากไฟล์ settings ตอนเริ่มทำงานโดยตรง ไม่ว่าจะเปิดโปรแกรมด้วยวิธีไหนก็ตาม

    ส่วน .env ของตัวโปรเจกต์ (เช่นเว็บแอป Next.js ที่ Claude Code กำลังช่วยพัฒนาอยู่) เป็นคนละเรื่องกับ authentication ของตัว Claude Code CLI เอง — .env ของโปรเจกต์คือค่าที่แอปพลิเคชันของคุณเองต้องใช้ตอนรัน เช่น database URL หรือ third-party API key ที่แอปเรียกใช้

    เก็บ secret อย่างปลอดภัยเมื่อทำงานกับ Claude Code

    เพิ่มกฎใน CLAUDE.md หรือ permissions.deny ใน settings.json เพื่อกันไม่ให้ Claude อ่านไฟล์ secret โดยไม่ตั้งใจ เช่น:

    {
      "permissions": {
        "deny": ["Read(./.env)", "Read(./.env.*)", "Read(./secrets/**)"]
      }
    }
    

    การตั้งค่านี้ทำให้ Claude Code ปฏิเสธการอ่านไฟล์เหล่านี้แม้จะถูกขอให้อ่านก็ตาม เป็นการป้องกันระดับ client ที่ไม่ขึ้นกับว่า Claude จะ "ตัดสินใจ" อย่างไร ต่างจาก CLAUDE.md ที่เป็นแค่คำแนะนำ

    แนวทางปฏิบัติที่ควรทำเป็นนิสัย:

    • แยกไฟล์ .env.example ที่มีแค่ชื่อตัวแปร (ไม่มีค่าจริง) ไว้ commit เข้า git เพื่อให้ทีมรู้ว่าต้องตั้งค่าอะไรบ้าง
    • ไม่ hardcode secret ไว้ในไฟล์ config อื่นที่ต้อง commit เช่น settings.json, Dockerfile, หรือ CI YAML
    • ใช้ secret manager ของ platform ที่ deploy จริง (เช่น environment variables ในหน้า dashboard ของ hosting) แทนการฝัง .env ไปกับ production build
    • หมุน key เป็นระยะ และหมุนทันทีถ้าสงสัยว่าหลุด

    สรุป

    .env คือกลไกมาตรฐานสำหรับเก็บค่าลับที่แอปพลิเคชันต้องใช้ตอนรัน ไม่ใช่ของเฉพาะ Claude Code แต่เพราะ Claude Code ทำงานใกล้ชิดกับไฟล์ในโปรเจกต์คุณมาก การเข้าใจว่าไฟล์นี้ต้องไม่หลุดเข้า git และควรกันไม่ให้ Claude อ่านโดยไม่จำเป็น (ผ่าน permissions.deny) จะช่วยป้องกันเหตุการณ์ secret รั่วไหลได้ตั้งแต่ต้นทาง