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日本語サイト](https://www.ubuntulinux.jp/home)からDL、DVDを作成
- 外付けDVDドライブでインストールDVDから起動
- Macとのデュアルブートは考えてないから、SSDを全消ししてインストール
- 一度パーティション暗号化しちゃったけど、あとあと面倒なことになったので暗号化せずに再インストール
- Wifiは手元にあったPlanexの適当なやつ

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

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

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

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

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

## sshdを有効可
デフォルトでsshdが入っていなかった（結構驚きだった。）のでインストールから。

```bash
sudo apt-get install aptitude
sudo aptitude install ssh
```

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

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

## sambaのインストール

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

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

configure時のオプションは、[こちら](https://surrouter.asuscomm.com/surblog/2019/05/05/mac-timemachine-with-samba-4-8-on-ubuntu-18-10/)のサイトとかを参照。

## sambaの設定

設定はこんな感じかな？

```bash:/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ファイルを吐いて強制終了する話](https://qiita.com/sachioksg/items/b7317cd9cacc58b28d8b)

# iTunesライブラリの外出し

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

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

```bash:/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)の場所を、マウントしたボリュームに変更。
<img width="613" alt="スクリーンショット 2020-08-08 17.18.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154693/1400d579-f798-01f0-a6e0-7308b98d957f.png">

さらにファイル->ライブラリ->ライブラリを整理...を選択して、
ファイルに結合にチェックを入れてOKを押すと、共有フォルダにファイルがコピーされる。
<img width="572" alt="スクリーンショット 2020-08-08 17.19.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154693/8e9ac49c-9359-6e46-2c5b-ff37f71beba4.png">

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

# 写真ライブラリの外出し

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

# メディアサーバ化

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

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

----

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