Ubuntu@MacminiをMacで使える便利サーバにする


はじめに

家にあったMacminiの使い途がなかったので、Ubuntuを入れて何か便利に使ってみようと、
色々調べて構築してみました。
また普段使っているパソコンはMacbookなので、それとの連携を考えました。

各スペックと実装する内容は以下の通り。
サーバ側
Macmini

  • 内蔵ドライブはSSD 128GBとHDD 500GBに換装(自作FusionDriveを組んでいた)
  • 外付けドライブはHDD 1TB
  • 内部をあれこれ触っているうちにAirMacとBluetoothのアンテナが外れちゃったので、それぞれUSBで接続

クライアント側
Macbook

やりたいこと

  • TimeMachineサーバ(バックアップディスクのリモート化)
  • iTunesライブラリの外出し (もうiTunesって言わないんだった。。。)
  • 写真ライブラリの外出し
  • メディアサーバ化

Ubuntuのインストール(ざっくり)

  • Ubuntu 18.04のISOイメージをUbuntu日本語サイトからDL、DVDを作成
  • 外付けDVDドライブでインストールDVDから起動
  • Macとのデュアルブートは考えてないから、SSDを全消ししてインストール
  • 一度パーティション暗号化しちゃったけど、あとあと面倒なことになったので暗号化せずに再インストール
  • Wifiは手元にあったPlanexの適当なやつ

インストールの後は以下の3つを実施。

データ保存用ディスクの作成

内蔵HDDの500GBと外付けHDD 1TBをLVMに組み込んで1.5TBのボリュームを作成。(/mediaにマウント)
GUIでやる方法がわからなかったので、コマンドラインで作成。(詳細は割愛)

VNCを有効可

Macのデフォルトのクライアントは、そのままでは繋がらないので、以下のように暗号化要求を無効。

sudo gsettings set org.gnome.Vino require-encryption false

でもデフォルトクライアントは遅かったのでiTeleportを利用。
でもiTeleportって開発、配布終了してない??

sshdを有効可

デフォルトでsshdが入っていなかった(結構驚きだった。)のでインストールから。

sudo apt-get install aptitude
sudo aptitude install ssh

TimeMachineサーバ化

さてここから本題。まずはTimeMachineサーバ化をします。

前はAFPっていうプロトコルで接続するためにNetatalkを入れて実現するんでしたが、
最近のMacOSはAFPでTimeMachineバックアップができなくなったので、
割と新しいSambaを入れます。

sambaのインストール

aptで入れられるSambaではバージョンが古くて、TimeMachineバックアップはできないので、
ソースからコンパイルして、インストールします。

あんまりちゃんとメモしてなかったので、色々割愛。
ソースはこちらからダウンロード。Samba HP
自分はバージョンは4.11.9を入れた模様。

configure時のオプションは、こちらのサイトとかを参照。

sambaの設定

設定はこんな感じかな?

/etc/samba/smb.conf
[global]
# globalセクションの最後の方とかに以下を追加
# Special configuration for Apple's Time Machine
   vfs objects = catia fruit streams_xattr
   fruit:model = MacMini # ここは何でもいいっぽい。多分。
   fruit:resource = file
   fruit:metadata = netatalk
   fruit:locking = netatalk
   fruit:encoding = native
   durable handles = yes
   kernel oplocks = no
   kernel share modes = no
   posix locking = no
   fruit:advertise_fullsync = true
   smb2 leases = yes
   fruit:aapl = yes

[TimeMachine@Ubuntu]
# 上記の名前がTimeMachineの設定に出てくる。
   path = /media/timemachine # バックアップを取るパスを指定。
   valid users = hoge
   writable = yes
   durable handles = yes
   kernel oplocks = no
   kernel share modes = no
   posix locking = no
   vfs objects = catia fruit streams_xattr
   ea support = yes
   browseable = yes
   read only = No
   inherit acls = yes
   fruit:time machine = yes
   fruit:aapl = yes
   spotlight = yes
   create mask = 0666
   directory mask = 0777
   comment = Time Machine
   fruit:time machine max size = 512G # timemachineのボリュームを制限するならここで指定。

mDNSでMacminiを探せるように、avahi-daemonをインストール。
これはaptでインストールしても問題ないので、諸々割愛。

バックアップが途中で止まっちゃったりするようであれば、こちらを参考。
iPhoneの同期とかTimeMachineバックアップのときにSambaがCoreファイルを吐いて強制終了する話

iTunesライブラリの外出し

ローカルに音楽ファイルがあると、ローカルのSSDを食いつぶしちゃうので、
これもさっきのSambaで共有したフォルダに置いておきます。

それ用のフォルダの設定はこんな感じ。

/etc/samba/smb.conf
[media]
   comment = media
   path = /media
   guest ok = no
   browseable = yes
   read only = no
   create mask = 0666
   directory mask = 0777

あとはMacで共有フォルダをマウントして、iTunesのライブラリ(Music Media)の場所を、マウントしたボリュームに変更。

さらにファイル->ライブラリ->ライブラリを整理...を選択して、
ファイルに結合にチェックを入れてOKを押すと、共有フォルダにファイルがコピーされる。

ローカル側でCDの読み込みをしても、ちゃんとサーバ側にファイルができるので便利。

写真ライブラリの外出し

写真もiTunesと同じ用にやればライブラリの外出しはできるんだけど、
そうすると今度はiCloud写真が無効化されちゃうので、結局もとに戻した。

メディアサーバ化

ソフトを探してみたが、しっくり来るものがなく今回は保留。
そもそもメディアサーバってあんまり用途がないかも・・・。

はじめ音楽ファイルはMacmini側からDLNAで配信すればいいかなーって思ってたけど、
それだとiPhoneに同期できないのやめました。


こんな感じでMacminiの再利用・有効活用ができて、MacBookのディスク使用量も削減できました。