Technology

ติดตั้ง UniFi Controller บน Docker กัน

By Arnon Puitrakul - 24 เมษายน 2020 - 2 min read min(s)

ติดตั้ง UniFi Controller บน Docker กัน

เมื่อตอนก่อนเราก็ได้รีวิว UniFi Access Point ที่เราใช้งานไป ซึ่งของชิ้นนึงที่ต้องใช้คือ Controller นั่นเอง ซึ่งเราได้ลองติดตั้งใน Raspberry Pi มาแล้วไว้จะมาเล่าเป็นอีกบทความความนึง อันนั้นมันจะยาว วันนี้เอาอันที่เราใช้ก่อน นั่นคือ การลงผ่าน Docker นั่นเอง

โดยที่เราใช้ Docker ที่อยู่บน Unraid ก็จะทำให้เราติดตั้งและใช้งานได้ง่าย ซึ่งถ้าไม่ได้ใช้งาน Unraid ก็ใช้เป็น Docker ธรรมดาเลยก็ได้เหมือนกัน ที่เราใช้ Unraid เพื่อให้ง่ายสำหรับเราเฉย ๆ เท่านั้นแหละ

เตรียมตัวก่อนการติดตั้ง

UniFi Controller

สำหรับเครื่องที่จะติดตั้ง เราแนะนำให้เช็คเรื่องของ RAM ให้ดีก่อน เท่าที่เราดูจาก Memory Usage ในการใช้งานจริงแล้ว เราพบว่า มันจะใช้อยู่ราว ๆ 800-900 MB ในบ้านเรานะ ไม่แน่ใจว่า ระบบใหญ่กว่านี้มันจะกินเยอะขนาดไหน ไม่สามารถทดสอบได้จริง ๆ เพราะไม่มี Hardware

ส่วน CPU เท่าที่ดูตอนนี้วิ่งอยู่ประมาณ 0.1% ตลอดเวลา ก็เดาว่า ไม่น่าจะต้องใช้ CPU เยอะมากมายอะไรขนาดนั้น

การติดตั้ง

Docker Hub

ถ้าใครที่ใช้ 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 มาก

ปัญหาที่ 1 : เข้าหน้า Controller ไม่ได้

UniFi Controller Login

อันนี้เป็นปัญหาที่เราเจอใน 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 App

วิธีแก้ปัญหาที่เราใช้ เราไปเจอจากเว็บสักเว็บมานี่แหละ จำไม่ได้แล้ว เริ่มจากให้เราเข้าไปที่ Keychain Access มองหาแล้วเลือก login ที่ด้านซ้าย ตรงกลางมันจะมีอะไรออกมาเยอะแยะไปหมด ลองมองหาที่เขียนว่า unifi

Keychain Access App

เมื่อเรา 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 มาจริง ๆ

ปัญหา 2 : Adopt อุปกรณ์ไม่ได้

UniFi Controller Devices

เมื่อเราเข้ามาได้แล้ว และ ทำการกรอกข้อมูลจนมันเรียบร้อย เข้าหน้าแรกไปแล้ว ปัญหาต่อไปคือ เราจะไม่สามารถที่จะ Adopt อุปกรณ์เข้ามาในระบบได้ ก็คือ เมื่อเรากด Adopt แล้วมันเหมือนจะค้าง บ้างก็หาอุปกรณ์ไม่เจอ

UniFi Controller Settings

อันนี้เกิดจากวิธีการที่อุปกรณ์ของ UniFi นำเข้าอุปกรณ์เข้ามาในระบบ ด้วยที่อยู่ที่ผิด ทำให้เราต้องเข้าไปแก้ไขที่อยู่กัน โดยการเข้าไปที่ Settings (รูปเฟืองด้านล่างซ้าย) > Controller > Controller Homename/IP

ให้เราแก้เป็นที่อยู่ของเครื่องที่เราลง Controller เอาไว้ แล้วกลับไป Adopt อีกครั้งมันก็จะได้ ละ หมดปัญหาที่เจอละ

สรุป

UniFi Controller Home

การติดตั้ง UniFi Controller มีหลายวิธีมาก การใช้ Docker เป็นเพียงหนึ่งในนั้นเท่านั้น ซึ่งวิธีนี้ส่วนใหญ่ที่เห็นคือ จะใช้กับเครื่อง NAS ซะส่วนใหญ่ เพราะมันเป็นเครื่องที่เปิดตลอดเวลาอยู่แล้ว และ Controller มันก็ไม่ได้ใช้ CPU และ RAM มากเท่าไหร่ เหมือนเป็นการทำให้ NAS ที่บางทีอาจจะไม่ได้ใช้งานตลอดมีประโยชน์เพิ่มขึ้นมาบ้างฮ่า ๆ ซึ่งใน NAS OS ที่นิยมหลายตัวก็รองรับการทำงานผ่าน Docker หมดละ ส่วนการติดตั้งผ่าน Raspberry Pi เราจะมาเล่าในอีกบทความนึงละกัน