By Arnon Puitrakul - 24 เมษายน 2020
เมื่อตอนก่อนเราก็ได้รีวิว UniFi Access Point ที่เราใช้งานไป ซึ่งของชิ้นนึงที่ต้องใช้คือ Controller นั่นเอง ซึ่งเราได้ลองติดตั้งใน Raspberry Pi มาแล้วไว้จะมาเล่าเป็นอีกบทความความนึง อันนั้นมันจะยาว วันนี้เอาอันที่เราใช้ก่อน นั่นคือ การลงผ่าน Docker นั่นเอง
โดยที่เราใช้ Docker ที่อยู่บน Unraid ก็จะทำให้เราติดตั้งและใช้งานได้ง่าย ซึ่งถ้าไม่ได้ใช้งาน Unraid ก็ใช้เป็น Docker ธรรมดาเลยก็ได้เหมือนกัน ที่เราใช้ Unraid เพื่อให้ง่ายสำหรับเราเฉย ๆ เท่านั้นแหละ
สำหรับเครื่องที่จะติดตั้ง เราแนะนำให้เช็คเรื่องของ RAM ให้ดีก่อน เท่าที่เราดูจาก Memory Usage ในการใช้งานจริงแล้ว เราพบว่า มันจะใช้อยู่ราว ๆ 800-900 MB ในบ้านเรานะ ไม่แน่ใจว่า ระบบใหญ่กว่านี้มันจะกินเยอะขนาดไหน ไม่สามารถทดสอบได้จริง ๆ เพราะไม่มี Hardware
ส่วน CPU เท่าที่ดูตอนนี้วิ่งอยู่ประมาณ 0.1% ตลอดเวลา ก็เดาว่า ไม่น่าจะต้องใช้ CPU เยอะมากมายอะไรขนาดนั้น
ถ้าใครที่ใช้ Unraid ให้เราเข้าไปติดตั้งตัว Community Plugin แล้วหาคำว่า unifi-controller แล้วเลือกติดตั้งผ่าน Default Settings ได้เลย ก็เป็นอันเรียบร้อย
หรือถ้าใช้ Docker เพียว ๆ เลย ให้ ดูที่ Docker Hub ตัวนี้ได้เลย
docker create \
--name=unifi-controller \
-e PUID=1000 \
-e PGID=1000 \
-e MEM_LIMIT=1024M `#optional` \
-p 3478:3478/udp \
-p 10001:10001/udp \
-p 8080:8080 \
-p 8081:8081 \
-p 8443:8443 \
-p 8843:8843 \
-p 8880:8880 \
-p 6789:6789 \
-v path to data:/config \
--restart unless-stopped \
linuxserver/unifi-controller
จากนั้นเราก็จะได้ Container ของ UniFi Controller ที่พร้อมใช้งานแล้ว ให้เราเข้าไปที่ IP ของเครื่องที่รัน Container อยู่บน Port 8443
หรืออีกวิธีอาจจะเลือกใช้ Kitematic ในการติดตั้งลงไปก็ได้ สำหรับคนที่อาจจะไม่ถูกกับ Command Line มาก
อันนี้เป็นปัญหาที่เราเจอใน Google Chrome บน macOS Catalina ไม่แน่ใจว่า Microsoft Edge เป็นมั้ย เพราะเราก็ไม่ได้ลองเหมือนกัน คือปัญหาเรื่องของ SSL เพราะตัว Controller มันบังคับให้เราใช้งานผ่าน HTTPS แต่ก็นะ ไม่มี Certificate มาให้ แต่ใน Docker มันก็ Generate มาให้เราแล้ว ซึ่งแน่นอนว่า มันไม่ใช่ตัวที่ใช้ได้เลยแน่นอน ไม่งั้นมันจะไม่มีปัญหาาเลย
หน้าจอที่เราจะเจอเมื่อพยายามเข้า Controller คือ Error ที่เขียนว่า Your Connection is not private ปกติ เมื่อเราเจอหน้าแบบนี้ และเราก็ไม่สนใจ ก็จะเข้าอะ ! เราก็จะกด Advance แล้วมันน่าจะมีปุ่มให้เราเข้าเว็บนั้นได้ แต่นี่กดแล้วไม่มี จนเราช่างแมร่งแล้วไปเข้าผ่าน The next IE Browser (Safari) ซึ่งมันให้เราเข้าได้ โดยที่บอกว่า เออ มันไม่ปลอดภัยแค่นั้นเลย ก็ใช้งานได้ปกติ
วิธีแก้ปัญหาที่เราใช้ เราไปเจอจากเว็บสักเว็บมานี่แหละ จำไม่ได้แล้ว เริ่มจากให้เราเข้าไปที่ Keychain Access มองหาแล้วเลือก login ที่ด้านซ้าย ตรงกลางมันจะมีอะไรออกมาเยอะแยะไปหมด ลองมองหาที่เขียนว่า unifi
เมื่อเรา Double Click แล้ว มันจะมีหน้าต่าง ขึ้นมาให้เราติ๊กที่ Trust มันจะมีตัวเลือกงอกออกมา อันบนสุดคำว่า When using this certificate ให้เราเลือกเป็น Always Trust แล้วปิดหน้าต่างให้หมด
ลองเข้า Controller อีกครั้งผ่าน Google Chrome ดู เราก็ยังจะเจอกับหน้า Error ที่ยังเขียนว่า Your Connection is not private อีกเหมือนเดิมแหละ แต่ว่า เมื่อเรากด Advance ออกมาแล้วเราจะเจอตรงที่เขียน Proceed to ... แล้วก็ IP ของ Controller เรา ก็กดเข้าไปได้เลย
มันก็จะพาเราเข้าไปที่หน้า Login ของ Controller เรียบร้อยโรงเรียนโจรฮ่า ๆ อันนี้เราไม่รู้นะว่าเป็นวิธีที่ถูกต้องมั้ยนะ เอาจริง ๆ รู้สึกว่ามันไม่โอเคเท่าไหร่ แต่เราก็นึกวิธีอื่นไม่ออกละ นอกจากการที่เราจะขอ SSL Certificate มาจริง ๆ
เมื่อเราเข้ามาได้แล้ว และ ทำการกรอกข้อมูลจนมันเรียบร้อย เข้าหน้าแรกไปแล้ว ปัญหาต่อไปคือ เราจะไม่สามารถที่จะ Adopt อุปกรณ์เข้ามาในระบบได้ ก็คือ เมื่อเรากด Adopt แล้วมันเหมือนจะค้าง บ้างก็หาอุปกรณ์ไม่เจอ
อันนี้เกิดจากวิธีการที่อุปกรณ์ของ UniFi นำเข้าอุปกรณ์เข้ามาในระบบ ด้วยที่อยู่ที่ผิด ทำให้เราต้องเข้าไปแก้ไขที่อยู่กัน โดยการเข้าไปที่ Settings (รูปเฟืองด้านล่างซ้าย) > Controller > Controller Homename/IP
ให้เราแก้เป็นที่อยู่ของเครื่องที่เราลง Controller เอาไว้ แล้วกลับไป Adopt อีกครั้งมันก็จะได้ ละ หมดปัญหาที่เจอละ
การติดตั้ง UniFi Controller มีหลายวิธีมาก การใช้ Docker เป็นเพียงหนึ่งในนั้นเท่านั้น ซึ่งวิธีนี้ส่วนใหญ่ที่เห็นคือ จะใช้กับเครื่อง NAS ซะส่วนใหญ่ เพราะมันเป็นเครื่องที่เปิดตลอดเวลาอยู่แล้ว และ Controller มันก็ไม่ได้ใช้ CPU และ RAM มากเท่าไหร่ เหมือนเป็นการทำให้ NAS ที่บางทีอาจจะไม่ได้ใช้งานตลอดมีประโยชน์เพิ่มขึ้นมาบ้างฮ่า ๆ ซึ่งใน NAS OS ที่นิยมหลายตัวก็รองรับการทำงานผ่าน Docker หมดละ ส่วนการติดตั้งผ่าน Raspberry Pi เราจะมาเล่าในอีกบทความนึงละกัน
Obsidian เป็นโปรแกรมสำหรับการจด Note ที่เรียกว่า สารพัดประโยชน์มาก ๆ เราสามารถเอามาทำอะไรได้เยอะมาก ๆ หนึ่งในสิ่งที่เราเอามาทำคือ นำมาใช้เป็นระบบสำหรับการจัดการ Todo List ในแต่ละวันของเรา ทำอะไรบ้าง วันนี้เราจะมาเล่าให้อ่านกันว่า เราจัดการะบบอย่างไร...
อะ อะจ๊ะเอ๋ตัวเอง เป็นยังไงบ้างละ เมื่อหลายเดือนก่อน เราไปเล่าเรื่องกันขำ ๆ ว่า ๆ จริง ๆ แล้วพวก Loop ที่เราใช้เขียนโปรแกรมกันอยู่ มันไม่มีอยู่จริง สิ่งที่เราใช้งานกันมันพยายาม Abstract บางอย่างออกไป วันนี้เราจะมาถอดการทำงานของ Loop จริง ๆ กันว่า มันทำงานอย่างไรกันแน่ ผ่านภาษา Assembly...
นอกจากการทำให้ Application รันได้แล้ว อีกเรื่องที่สำคัญไม่แพ้กันคือการวางระบบ Monitoring ที่ดี วันนี้เราจะมาแนะนำวิธีการ Monitor การทำงานของ MySQL ผ่านการสร้าง Dashboard บน Grafana กัน...
จากตอนที่แล้ว เราเล่าในเรื่องของการ Harden Security ของ SSH Service ของเราด้วยการปรับการตั้งค่าบางอย่างเพื่อลด Attack Surface ที่อาจจะเกิดขึ้นได้ หากใครยังไม่ได้อ่านก็ย้อนกลับไปอ่านกันก่อนเด้อ วันนี้เรามาเล่าวิธีการที่มัน Advance มากขึ้น อย่างการใช้ fail2ban...