スマホで撮った写真を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キー]を順番に同時に押します。


たくさん情報が表示されましたが、矢印で示したように、24.04という数字があれば大丈夫です。Nextcloud動作に向けていくつかの機能をインストールしていきましょう。
PHP8.3のインストール
インストール前の準備
何かをインストールする前にはUbuntuに既に入っているソフトや機能を更新(アップグレード)したほうが良いです。
時々このような更新が提供されるので確認します。そのために2つのコマンドを実行します。
まずは以下を実行してください。
sudo apt update
すると、以下のようにパスワードを求められます。


Ubuntuのインストール時に決めたパスワードを入力します。
ただし、端末でパスワードを入力する時は、何を打ったか、何文字打ったかは一切表示されないのでゆっくり慎重に入力しましょう。
パスワードを打ち、エンターキーを押すと実際にこのコマンドが実行されます。
しばらくすると次のような画面になりました。


最後の行の行末で、カーソルと呼ばれる四角いものが点滅していますね。これは、先程のコマンドが既に実行されて、別のコマンドを実行できる待機状態になったということです。
次に以下のコマンドを実行してみましょう。もしパスワードを尋ねられたら先ほどと同じようにUbuntuのパスワードを入力してください。
sudo apt upgrade -y


何か更新できるものがあれば、インストールされて待機状態になります。これでソフトや機能をインストールする準備ができました。
PHPをインストール
ではこの章の本題であるPHPという機能をインストールします。
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


パスワードを求められたら入力します。
しばらく待つとインストールが終了し端末が待機状態になります。以下のコマンドで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と呼ばれるサーバーをインストールします。
Apacheサーバーのインストール
Nextcloudが動くための土台となっているApacheサーバーと関連機能をインストールします。
ここではインストールするだけなので外部に公開されることはありません。
では次のコマンドを実行しましょう。
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 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
データベース管理システム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キーで保存してテキストエディタを閉じます。
最後にこれらのコマンドで、軽微な不具合を修正します。端末に貼り付けて実行してください。
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だけではなくLinuxやサーバー、データベースの概要に触れることができるはずです。
今後、Windows 11でのNextcloud構築やスマホ写真のバックアップ方法、Nextcloudアプリなどの便利機能、外出先でも使えるようTailscaleとの連携を紹介予定です。













コメント