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カードは不要です。

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

https://denor.jp/raspberry-pi-4%E3%81%A7fedora-37-server%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F

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

https://denor.jp/raspberry-pi-4%E7%89%88fedora-37%E3%81%AEswap%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E8%BF%BD%E5%8A%A0%E6%89%8B%E9%A0%86

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

https://denor.jp/raspberry-pi-4%E7%89%88fedora-37%E3%81%AEip%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E8%A8%AD%E5%AE%9A%E7%AD%89%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E8%A6%9A%E6%9B%B8

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

https://denor.jp/raspberry-pi-4%E3%81%AEfedora%E3%81%A7selinux%E3%82%92%E7%84%A1%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF

以上のような感じで、インストール→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対応も行う必要があるかと思います。

前者はこのあたりの記事になります。

https://denor.jp/snap%E3%81%AEnextcloud%E3%81%A7%E3%80%8Cthe-current-php-memory-limit-is-below-the-recommended-value-of-512mb-%E3%80%8D%E3%81%AE%E8%A1%A8%E7%A4%BA%E3%82%92%E6%B6%88%E3%81%99%E3%81%AB%E3%81%AF

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

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

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

実用性は十分に高いと思います。よろしければ動かしてみて下さい![amazonjs asin=”B0891RC99L” locale=”JP” title=”正規代理店商品 Raspberry Pi 4 Model B (8GB) made in UK element14製 技適マーク入”]

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です