最終更新日:2021/12/18 00:55
# snapのnextcloudをUbuntu上で運用する
## nextcloudって何?
nextcloudでできる機能はいろいろ
- ファイルサーバーを立てる
- メールクライアントを構築する
- カレンダーを管理する
- 通話や画面共有をする
等々
クラウドサービスと呼ばれるものが持ってそうな機能を全て持っている感じ
必要な機能はアプリケーションとして他で様々あるので、調べてみると所望してる機能が見つかるかも
## snapを使うということ
### 利点
- インストールが容易
- 必要なパッケージがまとめられている
- 環境を汚さずインストール・アンインストールができる
- サンドボックス内で動作するためセキュリティも強固
### 欠点
- サンドボックス由来の問題が起きる
- `/media` 直下以外へのアクセスができない
- 設定が細かくできない
- SSL認証キーの保存場所の変更ができないなど
- ネイティブ環境のapacheとの共存が面倒
- 別で立ち上がるため、衝突が起きることが大いにある
- 前述の設定が柔軟にできないことと併せて問題になりやすい
## 構築
### nextcloudのインストール
snapを用いてnextcloudをインストール
```sh
sudo snap install nextcloud
```
### /mediaへのアクセスを許可
/mediaへのアクセスをする際はそれを許可してやる必要がある
これはデフォルトのdataの場所を専用のHDDなどを準備してそこに変更してやる際に必要になる
つまり、必然的に記憶デバイスのマウントポイントは/media直下に限定され、dataの保存先はそのデバイスのルートに限定される
```sh
sudo snap connect nextcloud:removable-media
```
### nextcloudの初期インストール
使用し始めるにあたってユーザーとパスワード、dataを配置する場所を指定してインストールを実行する必要がある
dataの保存場所はここで指定して場所以外に後から変更することも可能なようではあるが、サポートはされないし失敗することが多い
ここで指定した場所を使い続けるようにしたい
```sh
sudo nextcloud.manual-install -d /media/[マウントポイント] [ユーザー名] [パスワード]
```
`[マウントポイント]` にはdataを配置するデバイスのマウントポイントを指定
`[ユーザー名]` 、 `[パスワード]` はnextcloud上で使用するものを入力
### アクセスを許可するドメイン
このままでは任意のドメインからのアクセスを弾いてしまう
ドメインを指定してそこへのアクセスの場合に限り通すことで、セキュリティ的に安全なサービスを実現できる
```sh
sudo nextcloud.occ config:system:set trusted_domains 1 --value=[ドメイン1]
sudo nextcloud.occ config:system:set trusted_domains 2 --value=[ドメイン2]
```
ここで設定するドメインはローカルからの場合ローカルIPを直打ちしてアクセスする場合などは、ローカルIPアドレス等も指定する必要がある
当然、独自ドメインを取得している場合はここで指定する必要がある
以下のコマンドによって設定されているドメインを確認することもできる。
```sh
sudo nextcloud.occ config:system:get trusted_domains
```
### SSL認証の対応
Let's Encryptを使用してSSL証明を簡単に取ることができる
証明書の更新なども自動的に行なってもらえる
とりあえずSSL認証を通すためにはポートを開放する必要があるため、ファイヤウォールを設定しよう
その後SSL認証を取得している
```sh
sudo ufw allow 80,443/tcp
sudo nextcloud.enable-https lets-encrypt
```
このあとは復旧に必要なメールアドレス、nextcloudに関連づけるドメインを要求されるので、それぞれを入力して完了
### ログインしてみる
サーバーのアドレスにアクセスしてログインしてみる
アドレスは許可したドメインでなければならないので、ローカルIPなど許可するのを忘れていた場合はここでアクセスが拒否される
[戻って](#アクセスを許可するドメイン)設定し直す必要がある
ログインの際は[先ほど](#nextcloudの初期インストール)設定したユーザー名とパスワードを使ってログインする
## メンテナンス
基本的にメンテナンスフリーだが、dataディレクトリ内のユーザーごとのディレクトリ内に書き込みを行なった場合は、nextcloudでそれをスキャンしてやる必要がある
これを使うことによって、nextcloudのインターフェイス以外の方法でnextcloudの管理下にファイルを配置することができる
例えば、今まで使っていたHDDの中身を移したい場合などにネットワーク経由では日が暮れるため、直接USB等で接続して書き込みたいということが考えれる。
```sh
sudo nextcloud.occ files:scan --all
```
そのほかどのようなコマンドがあるかを調べたい場合は、snapのinfoが助けになるだろう
```sh
snap info nextcloud
```
## 参考文献
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-nextcloud-on-ubuntu-20-04-ja