[RASPBERRY Pi]プライベートクラウドを構築 Created a private cloud for file exchange

 プライベートクラウドが必要になったので、Raspberry Pi 3Bで構築してみました。

この機種は市販のものではなく、Google AIYのキットの一つになりますので、手順は少し違うところがございます。

オープンソースの軽量プライベートクラウドは主に3種類があります。

NEXT Cloud、Owncloud、?

結局、これを選びました。


1)Raspberry Piにおける、アップデートGoogle AIYキットリポジトリー。対応しないと、いつもキーエラーになります。

sudo curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -

しかし、これを使っても、エラーが出ますので、下記のコマンドを実行。

curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

今回は問題なくサーバのアップデートとアップグレードができました。

sudo apt-get update 

sudo apt-get upgrade  

 2)必要なパッケージのインストール。

今回はソースからコンパイルではなく、Owncloudの標準リポジトリーからインストールと考えております。

まずは必要なコンポーネントパッケージをインストールします。個人的に気がしていますが、必要ないものも混ぜっています。商用環境ではないので、分別まで時間かかるのが嫌ですから、とりあえず全部インストールしておきます。

SQLITE3はいらないです。最初にOwncloudで利用しようと思いますが、Owncloudの設定画面では推奨しないと堅く書いていますが、代わりにMariaDBを利用するようにした。

sudo apt-get install php7.3-gd sqlite php7.3-sqlite3 php7.3-curl 

sudo apt-get install php php-gd php-sqlite3 php-curl libapache2-mod-php 

sudo apt-get install php-mysql php-mbstring php-gettext php-intl php-redis php-imagick php-igbinary php-gmp php-curl php-gd php-zip php-imap php-ldap php-bz2 php-phpseclib php-xml

3)利用しているRaspberry PiのDebianバージョンを確認

lsb_release -a 

デフォルトでインストールされている[lsb_release]コマンドを利用すれ良いと思います。万が一、該当パッケージがなければ、以下のコマンドで追加インストールも可能です。

sudo apt-get install lsb-release

まぁ、代わりに新規インストールなしで、以下のコマンドでもバージョン確認できます。

cat /etc/debian_version 

4)先ほど取得したDebianのバージョンをベースに、Owncloudのオフィシャルサイトに従って、リポジトリーを追加します。

Owncloud オフィシャルサイト:https://owncloud.com  

Owncloud オフィシャルダウンロードサイト:https://owncloud.com/download-server 

Owncloud リポジトリー追加コマンド確認ページ:https://software.opensuse.org//download.html?project=isv:ownCloud:server:10&package=owncloud-complete-files

 今回Raspberry Pi AIYキットで動いているのはDebian 10、Debian10用のリポジトリーを実施します。 手動とバイナリーで取得可能です。お好みで対応していきましょう。

5)Own cloudをインストールする。

sudo apt install owncloud-complete-files

こちらの機器では既にApache2をインストールしており、そこのステップを省略します。

デフォルトインストールが完了後、[/var/www/owncloud] が作られます。

6)MariaDBをインストール。

sudo apt-get install mariadb-server

sudo apt-get install mariadb-client

クライアントのインストール必要性を疑っていますが、不足がないように、インストールしておこう。

7)Apache2の設定を修正します。

sudo nano apache2.conf 

8)Apache2のModを修正し、起動します。

sudo a2enconf owncloud

sudo a2enmod rewrite

sudo a2enmod headers

sudo a2enmod env

sudo a2enmod dir 

sudo a2enmod mime

Apache2を再起動します。

sudo systemctl restart apache2

9) MariaDB初期セキュリティ設定

sudo mysql_secure_installation

10)自発行サーバ証明書対応

sudo apt install ssh 
cd /etc/apache2/ssl 

sudo openssl genrsa -des3 -out server.key 2048

sudo openssl rsa -in server.key -out server.key

sudo openssl req -new -days 3650 -key server.key -out server.csr

sudo openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650 

sudo nano /etc/apache2/sites-available/default-ssl.conf

#   SSLCertificateFile directive is needed.

#SSLCertificateFile     /etc/ssl/certs/ssl-cert-snakeoil.pem ←(この二行をコメントアウトします。)

#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key ←(この二行をコメントアウトします。)

SSLCertificateFile /etc/apache2/ssl/server.crt ←(この二行を追記)

SSLCertificateKeyFile /etc/apache2/ssl/server.key ←(この二行を追記)

Apache2を再起動します。

sudo systemctl restart apache2 

11)Owncloud設定ファイル修正

sudo nano /var/www/owncloud/config/config.php

プライベートクラウドにアクセスの際に、アクセス先制限できます。オープンソースのクラウドなので、セキュリティ強化の対策を取らないといけない。

  'trusted_domains' => 

  array (

    0 => 'localhost',

    1 => 'domain-name-from-your-company',

    2 => '10.0.1.*',  ←これはこちらのLocal networkです、無視してください。

    3 => '10.0.8.3',  ←これはこちらのLocal networkです、無視してください。

    4 => '10.0.9.100', ←これはこちらのLocal networkです、無視してください。

  ),

[domain-name-from-your-company]を自社もしくは自身取得したドメインを記入。
他の項目は適当に入力してください。
Owncloudに運用について、VPNでローカルネットに接続してから、アクセスできることを望ましいので、基本的に外部開放をお勧めしません。

12)Apache2のSSL設定ファイル修正

sudo nano default-ssl.conf

13)SSL Moduleを有効化、これは重要なステップです

これについて一時間ハマりました。80で接続できたのに、どうしても443でhttpsに接続できなかった。

sudo a2enmod ssl

セキュリティのために、80から443へ強制リダイレクトします。

sudo nano /etc/apache2/sites-available/000-default.conf

以下のように編集します。

<VirtualHost *:80>

# The ServerName directive sets the request scheme, hostname and port that

# the server uses to identify itself. This is used when creating

# redirection URLs. In the context of virtual hosts, the ServerName

# specifies what hostname must appear in the request's Host: header to

# match this virtual host. For the default virtual host (this file) this

# value is not decisive as it is used as a last resort host regardless.

# However, you must set it for any further virtual host explicitly.

ServerName domain-name-from-your-company

RewriteEngine on

        RewriteCond %{HTTP_HOST} ^example\.com

        RewriteRule ^/(.*)$ https://example.com/$1 [R=301,L]


ServerAdmin webmaster@localhost

DocumentRoot /var/www/html

 

保存してから、サーバApache2の設定を再度読み込みします。

sudo  systemctl reload apache2

14)ネットワーク開放

ネットワークの開放は光ならONUもしくはルータにおける作業です。

機種によって、さまざまになりますが、主に外部からの443接続に対して、Local networkのサーバIPの443へPort forwardにするだけです。ネットワーク機器の設定に従って行う。

15)Owncloud初期設定

Owncloudの初期設定には、DBとページ設定二つ部分に分けられています。

まずはDBからです、今回はSQLiteを利用しなくて、MariaDBを利用する予定です。

 Root権限を持つユーザーで行いましょう。

sudo mysql -u root -p

初めて利用する際に、Passwordがないため、Returnキーで入れる。 

root passwordの設定

update mysql.user set password=password('xxxxxxxxxxxxxxx') where user = 'root';

UPDATE user SET plugin='mysql_native_password' WHERE User='root';

DBユーザーを作成

create user AAAA@localhost identified by ‘xxxxxxxxxxxxxx’;

DBを作成

create database owncloud;

DBの権限をユーザーに付与する

grant all on owncloud.* to AAAA@localhost identified by 'xxxxxxxxxxxxxxxx';

flush privileges; 
exit; 

16)利用開始、新規ユーザーを追加

Owncloudにログインしてから、右上の管理者アイコンをクリック。

Pulldownメニューに[Users]選択肢があります。

クリックすると、既存ユーザーリストの上に、新規ユーザー追加の項目がある。

[Username]に新規ユーザー名、[Email]にユーザーのメールアドレスを入力、[Groups]はユーザーの分類となり、最後に[Create]ボタンをクリックすれば、完了!

これまで基本情報しかできないため、下のリストにユーザーが表示されれば、ユーザーのFull名前とパスワードなどの詳細情報の追加ができます。マウス移動するたびに、該当項目の右にペンが出てきますので、それをクリックすれば、修正可能です。

以上となります。

コメント