NextCloudをインストールした(snap)

オープンソースのオンラインストレージの「NextCloud」をLAN環境にインストールしてみました
新しいパッケージシステムであるsnapを使うことでインストールは簡単に済みました
ただしsnap版独自の部分が少なからずあり、ネットで既に共有されている知見がそのまま使えない部分もあって注意が必要です
現時点ではどうしても解決できなさそうな問題が出てきて、いずれパッケージシステムを使わないマニュアルインストールをすることになりそうです

What’s NextCloud

NextCloud

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 Login

あとは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 nextcloud restart で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 nextcloud restart

  • 起動
    sudo snap nextcloud start

  • 停止
    sudo snap nextcloud stop

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

scprsyncrsnapshot などで、バックアップを取るときなどに必要になる

デフォルトのデータディレクトリを変更するには

※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)でマウントできないこともないのでしょうが、やりたいことはこれではない