MENU
アーカイブ
INGSTE YouTubeチャンネル

NextcloudをUbuntuで構築する完全手順【自宅LAN用】

スマホで撮った写真をiCloudやGoogleフォトに自動保存している方が多いと思います。こういうサービスのことをオンラインストレージやクラウドと言います。

とても便利なのですが写真や動画が増えていくと、無料分のクラウド容量があふれてしまい毎月課金して容量を増やす必要が出てきます。

だったら、iCloudやGoogleフォトのようなサービスを自分のPCの中に作っちゃえ!ということで方法を解説していきます。

まずは、こういうDIY的なことと相性抜群のLinux Ubuntuでの方法を、そして今後はWindows 11でのやり方を紹介します。最初の章はLinux等で端末操作の経験があり、お使いのUbuntuバージョンを確認済みの場合は飛ばしても構いません。

大まかな流れは以下のとおりです。少し長くなりますが順を追って操作できるように記述しています。

目次

今回使う環境の確認

今回はUbuntuのバージョン 24.04 LTSを用います。

設定済みの方も多いと思いますが、同じWifiルーターにPCとスマホが繋がっていることを確認してください。

同じルーターに繋がっていなくても、例えば外出先からアクセスするには無料の追加機能が必要で、今後の記事で紹介します。

では、端末の操作方法と今回の説明で使うUbuntuのバージョン確認方法を記載します。既に端末でのインストール方法を知っていて、Ubuntuバージョン(24.04 LTS)も確認できている方は、次の項目「PHP8.3のインストール」に進んでください。

端末の起動と操作

何かをインストールするには端末(ターミナルとも呼ばれる)を使います。Ubuntuのアプリの一覧から「端末」を起動します。

このような端末が開きました。

ここにコマンドを書いてエンターキーを押すとPCを操作できます。アプリ(ソフト)・機能のインストールも行うことができます。

以降、PCの状態確認やインストールのためにコマンドをいくつか紹介していきますが、端末に打ってエンターキーを押すという手順で実行してください。

Ubuntuのバージョン確認

今回の記事では、Linuxの一つであるUbuntu バージョン 24.04 LTSを前提として説明します。

さっそく以下のコマンドを実行してください。

cat /etc/os-release

このコマンドをコピー&ペーストしても大丈夫ですが、端末に貼り付ける時はマウスを使うか、[Ctrl]+[Shift]+[vキー]を順番に同時に押します。

普通の貼り付けとは少し違い[Shift]キーが必要なのがポイントです 

たくさん情報が表示されましたが、矢印で示したように、24.04という数字があれば大丈夫です。Nextcloud動作に向けていくつかの機能をインストールしていきましょう。

PHP8.3のインストール

インストール前の準備

何かをインストールする前にはUbuntuに既に入っているソフトや機能を更新(アップグレード)したほうが良いです。

時々このような更新が提供されるので確認します。そのために2つのコマンドを実行します。

まずは以下を実行してください。

sudo apt update

すると、以下のようにパスワードを求められます。

Ubuntuのインストール時に決めたパスワードを入力します。

Ubuntuを起動させるときに入力するパスワードと同じものです

ただし、端末でパスワードを入力する時は、何を打ったか、何文字打ったかは一切表示されないのでゆっくり慎重に入力しましょう。

パスワードを打ち、エンターキーを押すと実際にこのコマンドが実行されます。

しばらくすると次のような画面になりました。

最後の行の行末で、カーソルと呼ばれる四角いものが点滅していますね。これは、先程のコマンドが既に実行されて、別のコマンドを実行できる待機状態になったということです。

次に以下のコマンドを実行してみましょう。もしパスワードを尋ねられたら先ほどと同じようにUbuntuのパスワードを入力してください。

sudo apt upgrade -y

何か更新できるものがあれば、インストールされて待機状態になります。これでソフトや機能をインストールする準備ができました。

PHPをインストール

ではこの章の本題であるPHPという機能をインストールします。

 Nextcloudは、ChromeやEdgeのようなブラウザから簡単に使えます。その操作画面(Webページ)を作ってくれるのが「PHP」で、Nextcloudを使う準備としてインストールします。

PHPにも様々なバージョンがありますが、 Ubuntu 24.04 LTSで簡単に利用できる「PHP8.3」をインストールしましょう。執筆時点では、PHPバージョン8.3はNextcloud最新版との相性も良いです。

以下のコマンドを端末で実行します。区切らずに全体をコピー&ペーストしてエンターキーを押してください。PHP本体と、Nextcloudを効率的に動かすための機能を一気にインストールします。Nextcloud上でオフィス系文書を扱うのに便利なLibreofficeも同時にインストールしています。

sudo apt install -y \
php8.3 php8.3-cli php8.3-fpm php8.3-gd php8.3-mbstring \
php8.3-xml php8.3-zip php8.3-curl php8.3-intl \
php8.3-fileinfo php8.3-exif php8.3-bcmath php8.3-gmp php8.3-bz2 php8.3-imagick \
php8.3-pgsql php8.3-redis php8.3-apcu \
imagemagick ffmpeg libreoffice curl

パスワードを求められたら入力します。

インストール時に次のようなメッセージが表示されるかもしれませんが、問題なくインストールされます。

注意、’php8.3-fileinfo’ の代わりに ‘php8.3-common’ を選択します
注意、’php8.3-exif’ の代わりに ‘php8.3-common’ を選択します

しばらく待つとインストールが終了し端末が待機状態になります。以下のコマンドでPHPがインストールされたかを確認します。

php -v

最初の行に表示されているように、PHP8.3がインストールされたことがわかります。

次に、PHPの調整を行っていきます。これを行っておくと、後々トラブルが少なくて済みます。では、次のコマンドを実行しWindowsのメモ帳のようなテキストエディタを開きます。

gnome-text-editor /etc/php/8.3/fpm/php.ini

開いた直後や最後の保存時にパスワードを尋ねられることがあるので、Ubuntuのパスワードを入力します。

テキストエディタでPHPの設定ファイルが開きます。ここに設定を書いていきます。もし、次のようなメッセージが出たら[管理者として開く]をクリックしてください。

この設定ファイルに既にある、以下の項目のイコール(=)の後の値を変更します。

テキストエディタで[Ctrl] +[f]を順に同時押しして該当箇所を検索できます。

memory_limit = 

upload_max_filesize = 

post_max_size = 

下の動画のように一つずつ検索して次の値に置き換えましょう。

memory_limit = 1G

upload_max_filesize = 8G

post_max_size = 8G

まだテキストエディタを閉じないでください。

次に、この設定ファイルの一番最後の行の下に、以下を貼り付けてください。

opcache.enable=1

opcache.enable_cli=1

opcache.memory_consumption=512

opcache.interned_strings_buffer=64

opcache.max_accelerated_files=100000

opcache.save_comments=1

以下のようになります。

貼り付け前

貼り付け後

ここまででPHPの設定ファイルであるphp.iniの設定ができたので、Ctrl +sキーで保存したあと、テキストエディタを閉じましょう。

以下のコマンドで設定を有効にします。

sudo systemctl restart php8.3-fpm

端末が待機状態になったら、次はApacheと呼ばれるサーバーをインストールします。

本章で設定したphp.iniに、cgi.fix_pathinfo=0 を記述する説明がネット上にありますが、これは Nginxサーバー + PHP-FPM を前提とした話です。

本記事のようにApacheサーバー + PHP-FPM構成では、この設定が原因で PHP が正しく実行されず、後ほどブラウザでアクセスする際、Access Denied(アクセス拒否)が発生することがあります。

Apacheサーバーのインストール

Nextcloudが動くための土台となっているApacheサーバーと関連機能をインストールします。

ここではインストールするだけなので外部に公開されることはありません。

サーバーはPCの中にデータを入れておく場所を用意し、スマホの写真などをPCとやり取りできるようにしてくれます

では次のコマンドを実行しましょう。

sudo apt install -y apache2 libapache2-mod-fcgid

これまでと同じように待機状態になればインストール完了です。ここまでで、PHPとApacheサーバーのインストールができました。サーバーはインストールと同時に動き始めています。ブラウザで「 localhost 」にアクセスすると確認できます。

アドレスバーに localhost と打ってエンターを押します。

次の画面が表示されたらApacheサーバーのインストールが成功し動いているということです。

もし、localhostにアクセスしても、エラーが出る場合は以下のコマンドを端末で実行しましょう。
パスワードを尋ねられたら、ここまでと同じようにUbuntuインストール時に決めたパスワードを入力してください。

sudo systemctl start apache2

もう一度、ブラウザでlocalhostにアクセスして確認してください。上の図にある「Apache2 Default Page」と書かれたページが表示されるはずです。

Apacheサーバーが動き始めたばかりで、このようなページが表示されるだけですが、サーバーはNextcloudを使うために必要です。

LAN内プライベートIPアドレスの固定

次に、自分のPCのIPアドレスを固定します。

スマホからPCに繋げる時に、このアドレスが変わってしまうと接続できなくなるので固定が必要です。

このIPアドレスはルーターが作ってくれるプライベートIPアドレスと言って、家庭内などで同じルーターを使っている機器同士を簡単に繋ぐ役割もありますが、固定しておかないと変わってしまうことがあります。

既にルーターなどでプライベートIPアドレスを固定されている方は次章に進み、今後の設定ではそのアドレスを使ってください。

まず、以下のコマンドを端末で実行します。

ip address |grep 192.168.

実行すると次のように表示されます。

筆者のPCでは[ 192.168.2.200 ]となっている部分がプライベートIPアドレスです。

これが、自分で設定し固定したアドレスなら先ほど述べたようにこの章は飛ばし、以降の設定でこのプライベートIPアドレスを使います。

固定した覚えがない方は、次の方法で固定しましょう。

ほとんどの方は固定しておらず以下の作業が必要です

先ほど表示させた、「ip address |grep 192.168.」の結果をもう一度確認します。

192.168.1. もしくは 192.168.2 などで始まっていると思います。

さらに末尾を確認します。これはイーサネットアダプタ名といい、筆者の環境では次のとおりです。

この場合、プライベートIPアドレスは[ 192.168.2.200 ]で、末尾のイーサネットアダプタ名は[ enp8s0 ]です。

皆さんの環境ではどうでしょうか?

次の設定ではこの2つの情報を使うので書き留めるか、コピペできるようにどこかに貼り付けておいても良いでしょう。特に3番目の数字に注目してください。192.168..

実際の設定ファイルを書いていきます。端末で以下を実行してください。パスワードを要求されたら入力してください。

 gnome-text-editor /etc/netplan/10-static-ip.yaml

何も書いていないテキストエディタが開くはずです。

ここに、次の設定を貼り付けます。

には先程調べたアドレス192.168..*の3つ目の数字を入れます。3箇所ありますね。

イーサネットアダプタ名の部分は、先ほど調べたイーサネットアダプタ名で書き換えます。

既に入っている末尾のコロン : を消さないようにしてください。

network:
  version: 2
  renderer: NetworkManager
  ethernets:	
    イーサネットアダプタ名:
      dhcp4: no
      addresses:
        - 192.168..200/24
      gateway4: 192.168..1
      nameservers:
        addresses: [192.168..1, 8.8.8.8]

筆者の場合は次のようになります。矢印の部分はお使いのPC環境によって違ってきます。

ここで以下のコマンドを実行してからPCを再起動しましょう。設定したプライベートIPアドレスに変更されます。

sudo netplan generate

sudo netplan apply

Ubuntuの設定アプリ上では表示が変だったりアドレスが変更されていないこともありますが、実際には固定IPが有効になっています。再起動後、上で設定した192.168から始まる新しいアドレスを使いブラウザでアクセスしてみましょう。

データベース管理システムPostgreSQLのインストール

次はデータベース管理システムであるPostgreSQLをインストールします。これにより、スマホとやり取りしたデータを管理し扱えるようになります。

次のコマンドを端末で実行してください。

sudo apt install -y postgresql

端末が待機状態になりインストールが完了したら、以下のコマンドでPostgreSQLの中に入ります。

sudo -u postgres psql

実行すると次のように表示されます。

これで、PostgreSQLの操作ができます。

次に、以下を実行してNextcloud用のデータを管理するユーザーを作ります。

この操作でユーザー名がnextcloudになります。YOUR_PASSWORDの部分は複雑なパスワードを決めて、置き換えてください。半角の大文字・小文字・数字・記号を混ぜると良いでしょう。

このパスワードは後ほど使うので、どこかに書いておきましょう。

CREATE USER nextcloud WITH PASSWORD 'YOUR_PASSWORD';

このように入力したあとエンターを押します。

CREATE ROLE と表示されれば成功です。データベース用のユーザーができました。

次は以下のコマンドで実際のデータベースを作成します。データベースの名前もnextcloudにしています。成功するとCREATE DATABASEと表示されます。

CREATE DATABASE nextcloud OWNER nextcloud TEMPLATE template0 ENCODING 'UTF8';

 \q と入力しPostgreSQLを終了します。終了すると通常の端末操作に戻ります。

Nextcloudがデータベースに正しくアクセスできるよう次の4つのコマンドを一つずつ実行してください。

sudo -u postgres psql -d nextcloud -c "GRANT ALL PRIVILEGES ON SCHEMA public TO nextcloud;"

sudo -u postgres psql -d nextcloud -c "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO nextcloud;"

sudo -u postgres psql -d nextcloud -c "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON SEQUENCES TO nextcloud;"

sudo -u postgres psql -d nextcloud -c "GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud;"

データベースの設定はここまでです。

Redisのインストール

次は複数のPCやスマホなどから同じデータにアクセスした時にファイルを保護するRedisをインストールします。

以下も一つづつ実行してください。

sudo apt install -y redis-server

sudo systemctl enable --now redis-server

redis-cli ping

最後にPONGと表示されます。

ここではインストールだけでしたが、この機能の設定は記事の最後で行います。

Nextcloud本体のインストール

端末コマンドでインストール

いよいよNextcloud本体のインストールを行います。以下のコマンドをまとめて端末に貼り付けてエンターを押してください。これらのコマンドによってNextcloud最新版がダウンロード・インストールされます。

cd /tmp

wget https://download.nextcloud.com/server/releases/latest.zip

unzip latest.zip

sudo mv nextcloud /var/www/

数分かかりますが、端末が待機状態になれば完了です。

ファイルのアクセス権限を調整します。以下を実行してください。

sudo chown -R www-data:www-data /var/www/nextcloud

sudo chmod -R 750 /var/www/nextcloud

Nextcloudとサーバーの連携

ではインストールしたNextcloud用にApacheサーバーを設定します。

次のコマンドを実行してテキストエディタを開きます。開くときや保存時にパスワードを訊かれたら、入力してください。

 gnome-text-editor /etc/apache2/sites-available/nextcloud.conf

次のコードをそのまま貼り付け、Ctrl+sで保存してください。

<VirtualHost *:80>
ServerName localhost
ServerAlias *
DocumentRoot /var/www/nextcloud

<Directory /var/www/nextcloud>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
 DirectoryIndex index.php index.html
</Directory>

<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
</FilesMatch>

ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined
</VirtualHost>

次に以下を実行して、設定を有効にします。

sudo a2enmod proxy_fcgi setenvif actions alias
sudo a2enconf php8.3-fpm
sudo a2ensite nextcloud
sudo a2dissite 000-default
sudo systemctl reload apache2

たくさん設定を行ったので、ここで念のためPCを再起動しましょう。

動き始めたNextcloudをブラウザから設定

これでブラウザからアクセスできます。

ブラウザのアドレスバーに先ほど設定した[192.168]から始まるアドレスを打ってエンターキーを押しましょう。Nextcloudの初期画面が表示されます。

ブラウザのアドレスバーでアクセスする際、localhostでアクセスしないでください。特に以下のセットアップ時には気をつけてください。

PCの環境によっては英語で表示されることもありますが上から順に説明します。

最初の管理者アカウント名にはNextcloudの管理者と分かるような名前を付けます。筆者はAdminとしました。

次に管理者用の強力なパスワードを入れます。大文字・小文字・数字・記号を混ぜて、複雑なパスワードを決めましょう。忘れないようにしてください。

次は画面の下の方、データベースのユーザー名、データベースのパスワード、データベース名を順に入れます。

先ほどデータベースのユーザー名とデータベース名は、どちらもnextcloud にしましたね。

パスワードもデータベースを作った時に決めたものです。

「データベースのホスト名」はそのまま、localhostで大丈夫です。

しばらくすると次の画面が表示されてインストール完了です。

ここでは[推奨アプリをインストール]をクリックします。

数分したらアプリのインストールが終わり下のような画面になるので、ハイライト部分右上の閉じるボタンを押します。

ダッシュボード画面(ホーム画面のようなもの)になればインストール完了です。

パフォーマンス調整

ここまでの設定で同一LAN内のスマホなどからもアクセスできるようになりました。

仕上げとして設定ファイルに書き足し、前の章で触れたファイル保護のためのRedisと、アクセス効率化のキャッシュ機能が使えるようにします。継続して使っていく上でNextcloudの安全性とパフォーマンスが向上します。

以下のようにテキストエディタでNextcloudの設定ファイルを開きます。

表示されたら[管理者として開く]ボタンをクリックし、パスワード入力を求めるメッセージが出るので入力します。

gnome-text-editor /var/www/nextcloud/config/config.php

開いた設定ファイルの一番最後の ); の直前に以下を書きます。これでRedisとキャッシュ機能が有効になります。

'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'filelocking.enabled' => true,

'redis' => [
'host' => 'localhost',
'port' => 6379,
],

'maintenance_window_start' => 1,

変更前

変更後

Ctrl + sキーで保存してテキストエディタを閉じます。

本記事では、ここで設定したRedisとキャッシュ機能である php8.3-apcu を既にインストールしています

最後にこれらのコマンドで、軽微な不具合を修正します。端末に貼り付けて実行してください。

sudo -u www-data php /var/www/nextcloud/occ maintenance:repair --include-expensive

sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices

スマホからもアクセスしてみましょう。PCで設定したアカウント名とパスワードでログインできます。

もし、エラーになる場合はスマホがNextcloudをインストールしたPCと同じWiFiルータに接続されているか(同一LAN内にあるかどうか)確認してください。

複雑に感じる部分もあったかも知れませんが、一通り動くようになるとNextcloudだけではなくLinuxやサーバー、データベースの概要に触れることができるはずです。

今後、Windows 11でのNextcloud構築やスマホ写真のバックアップ方法、Nextcloudアプリなどの便利機能、外出先でも使えるようTailscaleとの連携を紹介予定です。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次