สิ่งที่ต้องมี
สิ่งที่ต้องเตรียมก่อนติดตั้ง 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/auth | authorization-server |
/api/item/<id>/actions/getTile/ | tile-services |
/api/item | item-services |
/api/file | file-services |
/api/log | logging-services |
/api/realtime | realtime-services |
/api ที่เหลือทั้งหมด | core-services |
path ของแต่ละแอป เช่น /drive/ | คอนเทนเนอร์ของแอปนั้น |
ทุก path ที่ไม่ตรงกับแถวข้างบน รวมถึง / | portal |
แถวสุดท้ายต้องมีลำดับต่ำที่สุด เพื่อให้ทุกอย่างที่ไม่มีใครรับไปที่ portal ซึ่งตอบหน้า 404 ของแพลตฟอร์มให้ด้วย ถ้า proxy ส่ง / ไปที่อื่น หน้าแรกของแพลตฟอร์มจะไม่ขึ้น
แล้วตั้งให้ proxy ลบ header X-Auth-* ออกจากทุกคำขอที่เข้า /api