Deadlineサーバの構築方法

# はじめに
映像系パイプラインツール、DEADLINEを動かすために必要なRepositoryサーバの構築をしたので
そのときの備忘録程度に書こうと思います。（わかりづらくてすいません）
注意）ディレクトリパスは適当に変えています。注意してください。

更新しました！　2024/09

## 構成
- サーバ
    - VMWare ESXi 7
    - CentOS Rocky8
    - CPU 4core/MEM 8GB (ただし、メモリは不足したら増やす予定） 
- ソフトウェア
    - MongoDB 5.0.22　(ちなみにcentos8で、MongoDB４．３で動いた）　
    - Deadline 10.3.2.1
    - Samba 5.0.22 
    
# 導入手順
##素材揃える編
1. 必要な[Rocky8](https://rockylinux.org/ja/download)のバージョンをisoで落とす。
2. [Deadline](https://downloads.thinkboxsoftware.com/#/login)の最新版を落とす。
3. [MongoDB5.0.22](https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-5.0.22.tgz)を落とす。

注意１）　~~Deadlineでライセンスサーバについて記載していないのは、今回ライセンスサーバはすでにある程です。~~ ライセンスサーバ不要になりました。
注意2)　[システム要件](https://docs.thinkboxsoftware.com/products/deadline/10.3/1_User%20Manual/manual/system-requirements.html)は行う前に確認してみてください。
注意3) Deadlineのデータはここでは`Deadline-10.3.2.1-linux-installers.tar`を指す。
注意4) MongoDBのバージョンが5.0.22までしかDeadlineが対応していないため、RHEL8系の対応になります。（CentOSはすでに終わっているので、Rokey か Almaになるかと思います）


##VMを立てる
→こちらはわかりやすく書いていらっしゃる方がいますので、こちらを[参考](https://qiita.com/daisuke0115/items/49135da4e11b6d69feb6)にしてみてください。
なお、次の項目は一番最初の初期設定が終わってるものです。

##CentOSを設定する
1. SSHで、admin権限をもったユーザでサーバに入る（teraterm等で入る。）　※１
2. sudoerの設定画面に入る。 `[hoge@deadline ~]# visudo`
3. この場所を見つける`## Allow root to run any commands anywhere
4. ３の下に、`ユーザ名   ALL=(ALL)       ALL`を入力する
5. `esc`を押して`:wq` で保存終了
6. rebootして再起動。
7. SSHで再度ログインする
8. サーバを最新にする`[hoge@deadline ~]$sudo dnf update`
9. SFTPでアクセスして、`/opt/hoge`へMongoDBのデータとDeadlineのデータをアップロードする。

※もしユーザ権限の場合は`[hoge@deadline ~]$su -`でrootパスワードを入力すれば大丈夫。`[hoge@deadline ~]#`と$ -> #へと変わってるはず。

## Deadlineのインストール
1. Deadlineのデータがあるところまで、ディレクトリを移動する。
2. tarで固まってるため解答する`[hoge@deadline ~]tar -xvf Deadline-10.3.2.1-linux-installers.tar`
3. 同じディレクトリに次の二つがあることを確認する。`mongodb-linux-x86_64-rhel80-5.0.22.tgz`と`DeadlineRepository-10.3.2.1-linux-x64-installer.run`
4. Deadlineをインストールする。`[hoge@deadline ~]#sudo ./DeadlineRepository-10.1.3.6-linux-x64-installer.run --mode text ----prepackagedDB /home/hoge/mongodb-linux-x86_64-rhel70-3.4.24.tgz`
5. License Agreementが出てくるので読み進めて、`Y`で進める。
6. Repository Installation Directoryの入力画面が出てくるので、表示されてるディレクトリでよければそのまま進める。
7. `Set full read/write access for files[Y/n]`と出てくるので`Y`。
8. MongoDBのインストールについてきいてくるので、`[1] Install a new MongoDB database on this machine?` にするため　`1`を入力
7. `MongoDB Installation type`を聞かれるので`[2]Pre-Packed(.tar .zip)`の`2`を入力。
8. 場所を聞かれるが、最初に場所を設定しているため間違ってるか確認して、進む
9. host等mongoDBに関する情報を聞かれるが、問題がなければそのまま進む。
10. `continue installation?`と聞かれるので、`Y`でインストール開始。
11. `Require client authentication via SSL/TLS [Y/n]` と聞かれるので、`Y`。
12. `Certificate Password`と`Confirm Password` と聞かれるので、任意のパスワードを入力。
13. `Secrets Management Setup`で`Admin Username`と`Certificate Password`と`Confirm Password` を聞かれるのでそれぞれ入力。
14. `Repository Settings File`で過去のrepositoryデータがある場合はここで引継ぎを行う事が可能。
15. ファイアウォールを追加設定する`[hoge@deadline ~]$sudo firewall-cmd --zone=public --add-port=27100/tcp --permanent`
16. ファイアウォールを適用する `[hoge@deadline ~]$sudo firewall-cmd --reload`

注意1）基本的に特に何かなければ、デフォルトパラメータで行くほうがいいと思います。
注意2)ここについて、わからなければ次のページをご[参考](https://docs.thinkboxsoftware.com/products/deadline/10.1/1_User%20Manual/manual/install-db-repo.html)に。
注意3)ポートについては次のところを[参照](https://docs.thinkboxsoftware.com/products/deadline/10.1/1_User%20Manual/manual/considerations.html#considerations-ref-label)。


## sambaをインストール
repositoryには全部のPCがアクセスできないといけないので、sambaをインストール、設定する。
1. インストールコマンドを入れる。`[hoge@deadline ~]$ sudo dnf install -y samba`
2. smb設定をバックアップする `[hoge@deadline ~]$sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bk`
3. ファイル内に入る。`[hoge@deadline ~]$sudo vi /etc/samba/smb.conf`
4. 下のsmb.confを参考に設定する。
5. ファイアウォールを追加設定する `[hoge@deadline ~]$sudo firewall-cmd --zone=public --add-service=samba --permanent`
6. ファイアウォールを適用する `[hoge@deadline ~]$sudo firewall-cmd --reload`
7. レポジトリフォルダに対してselinuxを設定する `[hoge@deadline ~]$ sudo semanage fcontext -a -t samba_share_t "/opt/Thinkbox/DeadlineRepository10(/.*)?"`
8. レポジトリフォルダに対してselinuxを適用する　`[hoge@deadline ~]$ sudo restorecon -R /opt/Thinkbox/DeadlineRepository10/*`
9. レポジトリフォルダに対して適宜書き込み読み取り権限をつける。（できるだけsambaにユーザ権限作成して作ることをおすすめしたい）
10. 起動する `[hoge@deadline ~]$ sudo systemctl start smb`
11. 自動起動の設定をする　`[hoge@deadline ~]$ sudo systemctl enable smb`

```config:smb.conf
[global]
        workgroup = WORKGROUP
        server string = Deadline
        netbios name = deadline
        security = user
        map to guest = bad user
        dns proxy = no
        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
[repository]
        path = /opt/Thinkbox/DeadlineRepository10
        browseable = Yes
        writable = Yes
        guest ok = Yes
        read only = No
        create mask = 0700
        force create mode = 0700
        force directory mode = 0700
[certification]
        path = /opt/Thinkbox/DeadlineDatabase10/certs
        browseable = Yes
        writable = Yes
        guest ok = Yes
        read only = No
        create mask = 0700
        force create mode = 0700
        force directory mode = 0700
```


## 最終チェック
1. selinuxが入ってることを確認　`[hoge@deadline ~]$sudo getenforce` -> `Enforce`でok
2. レポジトリフォルダのselinuxのコンテクスト確認 `[hoge@deadline ~]$sudo ls -Z /opt/Thinkbox/DeadlineRepository10` -> `samba_share_t:s0`が各フォルダに入ってればok。
3. ファイアウォールを適用する `[hoge@deadline ~]$sudo firewall-cmd --reload`
4. ファイアウォールが設定されてるか確認する　`[hoge@deadline ~]$sudo firewall-cmd --list-all`
5. WindowsやMac等からレポジトリフォルダが開けることを確認する。
6. mongoが稼働しているか確認する`[hoge@deadline ~]$ sudo ps -ef | grep mongod`
7. mongoのポートが受け付けてるか確認する`[hoge@deadline ~]$ sudo ls -of -i:27100`

```conf:④firewall-cmd
public (active)
 省略
  services: dhcpv6-client samba ssh
  ports: 27100/tcp
 省略
```
```conf:⑥ps_ef|gerp_mongod
root      1543     1  0 14:30 ?        00:00:46 /opt/Thinkbox/DeadlineDatabase10/mongo/application/bin/mongod --config /opt/Thinkbox/DeadlineDatabase10/mongo/data/config.conf
hoge    11327  9106  0 18:55 pts/3    00:00:00 grep --color=auto mongod
```
```conf:⑦ls_-of_-i:27100
mongod  1543 root   11u  IPv4  26421      0t0  TCP *:27100 (LISTEN)
mongod  1543 root   12u  IPv6  26422      0t0  TCP *:27100 (LISTEN)
```

あとは、クライアントの設定をするのみ（今回は省略）

## トラブルシューティング
クライアント側でのDeadlineのレポジトリ設定するときに
certificationが通らないトラブルに遭遇しました。

もし遭遇した人がいれば、ローカルに証明書を落とした上でクライアントの設定を進めてください。
次からはなぜか、NAS上の証明書からアクセスできます。（解せない）


# 終わりに

まさか、６年前ぐらいに作成したDeadlineをまた触ることになるとは思ってませんでした。
Deadline使って映像制作が少しでも時短に、またクオリティアップに使えると良いですね！