プライベートクラウドが必要になったので、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です、無視してください。
),
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名前とパスワードなどの詳細情報の追加ができます。マウス移動するたびに、該当項目の右にペンが出てきますので、それをクリックすれば、修正可能です。
以上となります。
コメント
コメントを投稿