Raspberry Pi 4のfedora 37に標準DNFパッケージのNextcloudサーバをインストールするには

Fedora 37 ServerにNextcloudサーバをインストールする場合。

3種類のインストール方法があるかと思います。

  1. DNF(yum)リポジトリのパッケージ
  2. snap
  3. podman(dockerイメージ)

インストールのしやすさ、管理のしやすさ、リソース消費のオーバーヘッド、コンテナ化の必要性の有無等が異なるため、どれが良いというものではありませんが。

dnfコマンドで完結し、リソースの消費が少ないと思われる、1番目のDNFによるインストール手順を記録させて頂こうと思います。


Raspberry Pi 4で64ビット版FedoraをUSB起動

使用するFedora 37 Serverは、aarch64版になります。

USBストレージ(容量1TBのHDD)から、Raspberry Pi 4で起動しました。microSDカードは不要です。

インストール手順はこちらになります。

Raspberry Pi 4でFedora 37 Serverを起動してみました
Raspberry Pi 4で。 64ビット版Fedora 37 Serverを起動してみました。 起動用microSDカードの作成...

ルートパーティションの拡張しますが、swapパーティションを作成する場合は拡張前に行います。

Raspberry Pi 4版Fedora 37のswapパーティション追加手順
USBストレージから起動したFedora 37 Serverですが。 何かビルドしたりなんだりする場合、swap領域があったほうが、動...

静的IPアドレスの設定はこちらになります。

Raspberry Pi 4版Fedora 37のIPアドレス設定等コマンド覚書
先日、Raspberry Pi 4でFedora 37 Serverを起動しました。 システムの更新や、ホスト名の設定等。 ...

念のため、SELinuxを無効にした状態でインストールしました。

Raspberry Pi 4のFedoraでSELinuxを無効にするには
先日、USBストレージにインストールしたFeodra 37 ServerをRaspberry Pi 4で起動してみました。 イ...

以上のような感じで、インストール→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になっている影響かもしれません。

続いて、nextcloud-mysqlパッケージですが。

付随して、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

続いて、mariadbの初期設定を行います。

sudo mysql_secure_installation

表示された質問に対して、ほぼエンターです。New password欄に、rootのパスワードを2回入力しました。

  1. Enter current password for root (enter for none):→エンター
  2. Switch to unix_socket authentication [Y/n]→エンター
  3. Change the root password? [Y/n]→エンター
  4. New password:→ルートパスワード入力2回
  5. Remove anonymous users? [Y/n]→エンター
  6. Disallow root login remotely? [Y/n]→エンター
  7. Remove test database and access to it? [Y/n]→エンター
  8. Reload privilege tables now? [Y/n]→エンター

以上でMariaDBが使用できる状態になりました。

続いてnextcloudデータベースを作成します。

mysql -u root -p
# 先ほど設定したパスワードを入力

nextcloudデータベースのユーザとパスワードを決めておく必要があります。

こちらの例では、下記の値を使用しました。

  1. データベースユーザ:ncadmin ←適宜変更
  2. データベースパスワード: 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

–reloadオプションで設定変更を反映しました。


httpdサービス起動

httpd(apache)と、php-fpmサービスを有効にして起動しました。

sudo systemctl enable httpd.service --now
sudo systemctl enable php-fpm --now

Webブラウザでアクセス可能かどうか、実際に確認します。

http://<fedora serverのIPアドレス>

ふむふむ。

テストページが表示されて、httpdの動作に問題は無いように思えます。

nextcloudページは、下記のURLになります。

http://<fedoraサーバのIPアドレス>/nextcloud

403 Forbidden errorとなっています。

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を初期設定」してみようと思います。

裏技の公式マニュアル(?)はこちらになります。

https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#config-commands-label

Nextcloudのメンテナンスコマンドであるoccを使用します。

初期設定用のconfig.phpが破損しているため、Webでの初期設定は行えませんが。

httpdと同様にapache権限でoccコマンドを実行することで、config.phpなしで初期設定のプロセスが進むはずです。

次の4つのパラメータを決めておきます

  1. データベースユーザ: mariadbに合わせておく ncadmin
  2. データベースパスワード: 同上 ncpassword
  3. 管理者ユーザ: admin ←適宜変更
  4. 管理者パスワード: 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

この状態で、他のPCからアクセスできるか試してみましょう。

こちらのエラーが表示される場合は、config.phpを編集します。

sudo vi /etc/nextcloud/config.php

アクセス可能なIPアドレスを、trust_domains欄に追記しました。

30行目が追記した1行になります。

以上で設定が完了しました。

Webブラウザにて、作成した管理ユーザとパスワードで、ログインできましたでしょうか?


以上のようなかたちで。

Fedora 37 Serverに、DNF標準パッケージのNextcloudをインストールしてみました。

CPUが「不明なプロセッサー」になっておりますが。

たしかに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のnextcloudで「The current PHP memory limit is below the recommended value of 512MB.」の表示を消すには
先日構築した、snap版のNextcloudサーバ。 Nextcloudサーバ簡単構築 Fedora 28 snap版 Ra...

後者も、既存のsnap/podman(docker)向けのNextcloud関連の記事で調整できると思います。

Raspberry Pi 4ですが。USB起動の64ビットOSでNextcloudを動かすのも、ごくごく普通になってきた感じです。

ほぼリソースのオーバーヘッドが無いインストール手順のため、動作速度は、他のインストール方法と比較して最高速かと思います。

実用性は十分に高いと思います。よろしければ動かしてみて下さい!

スポンサーリンク

フォローする

スポンサーリンク