การเข้าถึงสภาพแวดล้อมการพัฒนา ServBay ภายในเครือข่ายท้องถิ่น (LAN)
สำหรับทีมพัฒนาเล็ก ๆ หรือผู้พัฒนาเดี่ยวที่ต้องการทดสอบการทำงานข้ามอุปกรณ์ การเข้าถึงสภาพแวดล้อมการพัฒนา ServBay บนเครื่องอื่น ๆ ในเครือข่าย LAN ถือเป็นความต้องการที่พบได้บ่อยและสำคัญ ServBay ได้รับการออกแบบมาเพื่อให้บริการหลักส่วนใหญ่นั้นสามารถเข้าถึงผ่าน LAN ได้โดยตรง แต่บางบริการอาจต้องมีการตั้งค่าเพิ่มเติมเพื่อความปลอดภัยและประสิทธิภาพ
บทความนี้จะอธิบายรายละเอียดการกำหนดค่าและวิธีเข้าถึงเว็บไซต์และบริการฐานข้อมูลของ ServBay ในเครือข่ายท้องถิ่นของคุณ
เงื่อนไขเบื้องต้น
ก่อนที่คุณจะเข้าถึงบริการของ ServBay ผ่าน LAN ได้ ควรตรวจสอบให้แน่ใจว่ามีเงื่อนไขต่อไปนี้:
- เครือข่ายเดียวกัน: เครื่องที่รัน ServBay (ต่อไปจะเรียกว่า "โฮสต์") และเครื่องลูกข่ายที่ต้องการเข้าถึง ("ไคลเอนต์") ต้องอยู่ในเครือข่าย LAN เดียวกัน
- รู้ IP โฮสต์: คุณต้องรู้ที่อยู่ IP ภายในของโฮสต์ในเครือข่าย สามารถดูได้จากการตั้งค่าเครือข่ายของโฮสต์
- ตั้งค่ากำแพงไฟถูกต้อง: หากโฮสต์มีไฟร์วอลล์เปิดไว้ ต้องอนุญาตการเข้าถึงพอร์ตที่จำเป็นของ ServBay จากภายนอก (เช่น HTTP = 80, HTTPS = 443, MySQL = 3306, PostgreSQL = 5432, Redis = 6379 ฯลฯ) ตามบริการที่ต้องการเปิดให้ภายนอกเข้าถึง แนะนำให้ตั้งค่ารายการควบคุมการเข้าถึง (ACL) เพื่อจำกัดระยะ IP ที่อนุญาต (ถ้าต้องการ)
เว็บไซต์ (Website)
โดยปกติ เว็บไซต์ที่ตั้งค่าผ่าน ServBay จะฟังอินเตอร์เฟซเครือข่ายทั้งหมดของเครื่องโฮสต์ (เช่น 0.0.0.0
หรือ *
) ทำให้อุปกรณ์อื่นใน LAN สามารถเข้าถึงได้ทันที ServBay ใช้ Caddy หรือ Nginx เป็นเว็บเซิร์ฟเวอร์ ซึ่งโดยดีฟอลต์จะตั้งค่าให้ฟังเครือข่ายทั้งหมด
อย่างไรก็ตาม หากต้องการเข้าถึงเว็บไซต์ในฐานะโดเมนผ่านเบราว์เซอร์ที่เครื่องลูกข่าย จำเป็นต้องกำหนดค่า DNS ให้ถูกต้อง นอกจากนี้ หากเว็บไซต์ของคุณใช้ใบรับรอง SSL ที่ ServBay สร้างขึ้น (แนะนำอย่างยิ่ง) ผู้เข้าถึงจำเป็นต้องติดตั้งใบรับรองรากของ ServBay ด้วยเพื่อหลีกเลี่ยงการแจ้งเตือนความปลอดภัยจากเบราว์เซอร์
ตัวอย่างสถานการณ์:
- IP ภายในของโฮสต์:
10.0.0.3
- โดเมนเว็บไซต์ ServBay:
servbay.demo
- โฟลเดอร์รากเว็บไซต์:
/Applications/ServBay/www/servbay.demo
การตั้งค่าการชี้โดเมน (DNS)
เครื่องลูกข่ายต้องรู้ว่า servbay.demo
ชี้ไปที่ 10.0.0.3
มี 2 วิธีหลักสำหรับการตั้งค่า:
แก้ไข Hosts file ของเครื่องลูกข่าย: ง่ายและเหมาะสำหรับจำนวนคอมพิวเตอร์เล็กน้อย
- หาไฟล์ Hosts ในเครื่องลูกข่าย
- macOS/Linux:
/etc/hosts
- Windows:
C:\Windows\System32\drivers\etc\hosts
- macOS/Linux:
- เปิดไฟล์ด้วยสิทธิ์แอดมิน แล้วเพิ่มบรรทัดนี้ด้านล่างสุด:
10.0.0.3 servbay.demo
1 - เซฟไฟล์นั้น การเข้าเว็บ
servbay.demo
จะชี้ไปที่10.0.0.3
- หาไฟล์ Hosts ในเครื่องลูกข่าย
ตั้ง DNS ใน LAN: หาก LAN มี DNS Server ของตนเอง (เช่นเราท์เตอร์หรือบริการ DNS เฉพาะ), ให้เพิ่ม A Record ชื่อ
servbay.demo
ชี้ไปยัง IP10.0.0.3
จากนั้นอุปกรณ์ใด ๆ ที่ใช้ DNS เซิร์ฟเวอร์นี้จะรู้จักโดเมนนี้ทันที
แจกจ่ายและติดตั้งใบรับรองรากของ ServBay (SSL)
ServBay มาพร้อมระบบ PKI สำหรับสร้างใบรับรองรากของผู้ใช้ (ServBay User CA) เพื่อเซ็นใบรับรอง SSL ให้กับเว็บไซต์ในเครื่อง เมื่อลูกข่ายจะเข้าถึง HTTPS ที่ออกใบรับรองโดย CA นี้ จำเป็นต้องติดตั้งและเชื่อถือใบรับรองรากดังกล่าวในระบบปฏิบัติการหรือเบราว์เซอร์ของตน
คุณต้องส่งออก (Export) ใบรับรองราก ServBay User CA แล้วแจกลูกข่ายใน LAN พร้อมคำแนะนำให้ติดตั้งและเพิ่มความเชื่อถือในระบบหรือเบราว์เซอร์เอง
สำหรับขั้นตอนการส่งออกและติดตั้งใบรับรอง ดูรายละเอียดในหัวข้อเกี่ยวกับการจัดการ SSL certificate ของ ServBay ในคู่มือหรือส่วนการส่งออกใบรับรองและการติดตั้งบน OS/เบราว์เซอร์
ฐานข้อมูล
ServBay รองรับทั้ง MySQL, MariaDB, PostgreSQL, MongoDB ตลอดจน Redis และ Memcached ที่นิยมใช้ในโหมด in-memory โดยแต่ละบริการมีแนวทางการตั้งค่าการฟังเครือข่ายและสิทธิ์ผู้ใช้ไม่เหมือนกัน
MySQL / MariaDB
ค่าดีฟอลต์ของ MySQL และ MariaDB ใน ServBay จะฟังอินเทอร์เฟซเครือข่ายทั้งหมด (0.0.0.0
) นั่นคือสามารถรับการเชื่อมต่อจาก LAN ได้ทันที
อย่างไรก็ตาม MySQL/MariaDB จะมีระบบยืนยันสิทธิ์ผู้ใช้ที่เข้มงวด แม้จะสามารถเชื่อมต่อผ่านเครือข่ายได้ ผู้ใช้ต้องมีสิทธิ์จาก IP ที่เข้าใช้งานเท่านั้น
โดยปกติผู้ใช้ root
จะอนุญาตเฉพาะจาก 127.0.0.1
หรือ localhost
หากต้องการให้เชื่อมต่อจาก LAN ได้ จำเป็นต้องสร้างผู้ใช้ใหม่หรือแก้ไขสิทธิ์ของผู้ใช้เดิม ให้อนุญาตจาก IP ของเครื่องลูกข่ายหรือแบบอนุโลมทุก IP (%
)
ตัวอย่างการสร้าง User servbay-demo
ที่อนุญาตการเชื่อมต่อจากทุกที่ใน LAN (%
) และให้สิทธิ์บนฐานข้อมูลหนึ่ง:
sql
-- สมมติว่าได้เข้าสู่ระบบเป็น root หรือ user ที่มีสิทธิ์เพียงพอแล้ว
CREATE USER 'servbay-demo'@'%' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON `your_database_name`.* TO 'servbay-demo'@'%';
FLUSH PRIVILEGES;
1
2
3
4
2
3
4
โปรดเปลี่ยน 'your_strong_password'
และ your_database_name
ให้ตรงกับความต้องการ
คำเตือนด้านความปลอดภัย: การอนุญาตให้เชื่อมต่อจากทุกที่ (%
) และให้สิทธิ์มากเกินไป เปิดช่องโหว่ความปลอดภัย หากเป็น production หรือ LAN ที่ไม่ปลอดภัย ควรจำกัด IP เฉพาะ ('servbay-demo'@'10.0.0.5'
) หรือใช้วิธีเชื่อมต่อที่ปลอดภัยกว่าอย่าง VPN
ServBay มีฟีเจอร์รีเซ็ตรหัสผ่าน root ของ MySQL/MariaDB ได้ หรือจะบริหารจัดการสิทธิ์ผ่านโปรแกรม client อื่น ๆ ก็ได้เช่นกัน
Redis
ค่าเริ่มต้นของ Redis ใน ServBay จะฟังแค่ loopback (127.0.0.1
) คือรับเฉพาะ localhost ไม่อนุญาตจาก LAN ด้วยเหตุผลด้านความปลอดภัย เพราะ Redis ไม่มีระบบยืนยันรหัสผ่านโดยดีฟอลต์
หากต้องการเปิดให้เข้าจาก LAN ต้องแก้ไขไฟล์ตั้งค่า redis.conf
ดังนี้
คุณสามารถเลือกดำเนินการได้ 2 ทาง:
1. ผ่านหน้าจอ UI ของ ServBay
- เปิด ServBay > เมนูด้านซ้ายเลือก
ฐานข้อมูล
>Redis
- ในหน้าตั้งค่าด้านขวา ติ๊กเลือก
Require Password
แล้วกรอกรหัสผ่านลงไป - กด
บันทึก
2. แก้ไขไฟล์ redis.conf
ด้วยตนเอง (ไม่แนะนำ)
- หาไฟล์ตั้งค่าของ Redis ใน ServBay (โดยมากอยู่ใน
/Applications/ServBay/etc/redis/redis.conf
) - เปิด
redis.conf
ด้วย text editor - ค้นหาบรรทัด
bind 127.0.0.1
- เปลี่ยนเป็น
bind 0.0.0.0
หรือคอมเมนต์ทิ้ง (# bind 127.0.0.1
) เพื่อให้ Redis ฟังทุกเครือข่าย - [สำคัญอย่างยิ่ง] หาบรรทัด
requirepass
(อาจถูกคอมเมนต์อยู่) ให้ uncomment แล้วตั้งรหัสผ่านที่แข็งแรงอย่านำ Redis ไปเปิดให้คนใน LAN หรืออินเทอร์เน็ตเข้าถึง หากยังไม่ได้ตั้งรหัสผ่านเด็ดขาด! เสี่ยงโดนโจมตีสูงrequirepass your_very_strong_redis_password
1 - บันทึกไฟล์
- รีสตาร์ท Redis ผ่าน ServBay
ต่อจากนี้ ลูกข่ายจะเชื่อมต่อ Redis ได้โดยใช้ IP โฮสต์กับรหัสผ่านที่คุณตั้งไว้
PostgreSQL
PostgreSQL ใน ServBay ถูกตั้งให้ฟังแค่ loopback (127.0.0.1
) เช่นเดียวกับ Redis คือไม่สามารถเชื่อมต่อจาก LAN ได้โดยตรง
หากต้องการอนุญาต ต้องแก้ไขไฟล์สำคัญ 2 ไฟล์ คือ postgresql.conf
และ pg_hba.conf
หาไฟล์
postgresql.conf
และpg_hba.conf
(โดยมากอยู่ใน/Applications/ServBay/etc/postgresql/
)แก้ไข
postgresql.conf
:- เปิดไฟล์ด้วย text editor
- ค้นหาบรรทัด
listen_addresses
(อาจจะถูกคอมเมนต์) - เอา # ออกแล้วตั้งค่าเป็น
'*'
:listen_addresses = '*'
1 - เซฟไฟล์
แก้ไข
pg_hba.conf
:- เปิดไฟล์นี้ด้วย text editor นี่คือไฟล์ที่จะระบุสิทธิเข้าถึงโดยละเอียด
- เพิ่มบรรทัดนี้เพื่ออนุญาตเครื่องจาก IP ในเครือข่ายย่อย
10.0.0.0/24
ให้เชื่อมต่อแบบใช้พาสเวิร์ด (md5) ถึงฐานข้อมูลใด ๆ:# TYPE DATABASE USER ADDRESS METHOD host all all 10.0.0.0/24 md5
1
2TYPE
:host
= เชื่อมต่อผ่าน TCP/IPDATABASE
:all
= ฐานข้อมูลใดก็ได้ หรือระบุเฉพาะชื่อUSER
:all
= ผู้ใช้ใดก็ได้ หรือระบุชื่อADDRESS
:10.0.0.0/24
= เครือข่ายตัวอย่าง (จาก10.0.0.1
ถึง10.0.0.254
) หรือจะระบุ IP เดี่ยว ๆ หรือ0.0.0.0/0
(เปิดกว้างทุก IPv4 - ไม่แนะนำเลยนอกจากมีไฟร์วอลล์หนักมาก)METHOD
:md5
= ขอรหัสผ่านแบบ MD5 (แนะนำสำหรับ remote) หลีกเลี่ยงtrust
หรือpassword
(ส่งผ่าน plain text)
- เซฟไฟล์
รีสตาร์ท PostgreSQL ผ่าน ServBay ให้ค่าที่เปลี่ยนมีผล
ลูกข่ายสามารถใช้ IP โฮสต์บน LAN, ชื่อยูสเซอร์ PostgreSQL และรหัสผ่านที่ถูกต้องเพื่อเชื่อมต่อได้
ServBay รองรับการรีเซ็ตรหัสผ่าน root (postgres) ได้ รวมถึงการจัดการสิทธิผู้ใช้ผ่านฟังก์ชันหรือเครื่องมือ client ภายนอก
Memcached
Memcached เป็นระบบแคชข้อมูลในหน่วยความจำประสิทธิภาพสูง โดยออกแบบมาอย่างง่ายมาก ไม่มีระบบ authentication หรือ authorization ในตัว
ดังนั้น, ไม่แนะนำ อย่างยิ่งให้เปิด Memcached ใน LAN หรือสาธารณะ ยกเว้นคุณมีมาตรการเครือข่ายที่ปลอดภัยเพียงพอ (เช่น จำกัดเฉพาะเซกเมนต์ที่ไว้ใจได้และคุมผ่านไฟร์วอลล์)
ServBay สามารถตั้งค่า Memcached ให้ฟัง IP ใน LAN ได้ แต่คุณต้องยอมรับความเสี่ยงโดยไม่มีระบบรหัสผ่านหรือยืนยันตัวตน
หมายเหตุด้านความปลอดภัย
การเปิดบริการใน LAN เพื่อความสะดวกในการร่วมงานและทดสอบนั้นควบคู่กับความเสี่ยงเสมอ ควรคำนึงถึงข้อแนะนำเหล่านี้
- ไฟร์วอลล์: ใช้ไฟร์วอลล์ควบคุมการเข้าถึงพอร์ตต่าง ๆ ของ ServBay เสมอ เปิดเฉพาะช่วง IP ที่ไว้ใจได้ใน LAN
- รหัสผ่านแข็งแรง: ตั้งรหัสผ่านที่คาดเดายากสำหรับ MySQL/MariaDB/PostgreSQL และ Redis และเปลี่ยนรหัสผ่านเป็นระยะ
- สิทธิ์ขั้นต่ำ: กำหนดให้ user ของฐานข้อมูลมีสิทธิ์ต่ำสุดเท่าที่จำเป็น หลีกเลี่ยงใช้ root หรือ postgres สำหรับเข้าใช้งานทางไกลเป็นประจำ
- ความปลอดภัย Memcached: ย้ำเตือนว่า Memcached ไม่มีระบบความปลอดภัยในตัว ควรเข้าถึงผ่าน SSH tunnel หรือวิธีที่ปลอดภัยกว่า
- อัปเดตระบบ: หมั่นอัปเดตระบบปฏิบัติการ เซิร์ฟเวอร์ ServBay และแพคเกจที่เกี่ยวข้องให้เป็นเวอร์ชันล่าสุดเสมอ เพื่อความปลอดภัย
ปฏิบัติตามขั้นตอนและคำแนะนำเหล่านี้ จะช่วยให้การแชร์และเข้าถึงสภาพแวดล้อมพัฒนา ServBay ผ่านเครือข่ายท้องถิ่นปลอดภัยและมีประสิทธิภาพมากขึ้น