オープンソースのオンラインストレージの「NextCloud」をLAN環境にインストールしてみました
新しいパッケージシステムであるsnapを使うことでインストールは簡単に済みました
ただしsnap版独自の部分が少なからずあり、ネットで既に共有されている知見がそのまま使えない部分もあって注意が必要です
現時点ではどうしても解決できなさそうな問題が出てきて、いずれパッケージシステムを使わないマニュアルインストールをすることになりそうです
What’s NextCloud
Nextcloudは、オンラインストレージの作成と使用のためのクライアント・サーバ型のソフトウェアである。
機能的にはDropboxに似ているが、オフプレミスのオンラインストレージサービスは提供しない。
Nextcloudはフリーかつオープンソースなので、誰でも自分のプライベートサーバにインストールして利用することができる。
NextcloudはownCloudの作者であるフランク・カーリチェックによって、ownCloudからフォークして誕生した。
by Wikipedia
設定メモ
インストールする
┌─╼ [~]
└────╼ $ sudo snap install nextcloud
nextcloud 24.0.3snap1 from Nextcloud✓ installed
パッケージシステムのおかげでコマンド一発です
1人目のアカウントを作成する
1人目はWebインターフェースで作成するより、コマンドラインで作成した方が安全な気がする
┌─╼ [~]
└────╼ $ sudo nextcloud.manual-install administrator Password1!
Nextcloud was successfully installed
信頼済みドメインに追加する
インストール直後はlocalhost
のみになっているので、
IPアドレスで直接アクセスできるようにしておく
Avahiを使ったLAN環境でNextCloudサーバーを簡単に見つけられるようにしておく
┌─╼ [~]
└────╼ $ sudo nextcloud.occ config:system:set trusted_domains 1 --value=192.168.100.253
System config value trusted_domains => 1 set to string 192.168.100.253
┌─╼ [~]
└────╼ $ sudo nextcloud.occ config:system:set trusted_domains 2 --value=microserver.local
System config value trusted_domains => 2 set to string microserver.local
ログの保存先をSyslogにする
単なる気休めレベル
┌─╼ [~]
└────╼ $ sudo nextcloud.occ config:system:set log_type --value=syslog
┌─╼ [~]
└────╼ $ sudo nextcloud.occ config:system:set syslog_tag --value=Nextcloud
┌─╼ [~]
└────╼ $ sudo nextcloud.occ config:system:set logfile --value=
┌─╼ [~]
└────╼ $ sudo nextcloud.occ config:system:set loglevel --value=3
snap版では nextcloud.occ
コマンドが、マニュアルインストール時のphp occ
の代わりとなる
なぜかこういったログが大量に記録されるようになった
Aug 14 13:45:14 nextcloud multipathd[661]: sda: add missing path
Aug 14 13:45:14 nextcloud multipathd[661]: sda: failed to get udev uid: Invalid argument
Aug 14 13:45:14 nextcloud multipathd[661]: sda: failed to get sysfs uid: Invalid argument
Aug 14 13:45:14 nextcloud multipathd[661]: sda: failed to get sgio uid: No such file or directory
どうやら仮想環境(VMWare)でやっていたからなようです
┌─╼ [~]
└────╼ $ sudo nano /etc/multipath.conf
defaults {
user_friendly_names yes
}
blacklist {
device {
vendor "VMware"
product "Virtual disk"
}
}
┌─╼ [~]
└────╼ $ sudo /etc/init.d/multipath-tools restart
この問題はこれで解決しました!!
ブラウザでWebインターフェースにアクセス
ブラウザで http://microserver.local
にアクセスする
あとはNextCloudを使うだけ
あら簡単!!
LAN環境 or VPN経由だけで使用する場合はここまでの設定で使えている
というかいくらパスワードを複雑にしたとしても、これをこのまま外向き(インターネット)に晒すはちょっと恐い気がした
最低限として2要素認証の導入は必要だと思う
Two-Factor Email
https://apps.nextcloud.com/apps/twofactor_email
Two-Factor TOTP Provider
https://apps.nextcloud.com/apps/twofactor_totp
後で役立つかもしれない情報
PHPのメモリ使用量の上限を拡張する
$ sudo snap set nextcloud php.memory-limit=1024M
設定値を書き換えたら
$ sudo snap restart nextcloud
でNextCloudを再起動する
設定値の確認は
┌─╼ [~]
└────╼ $ sudo snap get nextcloud
Key Value
http {...}
mode production
nextcloud {...}
php {...}
ports {...}
private {...}
┌─╼ [~]
└────╼ $ sudo snap get nextcloud php
Key Value
php.memory-limit 1024M
NextCloudの再起動・起動・停止
- 再起動
$ sudo snap restart nextcloud
- 起動
$ sudo snap start nextcloud
- 停止
$ sudo snap stop nextcloud
NextCloudのバックアップ・リストア
- バックアップ
$ sudo nextcloud.export -abcd
バックアップオプション
オプション | 説明 |
---|---|
a | アプリ |
b | データベース |
c | 設定 |
d | ファイル |
- リストア
$ sudo nextcloud.import [バックアップディレクトリー]`
バックアップ・リストアは事前訓練大事!!
設定ファイル
/var/snap/nextcloud/current/nextcloud/config/config.php
直接編集するのではなく nextcloud.occ
コマンドを通じて操作する
設定値を書き換えたら
$ sudo snap nextcloud restart
でNextCloudを再起動する
データディレクトリ
/var/snap/nextcloud/common/nextcloud/data
scp
、rsync
、rsnapshot
などで、バックアップを取るときなどに必要になる
デフォルトのデータディレクトリを変更するには
※snap版の場合、パッケージシステムの仕様で/mnt
以下か/media
以下にしかアクセスできないらしい
今回は気休めレベルのRaid1領域を/mnt/md1
にマウントしてそこをデータディレクトリとした
┌─╼ [~]
└────╼ $ sudo snap connect nextcloud:removable-media
┌─╼ [~]
└────╼ $ sudo cp -rp /var/snap/nextcloud/common/nextcloud/data /mnt/md1
┌─╼ [~]
└────╼ $ sudo mv /mnt/md1/data /mnt/md1/nextcloud_data
┌─╼ [~]
└────╼ $ sudo nextcloud.occ config:system:set datadirectory --value=/mnt/md1/nextcloud_data
System config value datadirectory set to string /mnt/md1/nextcloud_data
┌─╼ [~]
└────╼ $ sudo snap restart nextcloud
データディレクトリにNextCloudの外からデータを入れた場合には
初期データの移動など、NextCloudを介さずにデータディレクトリに直接ファイルをコピーしてしまうとNextCloud側から認識されない状態に陥ります
┌─╼ [~]
└────╼ $ sudo nextcloud.occ files:scan --path /mnt/md1/nextcloud_data --verbose
NextCloudのポートを変更する
┌─╼ [~]
└────╼ $ sudo snap set nextcloud ports.http=8080
┌─╼ [~]
└────╼ $ sudo snap set nextcloud ports.http=444
現時点ではどうしても解決できなさそうな問題
どうやらsnapでインストールしたNextCloudは外部のSMB共有にアクセスできないらしい
社内ファイルサーバーをNextCloudで一本化する気なら全く問題ありませんが、社内ファイルサーバーとNextCloudを共存させるには少し厳しい気がする/mnt
以下か/media
以下にsmbclient(mount -t cifs)でマウントできないこともないのでしょうが、やりたいことはこれではない