さくらのクラウドでUniFi Network Applicationを動かす

さくらのアドベントカレンダー2022 2日目の記事です。

https://qiita.com/advent-calendar/2022/sakura

どうも、さくらインターネット　やまけんです。
今回は、さくらのクラウドにUbiqitiが販売しているUniFiと呼ばれるネットワーク製品群のコントローラソフトである　UniFi Network Applicationを構築し、スイッチや無線APを管理するという方法になります。

# そもそも UniFiとは
2003年にアメリカ カルフォルニアのサンロゼで起業したUbiquitiが提供しているネットワーク機器のブランドです。
日本では一時期お安い高機能ルータとして、EdgeRouter Xが6-7年くらい前に流行りましたが、それを作っていたのもUbiquitiです。

https://ui.com/

インテリジェンスなスイッチや高機能な無線APなどを安く販売しており、いわゆる逸般の誤家庭向け機器としてもおなじみです。
数年前から日本公式ショップも展開しており、ちょっと前までのebayやEuroDKで買うなどをしなくても手軽に買えるようになりました。

https://jp.store.ui.com/

このUniFI機器の良いところは、コントローラのライセンスが無償であるところです。
ネットワークアプライアンスであるあるなのが、ライセンスが年間いくらでみたいなサブスクになっていたりなのですが、UniFi製品はそこがかかりません。

そのため、2019年ぐらいに自宅の無線APをリプレイスする際、さくらの専用サーバチームの人にアライドテレシスかUniFiはどーよとおすすめされて、それ以来どハマりしました。

おかげさまで今は、グループ会社のビットスターメンバーにもおすすめしまくって布教しています。

ちなみに、コントローラについては、今だとUniFi OS Consolesといって、ルータやコントローラを購入し、 unifi.ui.com 経由でクラウド管理するというのが推奨されている方法ではありますが、自前ホスティングでのコントローラ利用も可能であり、きちんとナレッジも公開されています。

https://help.ui.com/hc/en-us/articles/360012282453

要件としては
```
Linux: Ubuntu Desktop / Server 22.04; Debian 11 "Bullseye"
CPU: x86-64 Processor (Intel / AMD x64 Processors)
RAM: 2GB
Network: 100Mbps Wired Ethernet
HDD: Minimum 10GB free (20GB or more preferred)
Java: Java Runtime Environment (JRE) 8
Web Browser: Google Chrome
MongoDB: version 3.2 or later. 
```
とのことで、クラウドで2GB 2CPUあたりのSSD20GBインスタンスを立てればいけそうな感じです。

今回は、勉強会やイベントなどで既にインターネットは来てるけど、WiFiの提供をしなきゃいけないというような状況で、クラウド上のコントローラとその配下にPoEスイッチ、WiFiAP数台のような環境を想定したコントローラを作成します。

コントローラも普段はシャットダウンされていて、イベント時にVMが立ち上がっているようにしていれば、出費も抑えれて良い感じです。
なので、さくらのクラウドであえて構築しています。


![IMG_8958.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/0547837a-590b-5e5e-d240-24517eae5131.jpeg)
イベント現場向けWiFi提供セット（モジュラーシンセ用可搬2UラックにPoEスイッチを設置し運用）

# クラウドホストの作成

先ほどの要件をもとにクラウドVMを作成します。

さくらのクラウドでホストを作成します、特にどのリージョンがというのはないですが、一番新しい東京第2リージョンで作成します。

![スクリーンショット 2022-11-30 22.52.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/4cae627e-4b92-54e4-4abe-6b48070a6c14.png)

とりあえず2コア　メモリ2GBを選択し

![スクリーンショット 2022-11-30 22.53.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/7da1416a-2a5f-2596-f5fe-5bf982478b91.png)

ディスクはSSD20GBを選び、アーカイブからUbuntu Server 22.04 LTS 64bitを選びます

![スクリーンショット 2022-11-30 22.53.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/e083e8e2-e732-b440-17e2-b2ab1f9d3e15.png)

ネットワークはインターネット接続のまま。特に変更はなく、
ディスクの修正はチェックを入れて、管理者ユーザーのパスワードやホスト名を入れます。

![スクリーンショット 2022-11-30 22.54.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/641d7982-6e56-04b4-56d5-823a9476b52d.png)

公開鍵認証でログインするように設定するため、github.comから鍵を取ってくるようにしました。
クラウドアカウント登録の鍵や、RSAの公開鍵をペーストして設定しても良いです。

パスワード/チャレンジレスポンスでのSSHログインを許可しないにしておいてパスワード認証でのSSHを排除します。

![スクリーンショット 2022-11-30 22.54.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/ae475d57-0073-a88c-33e5-5380fb9bc3e8.png)

あとはVMを判別しやすいように名前をつけて右下の作成ボタンを押して作成します。

しばらくしたらVMが立ち上がりますので、SSHでログインします。

一応最新のパッケージに更新するよう

```
sudo apt-get -y update && sudo apt-get -y dist-upgrade
```

で更新しておきましょう。

# UniFi Network Applicationのインストール

https://help.ui.com/hc/en-us/articles/220066768

一応上記URLで公式のインストール方法が提示されているのですが、このドキュメントの中に

```
See an example of what scripts the Community is using to install the UniFi Network application on Ubuntu 16.04 and 18.04 in this Community post.
```

ということで、UniFiのユーザーコミュニティスペースに、有志が作成したシェルスクリプトでサクッと作成できますのでそっちでやっていきます。


https://community.ui.com/questions/UniFi-Installation-Scripts-or-UniFi-Easy-Update-Script-or-UniFi-Lets-Encrypt-or-UniFi-Easy-Encrypt-/ccbc7530-dd61-40a7-82ec-22b17f027776

ドキュメントを踏まえて、少しだけ叩くスクリプトを変えています。

```
#rootユーザで作業する

sudo -i

#aptで wgetとCA証明書をインストールする
apt-get -y update && apt-get -y install ca-certificates wget

#最新のスクリプトをダウンロードして実行する1ライナー
rm unifi-latest.sh &> /dev/null; wget https://get.glennr.nl/unifi/install/install_latest/unifi-latest.sh && bash unifi-latest.sh
```

![スクリーンショット 2022-11-30 23.22.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/49a76609-3572-7e9f-97e2-62cb07fadd37.png)
そうすると自動でスクリプトが走ります。必要なものなどを入れていきます。


![スクリーンショット 2022-11-30 23.23.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/b84c8ac2-c325-e8b8-c188-efb6795d1eaa.png)

インストール後にスクリプトを残すかどうか。必要なければnで削除するようにしてもよいです。

![スクリーンショット 2022-11-30 23.23.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/b9149e6e-7a97-5dbe-4410-4d1a7992f58d.png)

こんな感じでアップデート求められたりするので、適宜選択して進めていくだけ

![スクリーンショット 2022-11-30 23.24.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/0d879a0a-0457-f5d8-4083-e27f9df087af.png)

インストールが進む

![スクリーンショット 2022-11-30 23.27.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/ad326b9f-d02b-df70-f357-d5898fbcc9f2.png)

aptリポジトリにUniFiのリポジトリを含めるかですね。apt でアップデートできるようになるので含めても良いかと。

![スクリーンショット 2022-11-30 23.30.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/edfbb003-50d3-658d-5801-fca89a3e7481.png)

UniFi Network Applicationのインストールは終わり、 https://[VMのIPアドレス]:8443 でコントローラを開くことができますが、別途Let's Encryptを使った証明書発行を行うかという設問です。
ホスト名設定して正引きできる状態だと引き続き設定した方が良いかと。

![スクリーンショット 2022-11-30 23.35.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/fc801dc3-d76f-dec2-3675-054659238e53.png)

1を選ぶとcertbotをインストールして証明書の自動発行を進めてくれます。

![スクリーンショット 2022-11-30 23.36.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/90c4cc66-bed7-bbf4-53ae-1384061c1f83.png)

タイムゾーンの設定です。 Asia/Tokyoなので yですすめます

![スクリーンショット 2022-11-30 23.36.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/a8d6b381-0918-e4bc-b622-12894b4b1092.png)

ホスト名の設定です。正しいホスト名が出ていればそのまま進めて良いですが、間違っているようであればnを押し、正しいホスト名を入れます。

![スクリーンショット 2022-11-30 23.43.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/cf9f3d95-09a9-25d6-3feb-b86213562f09.png)

SSL設定が進みます。

![スクリーンショット 2022-11-30 23.44.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/3d84259c-296e-de2a-a9f9-c8cdbbf44eb3.png)

設定完了すると https://[設定したドメイン]:8443 のアドレスが表示されますので、あとはブラウザ側で設定します。

# UniFi Network Application の設定

![スクリーンショット 2022-11-30 23.52.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/b9b407e4-c250-c60f-8324-4b4c570220b1.png)

https://[設定したドメイン]:8443 を開くとガイダンス形式で設定をしていきます。

![スクリーンショット 2022-12-01 0.28.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/a5313920-0dc2-641c-4bba-318d1c6cd926.png)

設定完了後

スイッチやWIFI APをクラウドコントローラに収容します。

![スクリーンショット 2022-12-01 0.14.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/d049b9c1-ceb8-60b4-b1be-489043138a38.png)

スイッチやAPはデフォルトユーザubnt パスワードubntでsshできます。
ログイン後 `set-inform http://[コントローラのIP]:8080/inform` と打つとコントローラ側で追加できるようになります。

![スクリーンショット 2022-12-01 0.52.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54205/d72f1a6d-cf53-bc69-84e0-dfe0c9e37b8e.png)

登録ができました。

公式ドキュメントの L3 Adoptの方法については下記リンクへ

https://help.ui.com/hc/en-us/articles/204909754-UniFi-Layer-3-methods-for-UAP-adoption-and-management

# おわりに

今回はクラウドで構築しましたが、シェルスクリプトをラズパイなどで実行するとローカルにコントローラを構築できます。

UniFiのスイッチやAPは結構かゆいところに手が届くので、是非とも使ってみてください。
Enjoy!