ใช้ gcp-compute.sh เป็น Startup script เมื่อสร้างอินสแตนซ์ VM ของ Compute Engine สคริปต์ทำงานอัตโนมัติเมื่อบูตครั้งแรก

ดาวน์โหลดสคริปต์: gcp-compute.sh


ขั้นตอนที่ 1 — กรอกการกำหนดค่า

เปิดสคริปต์และแก้ไขบล็อก CONFIGURATION ที่ด้านบน:

  # --- ต้องมี ---
PROJECT_ID="rtsurvey"
ADMIN_PASSWORD="admin"                       # เปลี่ยนหลังเข้าสู่ระบบครั้งแรก

# --- โดเมน + SSL ---
DOMAIN="myapp.example.com"
LETSENCRYPT_EMAIL="admin@example.com"

# --- Keycloak แบบฝัง ---
EMBED_KEYCLOAK="true"
KEYCLOAK_ADMIN_PASSWORD="${ADMIN_PASSWORD}"  # ค่าเริ่มต้นเป็น ADMIN_PASSWORD
  
ฟิลด์ต้องมีคำอธิบาย
PROJECT_IDใช่ใช้เป็นชื่อฐานข้อมูลและ Keycloak client ID ตัวเล็ก ไม่มีช่องว่าง
ADMIN_PASSWORDไม่รหัสผ่านผู้ดูแลระบบแอปและ Keycloak ค่าเริ่มต้นเป็น adminเปลี่ยนหลังเข้าสู่ระบบครั้งแรก
DOMAINไม่โดเมนของคุณสำหรับ HTTPS เว้นว่างสำหรับโหมด HTTP เท่านั้น
LETSENCRYPT_EMAILใช่ (ถ้าตั้ง DOMAIN)อีเมลสำหรับการแจ้งเตือน Let’s Encrypt
EMBED_KEYCLOAKไม่true เพื่อติดตั้ง Keycloak แบบฝัง (ต้องการ RAM 4 GB)

ความปลอดภัย: รหัสผ่านทั้งหมดเริ่มต้นเป็น admin เปลี่ยนทันทีหลังจากเข้าสู่ระบบครั้งแรก


ขั้นตอนที่ 2 — สร้างอินสแตนซ์ VM

ใน Google Cloud Console:

  1. คลิก Create instance
  2. Machine configuration:
    • Series: E2
    • Machine type: e2-medium (4 GB RAM) หรือใหญ่กว่า
  3. Boot disk:
    • Operating system: Ubuntu
    • Version: Ubuntu 22.04 LTS
    • Size: 40 GB หรือมากกว่า
  4. Firewall: ทำเครื่องหมาย Allow HTTP traffic และ Allow HTTPS traffic
  5. Advanced optionsManagementAutomationStartup script → วางเนื้อหาสคริปต์ทั้งหมด
  6. คลิก Create

ขั้นตอนที่ 3 — เพิ่ม DNS record

ขณะที่ VM บูต ให้เพิ่ม A record ในผู้ให้บริการ DNS ของคุณ:

  Type  : A
Name  : myapp
Value : <vm-external-ip>
TTL   : 300
  

ค้นหา external IP ในรายการ VM instances ใน console


ขั้นตอนที่ 4 — ตรวจสอบความคืบหน้า

ใช้ gcloud CLI:

  gcloud compute ssh <instance-name> -- tail -f /var/log/rtcloud-setup.log
  

หรือ SSH โดยตรง:

  ssh <username>@<vm-external-ip>
tail -f /var/log/rtcloud-setup.log
  

ขั้นตอนที่ 5 — เข้าถึงแอป

เมื่อการตั้งค่าเสร็จสิ้น ล็อกแสดงสรุปพร้อม URL แอปและข้อมูลประจำตัว เข้าสู่ระบบด้วยชื่อผู้ใช้ admin และรหัสผ่าน admin แล้วเปลี่ยนรหัสผ่านทันที


กฎไฟร์วอลล์

ช่องทำเครื่องหมาย Allow HTTP/HTTPS ของ GCP เปิดพอร์ต 80 และ 443 เพื่ออนุญาตการเข้าถึง Shiny โดยตรงบนพอร์ต 3838 ให้เพิ่มกฎไฟร์วอลล์:

  gcloud compute firewall-rules create allow-shiny \
  --allow tcp:3838 \
  --target-tags http-server
  

หรือเพิ่มผ่าน console: VPC NetworkFirewallCreate rule

อย่า เปิดพอร์ต 3306 (MySQL) — ไม่ควรเข้าถึงได้สาธารณะ


Static IP (ไม่บังคับ)

ตามค่าเริ่มต้น GCP กำหนด external IP แบบชั่วคราวที่เปลี่ยนเมื่อรีสตาร์ท VM เพื่อรักษา IP ที่เสถียร:

  1. ไปที่ VPC NetworkIP addresses
  2. คลิก Reserve external static address
  3. กำหนดให้กับอินสแตนซ์ VM ของคุณ

หลังการติดตั้ง

เปลี่ยนรหัสผ่าน

  nano /opt/rtcloud/.env
docker compose -f /opt/rtcloud/docker-compose.production.yml up -d --force-recreate rtcloud
  

ดูคอนเทนเนอร์ทั้งหมด

  docker compose -f /opt/rtcloud/docker-compose.production.yml ps
  
หน้านี้มีประโยชน์หรือไม่?