Ubiquitiの無線LAN基地局を使うには、基地局と同じサブネットの上にコントローラが要ります。Cloud Keyを使うのが手っ取り早いのですが、このネットワーク仕様がちょっと曲者で、多数拠点にそれぞれ少数の基地局をばら撒こうとするとCloud Keyも多く必要になってしまいます。この問題は別に考えるとして、今回はUbuntu Serverでコントローラを動かしてみる話です。
LinuxやWindows、macOSの上で動くコントローラとして、UniFi Network Applicationが提供されています。無償で使えます。執筆時のバージョンは6.5.55でした。
私は普段openSUSEを使っているのですが、残念、Linux版はDebian/Ubuntu Linuxにしか対応していません!配布されているファイルは .deb 形式です。ちょっと頑張ってみたのですが、簡単には移植できないようでした。
仕方がないので、VirtualBoxの上に(慣れない)Ubuntu Serverの小さなVMを作って、そこでUniFi Network Applicationを動かしてみることにします。
「Debian/Ubuntuに対応しているなら簡単でしょ?」
あっ、はい、色々とはまったのでこのエントリを起こしているのですよ……
結論:
動きます!
Ubuntu ServerとUniFi Network Applicationの入手
Ubuntu Serverはこちらから、amd64版をダウンロードしておきます。なんでデスクトップ版じゃないかというと、あちらは色々と余計なものが満載だからです。
UniFi Network Applicationは、こちらからダウンロードできます。
ただし、Ubuntu上にファイル転送するのが面倒だと思うので、後で直接wgetした方が楽だと思います (後述)。
VirtualBoxでUbuntu Server用の仮想マシン(VM)を作る
VirtualBoxを使わない人は、次章までスキップしても構いません。
なんでVMかというと、PC本体が故障しても、日頃のバックアップさえあれば他のホストに容易に持っていけるからです。
VMのネットワークを外に公開する方法については、VirtualBoxに関する星の数ほどの解説記事から手頃なものを見つけてください。ここには書きません。
まずは、仮想マシンを作成します。名前は適当に。
ストレージはちょっと増やしておきましょうか。32GBにしていますが、20GBでもよさそう (後述)。
インストーラ―が起動できるように、Ubuntu Serverのメディアを追加します。
Ubuntu Serverのインストール
デスクトップ版のUbuntuは、サーバ用途には余計なものが沢山入っているのもツライですが、何と言ってもネットワーク周りをいじるのに面倒が多いです。サーバ用途では最初からUbuntu Serverにしておくのが、結果的には楽です。
その代わり、Firewallなども自分で後で追加する必要があるので、勉強しましょう。
あと、いきなり日本語環境で入れると痛い目に遭うことがあるので、初期はEnglishで入れて、必要に応じて日本語パッケージを追加していくのが無難でしょう。
キーボード配列は、必要に応じて変更しておきましょう。
あと少し情報を入力したらインストール開始です。インストールが済んだらRebootのボタンが現れるので、再起動してログイン、sudo -s でrootになっておきます。
UniFi Network Applicationと必要パッケージのインストール
Ubiquitiのウェブサイトで、"UniFi Network Application 6.5.55 for Debian/Ubuntu Linux and UniFi Cloud Key"をダウンロードします。続いて、aptでパッケージをインストールします。dpkgは絶対に使わないこと。
最新版のリンクを使って、例えばこのように↓ (URLは適宜修正)
# wget https://dl.ui.com/.../unifi_sysvinit_all.deb
# apt install ./unifi_sysvinit_all.deb
アプリケーションが必要とするパッケージで、素のUbuntu Serverにまだ入っていないものが沢山ありますが、その辺はaptがよきに計らってくれます。
UniFi Network Applicationが起動できるように修正
とりあえず、インストールしたてでほやほやのアプリケーションを起動してみます。
# service unifi start
# service unifi status
あぁ、何かエラーが出てますね。Cannot locate Java Home... _('、3」∠)_
コントローラがJDK 8を想定しているところ、Ubuntuにはopenjdk-17が入っているのが原因です。これを見付けるのに苦労しましたが、/usr/lib/unifi/bin/unifi.init を見たら分かりました。
パッケージを追加してみます。
# apt install openjdk-8-jre
気を取り直して、もういっちょ!
# service unifi start
今度はプロンプトが帰ってくるまでちょっと(かなり)待たされます。
# service unifi status
あれ、WARNが出ている?(たぶん初期化の警告)
もういっちょ?
# service unifi restart
# service unifi status
今度は成功のようです。
コントローラへのアクセス
Ubuntu Server上でコントローラにアクセスしてみるために、必要そうなものを一式入れてみます。
# apt install net-tools
# apt install firefox
# apt install xinit
# apt install gnome
(余談) Gnomeを入れると次回からウィンドウシステムが自動で起動してしまうので、gdmを止めておくのがよさそう。
# systemctl disable gdm3
ここまでで、ファイルシステムの使用量は、10GB弱といったところでした。
いざ、コントローラに接続!
……の前に、ウィンドウシステムを立ち上げておかなくては。
# startx
はい、本番。
# firefox https://localhost:8443
ヽ(゚∀゚)ノ
はい、後はCloud Keyと同様です。クラウドで使用しているアカウントでログインします。
では、クラウド側からコントローラが見えるかどうか、確認してみましょう。
あれ……、いない?🤔
まさかと思いながら View Legacy Platform に進んでみると、いました! (上の子)
というわけで、無事に使えそうですが、ネットワークの本設定がまだなので、例によって未確認で進行形です。
(というか、なんでLegacy Platform扱いなのよと、また少し不信感が募りました)
おわり