写真パーソナルクラウド?
2023年時代「パーソナルクラウド」ってもう死語?でしたっけ?。というのも知り合いから「家族みんなでスマホあるんだけど、容量が足りなくクラウドでお金出したくなく、お家で使いたいだけど」と相談されました。自身も個人的に proxmox 立てたのはいいけどリソースが空いているのもあり少し調べてみました。
Nextcloud Hub 6 (27.1.1)
前に ownCloud を使用していたことがあるのですが、知らない間に ownCloud からフォークしたNextcloud というのがありました。比較的導入も簡単でスマホのアプリも使いやすそうなので導入してみたいと思います。
Ubuntu LTS Server インストール
久しぶりで忘れていました。ここを参照しました。
インストール
Nextcloud を動作させるためには MySQL/PHP/Apache が必要となります。いつもこの手の作業は楽しく行うのですが今回は、知り合いに伝えるため最低限のコマンドでサービスを開始できるようにします。
Ubuntu は、あまり使用したことがなく(主に RHEL が好き)知らなかったのですが、Snap というオープンソースで特定のサービスをインストールすることに特化したツールがあるそうですね。この Snap を使えば Nextcloud も簡単にインストールすることができるそうです。ちなみに almalinux でも Snap を使うことができるそーです。
snap コマンドで Nextcloud のインストール
さてさて、やってみましょう。snap
がすでにインストールされているのであれば、下記のコマンドだけです。
固定IPにしておいた方が後々よいですが、今は考えないようにします。
$ sudo snap install nextcloud
2023-09-24T08:46:59+09:00 INFO Waiting for automatic snapd restart...
nextcloud 27.0.2snap1 for Nextcloud installed
これで Nextcloud を使用することができます。http://IPアドレス
でブラウザから叩いてみます。初回は管理者アカウントのセットアップおよびアプリのインストールがあるので指示に従って進めば大丈夫です。
SSL証明書(オレオレ)とポート変更
https化します。とりあえず後できちんと対応するとして暫定でオレオレ証明書を導入してみます。あと。ポート変更もしておきます。
SSL証明書(オレオレ)の設定
$ sudo snap run nextcloud.enable-https self-signed
Generating key and self-signed certificate... done
Restarting apache... done
ポート変更の設定(http=81/https=444 としていますが任意で変更)
変更後はブラウザからURLを指定するときにポート指定が必要です
$ sudo snap set nextcloud ports.http=81 ports.https=444
信頼できるドメインの設定
Nextcloud のセットアップが終わったと思います。この状態ではローカルアドレスからの接続はできても、異なったネットワークから接続拒否されます。また外部公開した場合(この場合ドメインが必要)からの接続も拒否されます。
Nextcloud のスマホアプリがありますが、お外から接続するときに下記を設定しないとエラーとなってログインできません。
現在の設定値を確認
$ sudo nextcloud.occ config:system:get trusted_domains
192.100.0.100:444
異なったネットワークから接続可能にする
$ sudo nextcloud.occ config:system:set trusted_domains 2 --value=10.100.0.*
外部ネットワークから接続可能にする
$ sudo nextcloud.occ config:system:set trusted_domains 3 --value=*.hoge.org
確認する
$ sudo nextcloud.occ config:system:get trusted_domains
192.100.0.100:444
10.100.0.*
*.hoge.org
Let's Encryptでセキュアにする
Let's Encryptを使用する記事が多いですが、そもそもLet's Encryptのサーバー証明書は 90日間であるため少し困ったことになります。その点を書いていないためあえて書き出してみます。
困ること
① 独自ドメインで 443ポートは既に別のサービスとして運用している。
② サーバー証明書(Let's Encrypt)を、複数の箇所で使用している。
① は、単に proxy 立てれば解決しますが、仕組みを作成するのが少し面倒ですね。
② は、Let's Encryptのサーバー証明書を更新したときに各サーバなどに配布する仕組みを作る必要がありますね。
別に①も②も該当しないようでしたら、Let's Encryptを使用するのが良いと思います。
独自SSL証明書でセキュアにする
オレオレ証明書で通信経路が暗号化されているためインターネットに晒しても良いような気がしますがって言ってたら、先輩から怒られました。なので自分は、独自SSL証明書を取得しているのでそれを使って設定してみます。
必要なファイル(ファイル名は何でもいいですが、とりあえず決めておきます)
ファイル名 | 説明 | ファイル名 |
---|---|---|
秘密鍵 | 秘密鍵ファイル(SSL証明書発行時に作成した秘密鍵) | private.key |
SSL証明書 | CAから発行されたSSL証明書 | cert.crt |
チェーンファイル | 中間証明書 | chain.crt |
/var/snap/nextcloud/current/certs/custom
ディレクトリを作成します。このディレクトリ内に上記3ファイルを配置します(root権限)。ちなみに秘密鍵だけは、0700 の権限にしないと怒られます。他ファイルも適切な権限をつけておきます。
配置が終わったら以下のコマンドを実行します。
$ sudo snap run nextcloud.enable-https custom -s cert.crt private.key chain.crt
ブラウザからアクセスしてみてHTTPS化と独自SSL証明書になっていることを確認します。確認が終わったらインターネッツに公開できますね!。
メンテナンスモードになってしまった
サーバを再起動したタイミングなのか、このサーバー・・・
と表示されてしまっていた。自分でメンテナンスモードにしたつもりはないのに。
コマンドからメンテナンスモードON/OFFできるそうです。
$ sudo nextcloud.occ maintenance:mode --off
Nextcloud 使ってみて
とりあえずHTTPSのポート変えて運用するのには問題なさそう。
あと全体的になかなかよさそうですね。スマホアプリもあるし割といい。
ただ容量が、なんで10GB固定なんだろ?そこが分からないのでもう少し調べてみる必要がありそう。
参考にさせて頂いたサイト様