คู่มือ aWhere
ติดตั้งและดูแลแพลตฟอร์ม

สิ่งที่ต้องมี

สิ่งที่ต้องเตรียมก่อนติดตั้ง aWhere และเงื่อนไขของฐานข้อมูลกับ proxy ถ้าใช้ของคุณเอง

หน้านี้บอกว่าต้องเตรียมอะไรบ้างก่อนติดตั้ง aWhere

สิ่งที่ต้องเตรียม

  • Docker และ Docker Compose เวอร์ชัน 2.17 ขึ้นไป ติดตั้งตามคู่มือของ Docker ใช้เครื่องไหนก็ได้ที่รัน Docker ได้ ถ้าเป็น macOS 26 ขึ้นไป จะใช้ Apple Container แทนก็ได้
  • curl และ openssl
  • ชื่อผู้ใช้และรหัสผ่านของ registry registry.mapboss.co.th ซึ่ง aWhere จะให้มา
  • ที่อยู่เว็บที่ผู้ใช้จะเปิด เช่น https://app.example.com
  • (เฉพาะ Docker) พอร์ต 80 ต้องว่าง เพราะ proxy ที่มากับระบบใช้พอร์ตนี้ ถ้าใช้พอร์ต 80 ไม่ได้ ให้เลือกพอร์ตอื่นตอนติดตั้ง เช่น awhere setup --http-port 8080 ถ้าใช้ Apple Container ข้ามข้อนี้ได้เลย

MongoDB, NATS และ Redis มากับระบบอยู่แล้ว ไม่ต้องติดตั้งเอง

ถ้าใช้ฐานข้อมูลของคุณเอง

ถ้าจะใช้ MongoDB, NATS และ Redis ที่มีอยู่แล้วแทนตัวที่มากับระบบ ให้ระบุที่อยู่ตอนรัน awhere setup ใช้ได้ทั้งบน Docker และ Apple Container

awhere setup --infra external \
  --datastore-url 'mongodb://user:password@db.example.com:27017/awhere?authSource=admin' \
  --content-store-url 'mongodb://user:password@db.example.com:27017/awhere-content?authSource=admin&replicaSet=rs0' \
  --session-store-url 'mongodb://user:password@db.example.com:27017/awhere-session?authSource=admin' \
  --log-store-url 'mongodb://user:password@db.example.com:27017/awhere-log?authSource=admin' \
  --nats-url nats://nats.example.com:4222 \
  --redis-url 'redis://:password@redis.example.com:6379'

MongoDB

  • ใช้เวอร์ชัน 4.2 ขึ้นไป ส่วนฐานข้อมูลของ log ต้องเป็น 5.0 ขึ้นไป
  • ฐานข้อมูล content ต้องเป็น replica set จะมีสมาชิกตัวเดียวก็ได้ แล้วใส่ชื่อ replica set ไว้ใน URL ด้วย replicaSet=<name>
  • ผู้ใช้ใน --content-store-url ต้องมีสิทธิ์ changeStream และ find บนฐานข้อมูล content และมีสิทธิ์ readWrite บน awhere-tiles
  • ถ้าบัญชีผู้ใช้อยู่ในฐานข้อมูลอื่น ซึ่งปกติคือ admin ให้ใส่ authSource ใน URL ด้วย ส่วนรหัสผ่านที่มีอักขระพิเศษต้อง percent-encode ก่อนใส่

NATS

ต้องเปิด JetStream โดยรัน NATS ด้วย -js และให้ JetStream เก็บข้อมูลไว้ใน volume ที่ไม่หายไปพร้อมคอนเทนเนอร์ ถ้าไม่มี JetStream logging-services จะไม่ยอมเริ่มทำงาน

Redis

background-services ใช้ Redis เก็บคิวงานนำเข้าข้อมูล ระบบไม่ตรวจเวอร์ชันของ Redis

เฉพาะ Apple Container: ถ้าใช้ proxy ของคุณเอง

ถ้าใช้ Docker ข้ามหัวข้อนี้ได้เลย

บน Docker มี proxy มาให้แล้ว แต่ Apple Container ไม่มี จึงต้องตั้ง proxy เอง ให้ส่งแต่ละ path ไปที่คอนเทนเนอร์ตามตารางนี้ โดยไม่ตัด prefix ของ path ออก และให้กฎที่ยาวกว่ามาก่อน

pathส่งไปที่
/api/authauthorization-server
/api/item/<id>/actions/getTile/tile-services
/api/itemitem-services
/api/filefile-services
/api/loglogging-services
/api/realtimerealtime-services
/api ที่เหลือทั้งหมดcore-services
path ของแต่ละแอป เช่น /drive/คอนเทนเนอร์ของแอปนั้น
ทุก path ที่ไม่ตรงกับแถวข้างบน รวมถึง /portal

แถวสุดท้ายต้องมีลำดับต่ำที่สุด เพื่อให้ทุกอย่างที่ไม่มีใครรับไปที่ portal ซึ่งตอบหน้า 404 ของแพลตฟอร์มให้ด้วย ถ้า proxy ส่ง / ไปที่อื่น หน้าแรกของแพลตฟอร์มจะไม่ขึ้น

แล้วตั้งให้ proxy ลบ header X-Auth-* ออกจากทุกคำขอที่เข้า /api

ในหน้านี้