Almalinux9.3にnextcloudを入れる(snap)

外からアクセスできるファイルサーバを用意して使っていましたが、nextcloudというプライベートクラウドがストレージクラウドだけではなく、グループウェアとしても使えて便利そうだったので少し触ってみました。

# インストール方法
ちょっと調べてみたところ、nextcloudのインストール方法は次のようなものがあるっぽいです。

- ALL-IN-ONE Docker IMAGE(AIO Docker)
    - DockerImageを利用する
→手順は簡単だったがドメイン登録しないとダメっぽい。ドメイン持ってない。
- ALL-IN-ONE VM IMAGE(AOI VM)
    - VMImageを使用する
→VM環境ない
- COMMUNITY PROJECTS
    - 自前でLAMPを用意し、そこにnextcloudを載せる
→ぶっちゃけめんどいのでsnapでやった後でいい
    - snapパッケージを利用する。
→比較的簡単
    - ラズパイ用イメージを利用する
→もってない。

私の場合は
- ソブリンクラウドのように実体は自宅に置きたい
- とりあえず評価したいのでより簡単な手順で試してみたい
- AlmaLinux9.xでたてたい
という事で、snapパッケージを利用した手順で構築してみました。

また、AlmaLinux9.xで構築したナレッジも見かけなかったのでメモ程度ですが手順も作成してみました。

# 構成
構成としては
- ホームゲートウェイPR500 LAN側192.168.1.1/24
- AlmaLinux9.x(物理)に192.168.1.2/24
- PR500のWAN側ポート12345をNAPTでLAN側192.168.1.2:443にフォワード

# 手順
## 1. AlmaLinux9.3のインストール
- 最小構成でインストール。
- sshで作業したいので、ついでにwheel権限与えたユーザを1つだけ作りました。
- 以降のコマンドではsudoがついてたりついてなかったりしますが、お手数ですが適宜読み替えてくださいませ。

## 2. snapインストール
```bash
#EPELを入れて最新化する
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
sudo dnf upgrade
sudo dnf install snapd
sudo systemctl enable --now snapd.socket
```
## 3. snapでnextcloudのインストール
### インストール
```bash
sudo snap install nextcloud
```
※少し時間がかかるかもしれない。あるいは2回やらないとだめかもしれない？

### 確認
```bash
snap changes nextcloud
snap connections nextcloud
```

### 実行例
```bash
snap changes nextcloud
ID   Status  Spawn               Ready               Summary
2    Done    today at 23:02 JST  today at 23:04 JST  Install "nextcloud" snap
```

### 実行例

```bash
snap connections nextcloud

Interface        Plug                       Slot           Notes
network          nextcloud:network          :network       -
network-bind     nextcloud:network-bind     :network-bind  -
network-observe  nextcloud:network-observe  -              -
removable-media  nextcloud:removable-media  -              -
```

## 4. 管理アカウント設定
```bash
sudo nextcloud.manual-install NAME PASSWORD
# NAME・・・ユーザ名
# PASSWORD・・・パスワード
```

## 5. ドメイン設定
### trusted_domainsの表示

```bash
sudo nextcloud.occ config:system:get trusted_domains
localhost
```
### ドメインの追加
```bash
sudo nextcloud.occ config:system:set trusted_domains 1 --value=example.com
# LAN側IPでアクセスする場合は↓のようにvalueに自分自身のIPを設定する
sudo nextcloud.occ config:system:set trusted_domains 1 --value=192.168.1.2
# NAPTで外に出す場合は、WAN側のアドレスも登録する。
sudo nextcloud.occ config:system:set trusted_domains 2 --value=AAA.BBB.CCC.DDD
```

### 再度trusted_domainsの表示

```bash
sudo nextcloud.occ config:system:get trusted_domains
localhost
192.168.1.23		#←LAN側IP
AAA.BBB.CCC.DDD		#←WAN側IP(※ルータの外側のIP)
```

# 6. SSL(オレオレ証明書)の設定
```bash
sudo nextcloud.enable-https self-signed
Generating key and self-signed certificate... done
Restarting apache... done
```
# 7. Firewall設定
```bash
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
```

# 8. インターフェイスへのログイン

https://192.168.1.2(LANIP)
https://AAA.BBB.CCC.DDD:Port(NAPTでポートフォワードしているWANIPとポート)

# 9. バージョン確認

### AlmaLinuxの確認

```bash
cat /etc/almalinux-release
AlmaLinux release 9.3 (Shamrock Pampas Cat)
```

### nextcloudの確認

```bash
snap info nextcloud

中略

installed:          27.1.8snap1                          (41512) 322MB -
```

以上で終了です。とりあえず動けばいい程度でやってみましたが、いざやってみると簡単で良いですね。