クラウドストレージは、何かが発生してコンピューターが失われたり破損したりした場合にファイルを安全に保つための優れた方法です。 外出先や職場からファイルにアクセスしたり、デバイス間ですべてを同期したりするのに役立ちます。
ただし、クラウドストレージには1つの大きな欠点があります。 あなたはあなたの個人的なファイルのすべてである会社を信頼しなければなりません。 ハッキングされた場合はどうなりますか? 本当に信頼できるものなのでしょうか、それともあなたが見ていないときにあなたのものを通り抜けているのでしょうか? 確実に知ることは実際には不可能です。
別のオプションがあります。 Nextcloudを使用して、独自のクラウドストレージをホストできます。 Nextcloudは、オープンソースのクラウドストレージソリューションであり、独自のクラウドストレージ会社になります。 使いやすくクリーンなインターフェイスとすべてのデバイス用の付属アプリがあるので、一緒にハッキングされたジャンクに対処する必要はありません。
このガイドでは、VPS(仮想プライベートサーバー)でNextcloudをホストすることに焦点を当てますが、ホームネットワークでローカルに実行することもできます。 ポート転送を設定するか、VPNを実行している場合を除き、外部からアクセスすることを期待しないでください。 手順の一部は少し異なるため、ドメイン名を購入したり、SSL証明書をセットアップしたりする必要はありません。
ホストを選択
クイックリンク
- ホストを選択
- 必要なものをインストールする
- ファイアウォールを設定する
- SSHを構成する
- SSHキー
- 窓
- MacおよびLinux
- ルートとパスワードを許可しない
- SSHキー
- データベースを構成する
- PHPを構成する
- Nextcloudを入手
- SSL証明書を作成する
- Nginxを構成する
- Nextcloudを開始
真のクラウドソリューションを使用しており、Web経由でファイルにアクセスできるようにするには、NextcloudをホストするVPSをセットアップする必要があります。 素晴らしいオプションがいくつかありますので、あなたに最適と思われるものを選んでください。 ホストをまだ考えていない場合は、 Linode 、 DigitalOcean 、およびGandiを確認してください。
このガイドでは、サーバーオペレーティングシステムとしてDebian 9「ストレッチ」を使用します。 Debianは非常に安定しており、デフォルトではかなり安全です。 また、ほとんどのホスティングプラットフォームで十分にサポートされています。 Ubuntuに慣れている場合は、UbuntuはDebianをベースにしているため、このほとんどが直接適用されます。
また、サーバーのドメイン名を取得する必要があります。 これは公開サイトにはならないので、本当に好きなように作成できます。 ドメイン名を購入およびリンクするプロセスは、ホストおよびドメイン名プロバイダーごとに異なるため、選択したサービスが提供するドキュメントを必ず確認してください。
ここでのすべては、Linuxコマンドラインからリモートで処理されます。 そのため、MacまたはLinuxを使用している場合は、ターミナルを開いてSSHを使用してVPSにアクセスできます。 Windowsを使用している場合は、 PuTTYなどのSSHクライアントを入手してください 。
必要なものをインストールする
このパズルにはたくさんのピースがあります。 今すぐそれらをすべて取得することもできますので、ここから続行する必要があるものがあります。 通常、Debianにはデフォルトでsudoがインストールされていないため、まずそれを取得してセットアップします。
$ su -c 'apt install sudo'
rootパスワードを入力すると、Sudoがインストールされます。 次に、ユーザーをsudoグループに追加する必要があります。
$ su -c 'gpasswd -a username sudo'
これで、sudoを使用できます。 すぐに動作しない場合は、再度ログインする必要があります。 これ以降、特にセキュリティ目的でルートログインを無効にするため、代わりにsudoを使用します。
次に、Debianのリポジトリからすべてを取得します。
$ sudo apt install ufw mariadb-server nginx certbot php php-mysql php-fpm php-cli php-json php-curl php-imap php-gd php-xml php-zip php-intl php-mcrypt php-imagick php-mbstring
ファイアウォールを設定する
サーバーはインターネット上にあります。 それを回避する方法はありません。これは、攻撃者に対処する必要があることを意味します。 単純なファイアウォールを設定すると、多くの潜在的な脅威を防ぐことができます。
iptablesを直接使用する代わりに、UFW(Uncomplicated Firewall)を使用してシステムを保護できます。 シンタックスがシンプルで、作業がずっと簡単です。
ファイアウォールのすべてを無効にすることから始めます。 これにより、すべてのサービスとポートへの接続を拒否するようにデフォルトポリシーが設定され、攻撃者が忘れられたポートに接続できないようにします。
$ sudo ufwデフォルトは着信を拒否します
$ sudo ufwデフォルトは発信を拒否$ sudo ufwデフォルトは転送を拒否
次に、許可するサービスをufwに伝えることができます。 この場合、SSHとWebアクセスのみが必要です。 また、NTPとDNSを有効にして、サーバーが更新を取得してそのクロックを設定できるようにする必要があります。
$ sudo ufw allow in ssh $ sudo ufw allow out ssh $ sudo ufw allow in http $ sudo ufw allow out http $ sudo ufw allow in https $ sudo ufw allow out https $ sudo ufw allow in ntp $ sudo ufw allow out ntp $ sudo ufw allow in 53 $ sudo ufw allow out 53 $ sudo ufw allow in 67 $ sudo ufw allow out 67
これでファイアウォールを起動できます。 SSHの中断に関する警告が表示されますが、すでにSSHを許可しているので、大丈夫です。
SSHを構成する
SSHは、Linuxサーバーで最も頻繁に攻撃されるサービスの1つです。 これはサーバー上の他のすべてへのゲートウェイであり、通常はパスワードでのみ保護されています。 そのため、SSH経由で攻撃者がサーバーに簡単にアクセスできないようにすることが重要です。
SSHキー
最初に、パスワードに代わるはるかに安全な代替手段であるSSHキーをセットアップする必要があります。 WindowsとMacおよびLinuxではプロセスが異なるため、デスクトップに合った指示に従ってください。
窓
Windowsの方法と同様に、この簡単なタスクを完了するにはさらに別のプログラムが必要です。 PuTTYgenは、PuTTY用のRSAキージェネレーターです。 PuTTYダウンロードページから入手できます 。 ダウンロードして実行します。
開いたウィンドウで、キーに名前を付け、そのパスワードを作成します。 これは、サーバーへのログインに使用するパスワードです。 下部で、SSH-2 RSAを選択し、少なくとも2048ビットのキーサイズを設定します。 4096の方が優れていますが、2048はわずかに高速です。 次に、鍵を生成し、公開鍵と秘密鍵の両方を保存します。 最後に、ウィンドウの上部に表示される公開キーをコピーします。
PuTTYを使用してサーバーに接続します。 〜/ .ssh / authorized_keysにあるファイルを開き、キーを貼り付けます。
PuTTYに戻り、サイドメニューでSSHを見つけます。 次に、「Auth」を開きます。Pivateキーのフィールドで、保存した秘密キーの場所を参照します。 PuTTYのすべてがサーバー用にセットアップされたら、セッションを保存します。 次に進む前に、テストして、キーに接続していることを確認してください。
MacおよびLinux
MacとLinuxのユーザーはここではるかに簡単な道を歩んでいます。 SSHキーがない場合は、SSHキーを生成することから始めます。 キーのパスワードを作成するオプションがあります。 これはオプションなので、それがあなたの電話です。
$ ssh-keygen -b 4096 -t rsa
次に、サーバーにキーを送信します。 ユーザー名とサーバーのIPを置き換えます。
$ ssh-copy-id -i〜/ .ssh / id_rsa.pub
それでおしまい!
ルートとパスワードを許可しない
キーをセットアップしたら、SSHのパスワードを無効にできます。 パスワード付きのキーを設定しても心配する必要はありません。 それは別の何かであり、これはまったく影響しません。 / etc / ssh / sshd_configにあるSSH構成ファイルを開きます。
$ sudo nano / etc / ssh / sshd_config
次の行を見つけます。
#PermitRootLogin禁止パスワード
次のように変更します。
PermitRootLogin no
次に、2行を見つけます。
#PasswordAuthenticationはい#PermitEmptyPasswordsいいえ
それらを次のように変更します。
PasswordAuthentication no PermitEmptyPasswords no
最後に、見つけます:
UsePAMはい
成功する:
UsePAMいいえ
ファイルを保存して閉じます。 次に、SSHを再起動します。 これはあなたをキックオフするかもしれませんので、もしそうなら再接続してください。
データベースを構成する
次に行う必要があるのは、データベースの構成です。 ここにはあまり関与していませんので、あまり心配しないでください。 Nextcloudがアクセスするためのユーザーと空のデータベースをセットアップするだけです。
実際に、MariaDBをセットアップして保護する便利なスクリプトがあります。 最初に実行します。
$ sudo mysql_secure_installation
デフォルトのルートパスワードは空なので、尋ねられたら「Enter」を押します。 次に、rootパスワードを設定するように求められます。 それを行う。 以下のすべての質問に「はい」と答えてください。
設定したばかりのrootパスワードでデータベースにログインできます。
$ sudo mysql -u root -p
プロンプトがMariaDBに変わります。 これは、データベースサーバーを管理するためのコンソールです。 新しいデータベースを作成することから始めます。 大文字はここでカウントされます。
CREATE DATABASE nextcloud;
次に、そのデータベースのユーザーを作成します。
CREATE USER `nextcloud` @` localhost` IDENTIFIED BY "PasswordForUser";
次に、そのユーザーにデータベースを使用する許可を与えます。
nextcloud。*にすべてを付与する `nextcloud` @` localhost`;
それでおしまい! これで、データベースサーバーを終了できます。
PHPを構成する
NextcloudはPHPで書かれています。 Nextcloudが正しく機能するために必要なPHP拡張機能とともに、Debian Stretchで利用可能な最新バージョンのPHPを既にインストールしています。 Nginxでより簡単に機能させるために、PHP構成にいくつかの調整を加える必要があります。
本当に基本的なセキュリティ調整が必要です。 これらは大きなものではありませんが、サーバーのセキュリティを向上させるのに役立ちます。
sudoとお好みのテキストエディターで/etc/php/7.0/fpm/php.iniを開きます。
このファイルは非常に大きいため、エディターの検索機能を使用してナビゲートしてください。 Nanoを使用している場合、Ctrl + Wです。 見つける必要がある最初のオプションはdisable_functionsです。 最後にphpinfo、system、mail、execを追加します。
次に、sql.safe_modeを見つけてオンにします。 次に、allow_url_fopenをオフに設定します。 ファイルの最後に、次の行を追加し、保存して閉じます。
Nextcloudを入手
NextcloudはまだDebianのパッケージとして利用できませんが、それは大丈夫です。 あなたは本当にそれをする必要はありません。 WordPressのような他の事前に構築されたPHP Webアプリケーションとよく似ており、Nextcloudをインストールする場所を抽出できる圧縮アーカイブで提供されます。
現時点では、最新の安定版リリースはNextcloudです。これを読んでいるときに最新バージョンが何であるかを再確認してください。 ガイドでは12を参照しますが、最新の安定したものを使用します。
Nextcloudアーカイブをダウンロードするディレクトリに移動します。 次に、/ var / wwwに変更して抽出します。
$ cd〜/ Downloads $ wget https://download.nextcloud.com/server/releases/nextcloud-12.0.3.tar.bz2 $ cd / var / www $ sudo tar xjpf〜/ Downloads / nextcloud-12.0.3。 tar.bz2
将来これを読んでいる場合は、Nextcloudのサーバーインストールページでダウンロードリンクを見つけることができます 。
最後に、Nextcloudインストールの所有権をwww-dataに変更します。
$ sudo chown -R www-data:www-data / var / www / nextcloud
SSL証明書を作成する
Certbotのおかげで、SSL証明書の作成は非常に簡単です。 Certbotは自動的にSSL証明書を生成し、作成するサイトのWebルートに配置します。 単一のコマンドを実行するだけです。
$ sudo certbot certonly --webroot -w / var / www / nextcloud -d your-domain.com -d www.your-domain.com
Certbotを実行するのは初めてなので、メールアドレスの入力を求められます。 そのアドレスを使用して、証明書の有効期限が近づいているときに警告します。 1つのコマンドで簡単に更新することもできます。
Nginxを構成する
Nginxは、軽量でありながら強力なWebサーバーです。 Nextcloudへのアクセスに使用するインターフェースを提供します。 Nginxに関連付けられた構成ファイルがいくつかあります。 1つ目は、/ etc / nginx / nginx.confにあるメイン構成です。 これがメインの構成ファイルですが、しっかりしたデフォルトがあります。 自分が何をしているのか知っていればそれで遊ぶことができますが、放っておいても大丈夫です。
次の構成ははるかに長く複雑です。 ありがたいことに、すべてを書く必要はありません。 Nextcloud開発者はすでにそうしました。 変更するだけです。 構成ファイルはNextcloudのサイトにあります。 Nginxのwebrootを入手してください。 / etc / nginx / sites-available / nextcloudに新しいファイルを作成し、貼り付けます。
ファイルを取得したら、いくつかの簡単な変更を加える必要があります。 まず、アップストリームブロックを見つけて、次のように変更します。
アップストリームphp-handler {server unix:/run/php/php7.0-fpm.sock; }
次に、cloud.example.comと書かれている場所を見つけて、ドメイン名に変更します。
最後に行う必要があるのは、NginxにSSL証明書を指定することです。 行を変更します。
ssl_certificate /etc/ssl/nginx/cloud.example.com.crt; ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key;
に:
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
それでおしまい! 次に、Nginxが見つけられるようにリンクする必要があります。
$ cd / etc / nginx / sites-enabled $ sudo ln -s / etc / nginx / sites-available / nextcoud nextcloud
そこにある既存のデフォルトを削除します。
$ sudo rm default
PHPとNginxを再起動すると、Nextcloudにアクセスできるようになります!
$ sudo systemctl restart php7.0-fpm $ sudo systemctl restart nginx
Nextcloudを開始
Webブラウザーを開き、ドメイン名に移動します。 Nextcloudセットアップ画面が表示されます。 自分で管理者アカウントを作成し、作成したデータベースアカウントの情報を入力します。
Nextcloudは、自身を構成してインストールするのに数分かかります。 完了すると、新しいNextcloudダッシュボードにドロップされます。 そこから、新しいユーザーを作成して、新しいクラウドストレージに信頼できる人を許可できます。 ファイルのアップロードをすぐに開始することもできます。
それでおしまい! これで、独自のプライベートクラウドができました!