10ワットのホームクラウドサーバー? 結構!

Habrのユーザーの皆さん、こんにちは。

今日は、ホームメディアサーバーの機能(mp3、ip-tv、ビデオ、uPnPなど)を完全に実行するホームWebサーバーについてお話します。

それはすべて、しばらくの間、Oracle vBox上の仮想マシンで4テラバイト(3x2GB HDD WD Green + 8 Gb ECC RAM)のRAID5で内部ニーズにHP MicroServer N36Lサーバーを使用したという事実から始まりました。毎年の無駄なキロワットという意味で絶え間ない話題が家族を悩ませていました(興味があれば、以下の投稿のいずれかでお話しします)。
さらに、テレビに直接接続できる本格的なメディアセンターとして使用できる可能性を備えた、より現代的なものが必要でした。

長時間の検索と比較の後、RK3188チップセットで現在関連するデバイスを選択しました:K-R42、4コアCPU、2 GBのRAMと4 GBのフラッシュメモリ(8 GBはボックスに誇らしげに示されていますが)と4コアアンドロイド4.2.2のMali400コアによってグラフィカルに。

もちろん、以下のすべては、HDMIを介してテレビに接続されている他の同様のデバイスに非常に適していますが、私にとっては、通常の熱伝達用の本格的なケース、サウンド用の光学SPDIFコネクタ、および最新のチップセットが存在することでした。

K-R42の価格は90〜120ドル(geekbuying.com、aliexpress.comと送料)の範囲で、2個の核スティック/ボックスよりも実際には高価ですが、同じRK3188チップセットの他の多くのものに匹敵します。

メディアセンターとしては大活躍します。現在のXBMC 12.2 Frodoがインストールされ、問題なく起動したため、リモートコントロールからの制御は非常にスムーズで、特別な問題はありませんでした。 外部アンテナのおかげで、無線通信は非常に安定しており、動作中はそれほど熱くなりませんが、負荷がかかると著しく暖まります。

1. Linuxを配置します。


これ-私はあまり違いはありませんでしたが、簡単にするためにDebian wheezyを選びました。

残念ながら、Mali400には完全な3Dグラフィックスアクセラレーションを取得するための有効なドライバーがないため、まだオプションはありません-デバイスをLinuxに完全に再フラッシュする代わりにchroot環境を使用する必要があります(対応するマニュアルは既にネットワーク上にあります)。
幸いなことに、Android用のすばらしいアプリがあります。LinuxDeployは、既存のメインストリームディストリビューションのいずれかを選択できるようにします。

詳細については説明しませんが、インストールは非常に簡単です。アプリケーションを起動し、目的の構成を選択して、[スタート]を押すだけです。
8GB microSDカードをメディアボックスに挿入した後、グラフィカル環境なしでSDカードをパーティションにインストールすることを選択しました(もちろん、VNC経由でグラフィカルデスクトップを取得したい人のためのオプションがあります)。 changeme

さらに設定するためにSSHを使用します。

ssh android@<ip-of-the-box>




2.ユーザーおよびその他...


Androidユーザーのパスワードは、当然ながらchangemeからもっと深刻なものに変更する価値があります。

passwd

また、rootの場合、/ etc / ssh / sshd_configでSSHログインを無効にします。

sudo nano /etc/ssh/sshd_config
 PermitRootLogin yes → PermitRootLogin no 


独自のフルユーザーを作成する必要がある場合は、

sudo adduser username

ユーザー「android」が存在するグループに追加することを忘れないでください:

sudo adduser username aid_system aid_radio aid_bluetooth aid_graphics aid_input aid_audio aid_camera aid_log aid_compass aid_mount aid_wifi aid_adb aid_install aid_media aid_dhcp aid_sdcard_rw aid_vpn aid_keystore aid_usb aid_drm aid_available aid_gps aid_media_rw aid_mtp aid_drmrpc aid_nfc aid_sdcard_r aid_shell aid_cache aid_diag aid_net_bt_admin aid_net_bt aid_inet aid_net_raw aid_net_admin aid_net_bw_stats aid_net_bw_acct

そうしないと、新しいユーザーが一部のデバイス/インターネットなどにアクセスできなくなる可能性があります。
必要なグループはいつでも表示できます

groups android

次に、新しくインストールしたシステムを更新しましょう。
 sudo apt-get update sudo apt-get dist-upgrade 


タスクマネージャーをインストールします。

sudo apt-get install cron

外部からサーバーへのアクセスを提供するには、DynDNSサイト(dyn.com、noip.comなど)に登録し、クライアントをインストールして動的IPアドレスを更新します(ddclientを使用しました)。

sudo apt-get install ddclient

ddclient構成の例を次に示します。
 # Configuration file for ddclient generated by debconf # # /etc/ddclient.conf protocol=dyndns2 use=web, web=checkip.dyndns.com/, web-skip='IP Address' server=www.dyndns.com login=myserveruser password='mydyndnspassword' myserver.dyndns.org 


ルーターでは、「マイクロ」サーバーのIP上のポート22(SSH)、80(HTTP)、443(HTTPS)に対してインターネットからのポート転送を有効にする必要があります。




3.ランプを入れる


ここではすべてが非常に簡単です。
 sudo apt-get update sudo apt-get install apache2 mysql-server php5 php5-curl php5-gd php5-mysql php-apc 


さらに設定しやすいように、グラフィックパネル(webmin)を設定します
 cd /tmp wget http://prdownloads.sourceforge.net/webadmin/webmin_1.660_all.deb sudo dpkg -i webmin_1.660_all.deb sudo apt-get -f install sudo service webmin start 

(webminリソースを節約するために、必要な場合にのみ手動で起動します)

これで、 https:// <ip-of-the-box>:10000にアクセスして、Androidユーザーで、あなたの心が望むものを設定できます。

これがまだ行われていない場合は、Webサーバーを再起動して、インストールしたすべてのモジュールをアクティブにします。

sudo service apache2 restart




4.スタートアップ


デーモンサービスがボックスの開始時にchroot環境に自動的にロードされるように、Linuxスクリプト/etc/init.d/myscryptが提供されています

私はこのように見えます:
 #!/bin/sh case "$1" in start) /bin/mount -a /etc/init.d/mysql start /etc/init.d/apache2 start /etc/init.d/ddclient start /etc/init.d/cron start ;; stop) /etc/init.d/apache2 stop /etc/init.d/mysql stop /etc/init.d/ddclient stop /etc/init.d/cron stop /bin/umount /mnt/usb ;; *) echo "Usage: $0 {start|stop}" ;; esac 


デバイスを完全に切断するのではなく、リモートコントロールからメディアプレーヤーをオフにすると、スタンバイモードに切り替わります(ネットワーク上では、この機能は欠点であると考えられますが、この場合は紛れもない利点です!)、すべての実行中のサービスは引き続き機能します。 プロセッサの負荷は約5%で、4つのコアのうち1つだけです!




5. ownCloudをインストールする


このクラウドサービスの5番目の安定バージョンは、非常に快適に使用できます。 Owncloudのインストールについては、公式ページ( http://doc.owncloud.org/server/5.0/admin_manual/ )で詳細に説明されています。ここでは、インストールに関する基本的な手順を示します。


 sudo echo 'deb http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/ /' >> /etc/apt/sources.list.d/owncloud.list sudo apt-get update sudo apt-get install owncloud 


次に、ブラウザに移動します

http:// <ip-of-the-box> / owncloud /

owncloudのカスタマイズを完了します。MySQLデータベースデータを入力します。

インストーラーが.htaccessを使用できないことについて不平を言う場合、
ファイルの変更/ etc / apache2 / sites-enabled / 000-default AllowOverride to All:

sudo nano /etc/apache2/sites-enabled/000-default
  <Directory /var/www/> … AllowOverride None → AllowOverride All … </Directory> 

また、SSLでowncloudを使用する場合は、/ etc / apache2 / sites-enabled / default-sslファイルでも:

sudo nano /etc/apache2/sites-enabled/default-ssl
 <Directory /var/www/> … AllowOverride None → AllowOverride All … </Directory> 


Webサーバーを再起動します。

sudo service apache2 restart

通常、owncloudをさらにカスタマイズしても問題は発生せず、管理者のマニュアルに詳細が記載されています。

5.1スペースが少ない場合

説明されているインストール中のクラウドストレージのサイズは、SDカードの空き容量によって制限されます。 利用可能な容量を増やす便利な方法は、owncloud / dataフォルダーを外部USB-HDDに転送することです。

これを行うには、外部USBドライブ(たとえば、その最初のパーティション)をext4としてフォーマットし、マウントポイントを/ etc / fstabで指定します。
 sudo mkdir /mnt/usb_hdd sudo chmod a+rwx /mnt/usb_hdd sudo nano /etc/fstab 

 … /dev/block/sda1 /mnt/usb_hdd ext4 noatime,acl,user_xattr 1 1 … 


ディスクをマウントする

mount /mnt/usb_hdd

そしてowncloud / dataをそれに転送します:
 sudo mv /var/www/owncloud/data /mnt/usb_hdd/ sudo ln -s /mnt/usb_hdd/data /var/www/owncloud/data 


現在、ストレージ容量は外部USBドライブの空き容量によってのみ制限されています。




6.計画に従ったバックアップ


簡単かつ迅速に、二重化の助けを借りて、外部サーバーで定期的なバックアップが編成され、必要に応じて暗号化も行われます。
メインファイルサーバーが同じネットワーク上にあり、wake-on-lanをサポートしている場合、このプロセスは完全に自動化できます(ファイルサーバーを含む)。

sudo apt-get install wakeonlan duplicity

MACアドレス33:d0:ab:dd:11:c1を使用して、ファイルサーバー192.168.0.2にバックアップ用のフォルダー(/ media / backup / owncloudなど)を作成します。
ローカルユーザーuser1に書き込み権限があります。

ファイルサーバーへのSSH経由でrootユーザーのパスワードなしのアクセスを設定します。
 sudo su ssh-keygen -t rsa (  ,   ) ssh-copy-id -i .ssh/id_rsa.pub user1@192.168.0.2 exit 


次に、crontabでタスクマネージャーのタスクを追加します。

sudo crontab -e
 49 23 * * * /usr/bin/wakeonlan 33:d0:ab:dd:11:c1 0 0 * * sun /usr/bin/duplicity full --no-encryption --volsize 100 --exclude /tmp --exclude /proc --exclude /sys / rsync://user1@192.168.0.2//media/backup/owncloud 0 0 * * 1-6 /usr/bin/duplicity --no-encryption --volsize 100 --exclude /tmp --exclude /proc --exclude /sys / rsync://user1@192.168.0.2//media/backup/owncloud 0 1 * * sun /usr/bin/duplicity remove-all-but-n-full 2 --force rsync://user1@192.168.0.2//media/backup/owncloud 


この計画に従って、chroot環境全体をバックアップします。日曜日は満杯になり、他の日は古いレコードを削除して増分します。 ファイルサーバーがスリープしている場合、ネットワーク上で事前に起動されます(もちろん、この機能をサポートしている場合)。




まあ、動作するメディアセンターとクラウドストレージを備えたWebサーバーが同時にあります。
建設的な批判と提案を歓迎します。

Source: https://habr.com/ru/post/J198492/


All Articles