Fedora 37 ServerにNextcloudサーバをインストールする場合。
3種類のインストール方法があるかと思います。
- DNF(yum)リポジトリのパッケージ
- snap
- podman(dockerイメージ)
インストールのしやすさ、管理のしやすさ、リソース消費のオーバーヘッド、コンテナ化の必要性の有無等が異なるため、どれが良いというものではありませんが。
dnfコマンドで完結し、リソースの消費が少ないと思われる、1番目のDNFによるインストール手順を記録させて頂こうと思います。
Raspberry Pi 4で64ビット版FedoraをUSB起動
使用するFedora 37 Serverは、aarch64版になります。
USBストレージ(容量1TBのHDD)から、Raspberry Pi 4で起動しました。microSDカードは不要です。
ルートパーティションの拡張しますが、swapパーティションを作成する場合は拡張前に行います。
静的IPアドレスの設定はこちらになります。
念のため、SELinuxを無効にした状態でインストールしました。
以上のような感じで、インストール→swap作成・パーティション拡張→静的IPアドレス設定→SELiux無効化を行っておきました。
DNFによるNextcloudサーバのインストール手順
それではFedora 37 ServerにNextcloudインストールを始めたいと思います。
httpd,nginx/mysql,postgresql,sqliteを選択可能
パッケージを検索してみますと。
nextcloud-nginxというパッケージが存在し、httpdの代わりにnginxを使用することも可能のようですが。
実際に試したところ、nextcloud-mysqlパッケージにnextcloud-httpdが付いてきてしまい、nginxとapache環境が混ざってしまいました。
このため、ここではhttpd(apache)を使用して初期設定を進めます。
nextcloudの本体はphp-fpmで動作しているため、nginxが使用したい場合は、あとでhttpdを削除して、nginxをインストールして下さい。
またmariadb(mysql)の代わりに、postgresqlやsqliteを使用することも可能のようです。
この記事では、Webサーバはhttpd(apache)、データベースはmariadb(mysql)を使用します。
mariadb-serverとnextcloud-mysqlパッケージを導入
次のコマンドを順に実行します。
sudo dnf install -y mariadb-server
sudo dnf install -y nextcloud-mysql
最初にmariadb-serverをインストールしました。
nextcloud-mysqlパッケージには、mariadb-server本体は含まれていないようです。mysqlの実体がmariadbになっている影響かもしれません。
付随して、php-fpmやnextcloud本体、そしてhttpd(apache)がインストールされます。
その他に、ImageMagickやgd等、Nextcloud実行に必要なパッケージが一通りインストールされるようです。
しばらく待ちますと、httpdやphp-fpm、nextcloud本体、そして必要なパッケージがすべてインストールされました。
nextcloudデータベース作成
続いて、mariadbの初期設定を開始します。
systemctlコマンドで、mariadbサービスを有効にして起動しました。
sudo systemctl daemon-reload
sudo systemctl enable mariadb.service --now
sudo mysql_secure_installation
表示された質問に対して、ほぼエンターです。New password欄に、rootのパスワードを2回入力しました。
- Enter current password for root (enter for none):→エンター
- Switch to unix_socket authentication [Y/n]→エンター
- Change the root password? [Y/n]→エンター
- New password:→ルートパスワード入力2回
- Remove anonymous users? [Y/n]→エンター
- Disallow root login remotely? [Y/n]→エンター
- Remove test database and access to it? [Y/n]→エンター
- Reload privilege tables now? [Y/n]→エンター
続いてnextcloudデータベースを作成します。
mysql -u root -p
# 先ほど設定したパスワードを入力
nextcloudデータベースのユーザとパスワードを決めておく必要があります。
こちらの例では、下記の値を使用しました。
- データベースユーザ:ncadmin ←適宜変更
- データベースパスワード: ncpassword ←適宜変更
実行前に、適宜変更しておいて下さい。
CREATE USER 'ncadmin'@'localhost' IDENTIFIED BY 'ncpassword';
CREATE DATABASE IF NOT EXISTS nextcloud;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'ncadmin'@'localhost' IDENTIFIED BY 'ncpassword';
show databases;
exit
無事に、MariaDBにnextcloudデータベースが作成されましたでしょうか。
ファイアウォール設定調整
nextcloudのポート番号ですが、標準ではhttpの80番が有効のようです。
こちらのTCPポートに他のPCやスマートフォン等からアクセスできるように、ファイアウォールの設定を変更しておきます。
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload
httpdサービス起動
httpd(apache)と、php-fpmサービスを有効にして起動しました。
sudo systemctl enable httpd.service --now
sudo systemctl enable php-fpm --now
http://<fedora serverのIPアドレス>
テストページが表示されて、httpdの動作に問題は無いように思えます。
nextcloudページは、下記のURLになります。
http://<fedoraサーバのIPアドレス>/nextcloud
URLは有効ですが、php-fpmの設定・nextcloud設定を調整する必要がありそうです。
php-fpm、nextcloud権限設定調整
forbidden、つまり禁止されているということで。
ファイルやディレクトリのアクセス権限・所有者が正しく設定されていないパターンかと思います。
httpdプロセスの所有者であるapache:apacheから、各種ファイルの読書ができるように所有者を変更しておきます。
このあたりの調整コマンドをまとめておきます。
sudo chown -R apache:apache /usr/share/nextcloud
sudo chown -R apache:apache /usr/share/nextcloud/config
sudo chown -R apache:apache /etc/nextcloud
sudo chown -R apache:apache /var/lib/php
sudo chown -R apache:apache /usr/share/nextcloud/apps
sudo chown -R apache:apache /var/lib/nextcloud/apps
/etc/nextcloudにconfig.phpが格納されていますが、初期設定時にhttpdプロセスからファイルを変更する権限が必要になります。/var/lib/phpディレクトリは、php-fpmのセッション情報等を格納する一時フォルダのようです。
設定を変更した場合、必ずhttpdとphp-fpmを再起動して反映します。
sudo systemctl enable httpd.service --now
sudo systemctl enable php-fpm --now
nextcloudの初期設定画面のエラー
さて、nextcloudの初期設定を行いましょう。
Webブラウザでnextcloudにアクセスすると、通常は初期設定画面が表示されますが。
大前提として、localhostアクセスで初期設定を行う必要があるそうです。
GUIが無いFedora 37 ServerでWebで初期設定ですか・・・・CUIのWebブラウザは難易度高そうですね。やってみましょう。
試しにlynxでローカルホストアクセスしてみたのですが。
ローカルホスト経由でも、同じエラーが表示されています。
これは難易度最高の難題です。DNFでNextcloudインストールを諦める方が、ここでバタバタと出ている予感がします。
コマンドラインでNextcloudを初期設定
まあここで諦めては、記事の価値が御座いませんので。
裏技として「コマンドラインでNextcloudを初期設定」してみようと思います。
裏技の公式マニュアル(?)はこちらになります。
Nextcloudのメンテナンスコマンドであるoccを使用します。
初期設定用のconfig.phpが破損しているため、Webでの初期設定は行えませんが。
httpdと同様にapache権限でoccコマンドを実行することで、config.phpなしで初期設定のプロセスが進むはずです。
次の4つのパラメータを決めておきます
- データベースユーザ: mariadbに合わせておく ncadmin
- データベースパスワード: 同上 ncpassword
- 管理者ユーザ: admin ←適宜変更
- 管理者パスワード: ncpassword ←適宜変更
runuserコマンドを使用するため、予めsudo suコマンドでroot権限でシェルを起動しました。
sudo su -
runuser -u apache -- php /usr/share/nextcloud/occ \
maintenance:install \
--database "mysql" \
--database-name "nextcloud" \
--database-user "ncadmin" \
--database-pass "ncpassword" \
--admin-user "admin" \
--admin-pass "ncpassword"
内部的な処理でデータベースの構築や、config.phpの生成が完了し。
「Nextcloud was successfully installed」と表示され、初期化が完了しました。
他のPCからアクセスできるように設定調整
最後に、httpdの設定とnextcloud設定を調整し、他のPCからアクセス可能にします。
httpd設定は、下記のコマンドを実行します。
sudo ln -s /etc/httpd/conf.d/nextcloud-access.conf.avail /etc/httpd/conf.d/z-nextcloud-access.conf
こちらのエラーが表示される場合は、config.phpを編集します。
sudo vi /etc/nextcloud/config.php
アクセス可能なIPアドレスを、trust_domains欄に追記しました。
以上で設定が完了しました。
Webブラウザにて、作成した管理ユーザとパスワードで、ログインできましたでしょうか?
以上のようなかたちで。
Fedora 37 Serverに、DNF標準パッケージのNextcloudをインストールしてみました。
たしかにRaspbery Pi 4 Model Bの64ビット版のFedora 37 Server上で動作しております。初期設定は完了しましたが。
残課題はいくつか御座います。
OCCコマンドを実行したときに表示される「The current PHP memory limit is below the recommended value of 512MB.」警告の設定調整や。
https、SSL対応も行う必要があるかと思います。
前者はこのあたりの記事になります。
後者も、既存のsnap/podman(docker)向けのNextcloud関連の記事で調整できると思います。
Raspberry Pi 4ですが。USB起動の64ビットOSでNextcloudを動かすのも、ごくごく普通になってきた感じです。
ほぼリソースのオーバーヘッドが無いインストール手順のため、動作速度は、他のインストール方法と比較して最高速かと思います。
実用性は十分に高いと思います。よろしければ動かしてみて下さい!