無料のファイル共有サービスNextcloudをCentOS8にインストール

Googleドライブ(Google WorkspaceのBusiness Starter)とOneDrive(Microsoft 365 family)ではアカウントなしのゲストユーザーが共有フォルダにファイルをアップロードできなかったので、お客様から簡単に大容量のファイルを外部サービスを使わず送ってもらう方法を考えたときの覚書。

ちなみにfirestorageのアップロードスペースを使えばアカウントなしで簡単にできる。


1.Nextcloudとは

オープンソースのファイル共有サービスを自サーバーに構築できる。

DropboxやGoogle Driveのようなオンラインストレージを自サーバーで構築できる。
PHPとJavaScriptで作られているのでカスタマイズも出来そう。

デスクトップアプリやAndroidアプリ、iOSアプリも配布している。
ライセンスはGPL。

開発も活発的に行われているので今後も期待できる。


2.CentOS8にインストール

公式サイトのドキュメントが十分に詳しい。

環境: CentOS Stream 8, nginx 1.16.1, PHP 7.4.6

必要なツールをインストール。
# dnf install -y epel-release yum-utils unzip curl wget bash-completion policycoreutils-python-utils mlocate bzip2

nginx, php, mariadbはインストール済み。

PHPの必要なモジュールをインストール。
# dnf install -y php php-gd php-mbstring php-intl php-pecl-apcu php-mysqlnd php-opcache php-json php-zip

RedisとImagemagickを使うためのモジュールをインストール
# dnf install -y php-redis php-imagick

見つからなかった。。。とりあえず後回し。

Redisをインストール。
# dnf install -y redis

Redisを自動起動登録して起動。確認。
# systemctl enable redis
# systemctl start redis
# systemctl status redis

Nextcloudのソースコードをダウンロード。
# cd /home/httpd/
# curl -O https://download.nextcloud.com/server/releases/nextcloud-20.0.7.zip

中身を確認して解凍。zipを削除。
# unzip -t nextcloud-20.0.7.zip | less
# unzip nextcloud-20.0.7.zip
# rm -f nextcloud-20.0.7.zip

dataディレクトリを作ってウェブサーバーに権限を与える。
# mkdir nextcloud/data
# chown nginx.www -R nextcloud

nextcloudディレクトリ全体に権限を与えないとセットアップウィザードが始まらない。

別ウィンドウでシステムログを確認しながら作業する。
# journalctl -f


3.Nginxの設定

公式サイトのドキュメントを参考に。

nginxの設定ファイル追加
# cd /etc/nginx/conf.d/
# vi 02_nextcloud.conf

まずはhttpで試すために変更した。
テストして再読み込み。
# nginx -t
# systemctl reload nginx

試しに設定したserver_nameへブラウザでアクセス。
セットアップウィザードが表示されるはず。

※ chromeだとキャッシュするのでnginxの設定をいろいろ変更しているときはFirefoxで確認した方がいい。


4.セットアップウィザード

公式サイトのドキュメントを参考に。

データベースはMariaDBを選択した。

特に問題なくウィザード終了。


5.共有機能を試す

ファイル一覧にはいくつかフォルダが表示されている。
共有テスト用のフォルダを作成して共有してみる。
権限は「アップロードと編集を許可」。

他のブラウザで共有リンクを開いてみるとアカウント作らずにアップロードできた。

自社サーバーにインストールすれば、外部サーバーを介さずに簡単にファイルを送ってもらえる環境を構築できそう。

ただネットワーク回線、使用メモリ、セキュリティなどいろいろ考えないといけない。

社内グループウェアとしても使えそう。


【関連記事】