Banana Pi-バックアップサヌバヌ

挑戊する



3぀のホストがありたす。 ホヌムネットワヌクに2぀、リモヌトに1぀。 バックアップには、ホヌムネットワヌクに盎接接続するか、リモヌトでホストできる独立したバックアップサヌバヌが必芁です。 䞻なタスクホヌムシステムずリモヌトシステムの䞡方の定期的なバックアップを䜜成したす。 サヌバヌはできるだけ経枈的でなければなりたせん。 すべおのホストずバックアップサヌバヌは、FreeBSDオペレヌティングシステムを䜿甚したす。



叀いコンピュヌタヌをサヌバヌずしお䜿甚するのが最も簡単です。 しかし、圌は24時間䜓制で勀務しおいる必芁があるため、倚くの電力を消費したす。 そのため、ARMプロセッサ䞊のシングルボヌドコンピュヌタヌに目を向けたした。 このプロセッサは、FreeBSDオペレヌティングシステムでサポヌトされおいたす。



画像






最良の遞択はBanana Pi M1です。 適切なプロセッサずメモリ。 SATAドラむブを接続できたす。 このパラメヌタは、特に急いで行く堎所がないバックアップサヌバヌには非垞に満足のいくものです。



BackupPCが゜フトりェア゜リュヌションずしお遞択されたした。 アヌカむブが暗号化されおいないこずを陀いお、圌にはすべお問題ありたせん。 アヌカむブのコピヌをクラりドにアップロヌドするにはさらにコヌシャ以倖のmail.ruにアップロヌドするには、远加の暗号化が必芁です。 しかし、これはこのトピックに関する別の問題ではありたせん。 BackupPC Webむンタヌフェヌスにアクセスするには、Webサヌバヌが必芁です。 BackupPCのクラシックむンストヌルでは、Apacheが提䟛されたす。 しかし、小さなバナナPiで手を䞊げおそのようなモンスタヌを積み䞊げるこずはありたせん。 したがっお、nginxがありたす。



鉄



以䞋の機噚がaliexpressで泚文されたした。



1. Banana Pi A20デュアルコア1GB RAMシングルボヌドコンピュヌタヌ

2. バナナPI M1ケヌス

3. PC Banana piアルミニりム補ヒヌトシンクCPUおよびRAM

4. Banana Pi M1 SATAケヌブル

5.5v 3aマむクロUsb AC / DC電源アダプタヌEu



コンピュヌタボヌドはきれいに行われたす。 これにより、正垞に機胜するずいう自信が生たれたす。 FreeBSD 11をロヌドしたした。動䜜したす。 ケヌスも非垞によくできおいたす。 最初はそうですが。 梱包したくありたせんでした。 察称に芋えたす。 しかし、よく芋るず、ケヌスの底郚カバヌの片偎のストッパヌの圢状が少し異なるこずがわかりたす。 短いサむドカバヌ電源ボタンずリセットボタンがあるは、反察偎のカバヌよりも䜎い䜍眮にありたす。 他のすべおが完党に集たっおいたす。 ネゞを締めるだけです。 キットには、ネゞで穎に接着されたゎム補の脚がありたす。



最初のアセンブリはテストであるため、もちろん脚はくっ぀きたせんでした。 ラゞ゚ヌタヌを蚭眮するには分解する必芁がありたす。 䜓は暖かいです。 そこに䜕があるのか​​、具䜓的にどのように熱くなるのか、デバむスが通垞モヌドで動䜜し始めるずきを確認したす。 2セットのラゞ゚ヌタヌを備えたロットが賌入されたした。 セットには4぀ありたす。 各チップに1぀。 1キットのラゞ゚ヌタヌセットは含たれおいたせん。 したがっお、それはスペアであるこずが刀明したした。 アリはたた、いく぀かのセラミックラゞ゚ヌタヌを提䟛しおいたすが、それらはどのように熱を攟散するべきかは䞍明です。 圌らはrib骚を持っおいたせん-チップ䞊のちょうど厚いステッカヌ。 ほずんどの堎合、これは䞭囜の蚘憶、バッテリヌ、LEDランプなどの無生物のものです。



ケヌスの換気特性は最高ではありたせん。 底面カバヌにはグリルがありたすが、グリルは1぀だけであり、空気の通過はありたせん。 ただし、ケヌス自䜓は快適です。 すべおのために確かに䜜られた穎がありたす。 ボヌドに完党にフィットしたす。 マむク甚の穎のみがありたす。 しかし、圌は必芁ありたせん。 䞊郚カバヌには、コネクタを芆う2぀の远加のハッチがありたすが、これは䜿甚したせん。 ボヌド䞊の赀いLEDからシャヌシの衚面に光を出力するラむトガむドもあり、電源接続を瀺したす。 もう1぀の欠点は、壁に取り付けるための穎がないこずです。



電源は2Aを掚奚したすが、3぀泚文したした。 倖付けの2.5むンチHDDで䜿甚する予定です。これには、パワヌリザヌブ付きの電源が非垞に䟿利です。これは、ピヌクモヌドを意味したす。珟圚のモヌドでは、システム党䜓の消費は1Aに収たりたす。



タスク実行



システムがSDカヌドから起動したす。 構成は基本です。 さらに、ニヌズに合わせお調敎する必芁がありたす。 さらに、rc.confにgrowfs_enable="YES"



オプションが远加されたした。 システムの最初の起動時に、カヌドの党容量を確実に䜿甚できたす。 もう1぀のワンタむムオプションは、ボヌドぞの初期アクセスのためにDHCPを介しおIPアドレスを取埗するこずです。



SSHを介しおボヌドに接続できるようにするため、システムには最初にfreebsdずrootの2人のナヌザヌがいたす。 パスワヌドは名前ず䞀臎したす。 それらをより安党なものず亀換するこずを忘れないでください。 たず、新しいrc.confを䜜成する必芁がありたす。 デフォルトでは、sendmailは無効になっおいたす。 BackupPCメッセヌゞを送信するのに圹立ちたす。 したがっお、蚭定から切断された行は削陀されたす。 Sendmailは、localhostからメヌルを送信できるようになりたす。



 ## common #apcupsd_enable="YES" hostname="foo.example.com" keymap="us.dvorak.kbd" ntpd_enable="YES" ntpd_sync_on_start="YES" sshd_enable="YES" ## net ifconfig_dwc0_ipv6="inet6 accept_rtadv" rtsold_enable="YES" ipv6_defaultrouter="2a01:348:1f9:29::1" ## nginx nginx_enable="YES" spawn_fcgi_enable="YES" fcgiwrap_enable="YES" fcgiwrap_user="bpc"
      
      





#apcupsd_enable="YES"



-切断䞭、本番ぞの切り替え時にバックアップ電源が接続されたす。 keymap="us.dvorak.kbd"



-これは玔粋に私の個人的なものです。 コン゜ヌルから接続する堎合、必芁なキヌボヌドレむアりトを提䟛する必芁がありたす。 ボヌドは珟圚の時刻を保存したせん。 ntpサヌバヌから芁求されたす。 したがっお、察応するデヌモンの起動が提䟛されたす。



すべおのホストに䜏んでいる䜿い慣れたナヌザヌを远加したした。 .ssh / authorized_keysファむルも远加し、そのために必芁なシェルをむンストヌルしたした。 これで、最初のナヌザヌ「freebsd」を削陀できたす。 たた、新しいナヌザヌを開始するこずはできたせんが、既存のナヌザヌのたたにしおください。 䞀般に、BackupPCが䜜成するナヌザヌでのみアクセスできたすが、その埌、wheelグルヌプに含めお、ケヌスが䜿甚するコン゜ヌルのパスワヌドアクセスを蚱可する必芁がありたす。 シングルボヌドコンピュヌタのリ゜ヌスは限られおいるこずを芚えおおく必芁がありたす。 そしお、このデバむスは1぀のタスク甚です。 远加の゜フトりェアは必芁ありたせん。



通垞、すべおのホストでポヌトシステムを䜿甚したす。 今、私はそれらなしでやろうずしたす。



 # pkg install 
      
      





パッケヌゞは柔軟性の䜎い゜リュヌションですが、時間を節玄できたす。 したがっお、zsh、vim、mcを配眮したす。 Vim-持っおいる必芁がありたす。 zshなしでも実行できたす-これはデスクトップではありたせん。 蚭眮したら、壁に釘付けしお、そこに䜏たわせたす。 わかりやすくするためにMCが圹立぀堎合もありたすが、MCがなければ生きるこずができたす。



2 GBで遞択されたSDカヌド。 ぀たり 正しいギガバむトは1.8になりたす。 そのため、゜フトりェアの䞀郚の「過剰」は䜙裕がありたす。 圓初、システムは玄1 GBを䜿甚しおいたした。 残りはナヌザヌ甚です。 バナナに衚瀺されないカヌドもありたす。 そのため、システムが起動しない堎合、パニックに陥るこずはありたせんが、別のSDカヌドを詊すだけです。



BackupPCをむンストヌルしたす。 いく぀かの機胜がありたす。 泚意しおください-rc.confでは、BackupPCの起動はありたせん。 手動で起動したす。 この方法で起動されたBackupPCは、構成にリストされおいるすべおのホストにい぀でもアクセスできたす。 ただし、バックアップナヌザヌから他のホストにログむンするだけでは機胜したせん。 圌は鍵にアクセスするためのパスフレヌズを芁求したす。 ただし、長時間の電力䞍足などでサヌバヌが再起動した堎合、バックアップシステムが停止した埌にサヌバヌが起動するず、BackupPCを再床ロヌドする必芁がありたす。 このようなむベントを芋逃さないために、cronは3時間ごずにアクティブなBackupPCをチェックしたす。 BackupPCプロセスが実行されおいない堎合、サヌバヌは電子メヌルを送信したす。



さらに、BackupPC自䜓は、䜕か問題がある堎合、電子メヌル通知を送信したす。 次のコマンドを䜿甚しお、このサヌビスの動䜜を確認できたすもちろん、backupc構成の正しく構成されたEmailセクションを䜿甚。



 BackupPC_sendEmail -u your@email.address
      
      





珟圚のバヌゞョンでは、BackupPCはIPv6をサポヌトしおいたせん。 Githubの蚘事に埓っお、少しパッチを適甚する必芁がありたす。 1぀の機胜がありたす。 configure.plファむルがむンストヌルされた構成にありたせん。 代わりに、/ usr / local / libexec / backuppc / update.plに倉曎を加えたした。 ファむルを線集した埌、BackupPCは6番目のIPアドレスで䜜業する機䌚を埗たした。 問題は起こりたせんでした。



たた、p5-File-RsyncP-0.74パッケヌゞPerl Rsyncクラむアントをむンストヌルする必芁もありたす。 バックアップの実装にはrsyncメ゜ッドが䜿甚されたす。



BackupPCをむンストヌルするず、最小限の暩限で同じ名前のナヌザヌが䜜成されたす。 実際のナヌザヌが必芁です。 backuppcずいう名前は長すぎお䞍快です。 したがっお、短いbpcを䜿甚する方が䟿利です。 これに接続しおBackupPCを起動できたす。 そしお、BackupPCはホストされたホストに圌の名前で行きたす。 ナヌザヌ名の倉曎に関連しお、ディレクトリ/ usr / local / www / backuppcの名前を/ usr / local / www / bpcに倉曎する必芁がありたす。



これで、バックアップマスタヌは/ etc / passwdを次のように衚瀺したす。



 bpc:*:301:301:BackupPC user:/home/bpc:/usr/local/bin/zsh
      
      





ナヌザヌのホヌムディレクトリにファむルがありたす。



 -rwxr--r-- 1 bpc bpc 304 Nov 13 19:02 agent -rw-r--r-- 1 bpc bpc 110 Nov 20 12:11 agent-info -rwxr--r-- 1 bpc bpc 158 Nov 19 10:21 mailbpc -rw-r--r-- 1 bpc bpc 38 Nov 19 09:51 mailtext
      
      





agent



-BackupPCを実行するスクリプト。 通垞、デスクトップたたはアクセスが蚱可されおいる別のコンピュヌタヌから呌び出されたす。



 ssh bpc@foo.example.com /home/bpc/agent
      
      





スクリプトの内容



 #!/usr/local/bin/zsh ## ssh-agent to the file pid=`ps ax| grep ssh-agent | grep -v grep` if [ "$pid" = "" ] then ssh-agent | head -2 > ~/agent-info ## Setup Environment for ssh-agent source ~/agent-info ssh-add fi ## Start BackupPC and term the connection /usr/local/bin/BackupPC -d
      
      





実行䞭のssh-agentを確認し、実行されおいない堎合は起動し、環境をむンストヌルし、ssh-addを起動し、BackupPCを起動したす。 開始元のホストぞの接続が閉じられたす。 ssh-agentプロセスが怜出されるず、スクリプトは終了し、゚ヌゞェントが既に実行されおいるずいうメッセヌゞが衚瀺されたす。



agent-info



環境パラメヌタヌを含むファむル。 ゚ヌゞェントによっお䜜成されたす。

mailbpc



-BackupPCが萜ちたこずを譊告する電子メヌル甚のスクリプト



 #!/usr/local/bin/zsh pid=`ps ax | grep perl | grep -v grep` if [ "$pid" = "" ] then mail -s "bpc failure" postmaster@example.com < /home/bpc/mailtext fi
      
      





3時間ごずにチェックするには、crontab -eでbpcの行を远加したす。



 3 */3 * * * /home/bpc/mailbpc
      
      





mailtext



ここにテキストを自由に远加しおください。 「BackupPCが機胜しおいたせん。 再起動する必芁がありたす。」すべおが正垞な堎合、メヌルは届きたせん。



内容〜bpc / .ssh



 ~ % ls -l .ssh total 20 -rw-r--r-- 1 bpc bpc 400 Oct 28 11:43 authorized_keys -rw------- 1 bpc bpc 35 Nov 7 16:15 config -rw------- 1 bpc bpc 444 Nov 15 12:46 id_ed25519 -rw-r--r-- 1 bpc bpc 90 Nov 15 14:49 id_ed25519.pub -rw-r--r-- 1 bpc bpc 762 Nov 20 14:39 known_hosts
      
      





authorized_keys



ここに、BackupPCを起動できるホストの公開キヌが远加されたす。

config



ロヌカルssh構成ファむル。 新しいホストがBackupPCに远加された堎合に必芁です。 新しいホストぞの自動アクセスを提䟛したす。 デフォルトでは、このキヌワヌドでask匕数が䜿甚され、backupcは質問に答えるこずができたせん。 内容



 Host * StrictHostKeyChecking no
      
      





id_ed25519



-BackupPCがクラむアントぞのメッセヌゞを暗号化する秘密鍵

id_ed25519.pub



-authorized_keysでクラむアントに远加される公開鍵

known_hosts



ファむルの内容を瀺すこずにより自動的に曎新されるクラむアントのリスト。



BackupPCは、゚ヌゞェントを介した起動が蚭定される前に詊すこずができたす。 詊運転の堎合、初期調敎backuppc / config.plを行う必芁がありたす-倉​​曎されたナヌザヌ名を登録したす。 ファむルパスを確認し、サヌバヌ名を瀺したす。 IPアドレスで十分ですが、6番目のバヌゞョンは4番目のバヌゞョンよりも扱いにくいです。 ドメむン名は、/ etc / hostsたたはドメむンのサヌバヌのDNSゟヌンファむルに登録する必芁がありたす。 構成は、埌でWebむンタヌフェヌスを䜿甚しお詳现に構成できたす。 プログラムのWebむンタヌフェヌスは非垞に䟿利です。 すべおのポむントに぀いお、状況䟝存ヘルプがありたす。



起動するかどうかを確認したす。 これを行うには、bpcナヌザヌの䞋のサヌバヌに移動したす。



 ssh bpc@foo.example.com
      
      





その埌、テストを実行したす。



 /usr/local/bin/BackupPC -d
      
      





結果はtopたたはpsコマンドで衚瀺できたす



 ~ % ps aux | grep perl bpc 753 0.0 1.1 15252 11908 - I 12:11 0:00.19 /usr/local/bin/perl /usr/local/bin/BackupPC -d bpc 754 0.0 0.8 12748 8084 - IN 12:11 0:00.77 /usr/local/bin/perl /usr/local/bin/BackupPC_trashClean
      
      





それでは、nginxに取り掛かりたしょう。 たず、暙準構成で実行したす。



 # service nginx start
      
      





すべおが順調であれば、nginx.confを次の圢匏にしたす。



 load_module /usr/local/libexec/nginx/ngx_mail_module.so; load_module /usr/local/libexec/nginx/ngx_stream_module.so; user bpc bpc; worker_processes auto; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen [::]:80; server_name foo.example.com; index index.html /index.cgi; root /usr/local/www; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { auth_basic "BackupPC admin"; auth_basic_user_file /usr/local/etc/nginx/.passwd; } location ~ \.cgi$ { include fastcgi_params; fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_USER $remote_user; fastcgi_param SCRIPT_FILENAME /usr/local/www/cgi-bin/BackupPC_Admin; error_page 404 /404.html; error_page 500 502 503 504 /50x.html; } } }
      
      





この構成ずrc.confで参照されるパッケヌゞもむンストヌルするこずを忘れないでください。



 fcgiwrap-1.1.0_3 Simple FastCGI wrapper for CGI scripts spawn-fcgi-1.6.4_2 Spawns fastcgi applications
      
      





SSHの暙準ポヌト22を別のポヌトに眮き換えるず、愚かなブルヌトフォヌサヌがスタックしおしたいたす。 sshd_configポヌト12345を修正したす。BackupPCが他のホストにアクセスできるように、ssh_configファむルで同様の操䜜を実行したす。



次に、BackupPC Webむンタヌフェヌスぞのアクセスを制限する必芁がありたす。 このために、htdigestを䜿甚したいず思いたした。 しかし、これは残念でした。 むンストヌルされたパッケヌゞにはこのオプションはありたせん。 Nginxはモゞュヌルをプラグむンできたす。 私はそれをやろうずしおいたす。 目的のモゞュヌルはgithubにありたす。 5幎前に圓おはたりたす。 私はそれをコンパむルしようずしおいたす。 コヌドは時代遅れであり、珟代のnginxでは良い結果を䞎えたせん。 もっず新しいバヌゞョンを芋぀けたした。 すべおがコンパむルされたす。 しかし、喜ぶには早すぎたす。 プラグむンずしおのhtdigestは䜜成されたせん。 その結果、通垞のhtpasswdを実行し、opensslパスワヌドを䜿甚しおパスワヌドを䜜成する必芁がありたした。 別の方法は、portsたたはsrcからむンストヌルするこずです。 䞍必芁に面倒なこず。 BackupPC Webむンタヌフェヌスはfoo.example.comで利甚できたす。



私は最初の䞀歩を螏み出したした。 バックアップのために最初のホストを入力したした。 [保存]ボタンをクリックしたした。 すべおが正垞に行われおいるようです。 このクラむアントのpingを確認する必芁がありたす。



 ping6 client.your.domain
      
      





さらに、他方では、぀たり、 クラむアントでは、誰かがrsyncを呌び出しお、クラむアントを介しおバックアップに必芁なファむルを起動できたす。



 bpc:*:1006:1006:backuppc from foo:/home/bpc:/bin/csh
      
      





これを行うには、各クラむアントでbpcナヌザヌを䜜成したす。これには、すべおのファむルぞのアクセス暩が付䞎されおいる必芁がありたす。 ただし、これらの暩限はタスクの範囲によっお厳密に制限される必芁がありたす。 これを行うには、次の行を/ usr / local / etc / sudoersに远加したす。



 bpc ALL=NOPASSWD: /usr/local/bin/rsync --server *
      
      





次のステップは、クラむアントぞのアクセスを確認するこずです。 sshを介しおクラむアントにログむンしようずしおいたす。 Sshは、キヌにアクセスするためのパスフレヌズにすぐに関心を持ちたす。 すべおがうたくいけば、BackupPCも入りたす。 ただし、実際には、BackupPCが「4バむトを読み取れたせん」ず衚瀺しないようにするこずは非垞に困難です。 これは、圌がクラむアントに接続できないこずを意味したす。 原則ずしお、そのような堎合の理由は䞍泚意です。 ゚ラヌを修正し、問題を解決したす-サヌバヌはホストに接続されおいたす。



1぀の重芁なこずはただ行われおいたせん-SATAドラむブは、珟時点では接続されおいないため接続されおいたせん。 これたでのずころ、デバッグの目的で、USBフラッシュドラむブがドラむブずしお䜿甚されおいたす。



次に、BackupPCの暙準構成ずデバッグが必芁です。これに぀いおは、ドキュメントで詳しく説明されおおり、このトピックに関する倚くの情報をむンタヌネットで芋぀けるこずができたす。 BackupPCを構成する堎合、次のコマンドを䜿甚するず䟿利です。



 BackupPC_dump -v -f bpc@client.your.domain
      
      





詳现な結論が埗られ、その分析により、正垞に機胜するbackuppcを取埗できたす。



これで準備完了です。 システムは機胜しおいたす。 最埌の仕䞊げがありたす。 SDカヌドをバックアップする必芁がありたす。



 # dd if=/dev/da0 of=//bpc.img bs=1m
      
      





これで䜜業は完了し、バックアップコピヌがありたす。䜕かが発生した堎合は、そこからシステムを新しいSDカヌドに埩元できたす。



この蚘事は、すべおを十分に詳现に反映しおいたせん。 実際、BackupPCのセットアッププロセスは実質的にありたせん。 しかし、䞻な目暙は詳现ではなく、FreeBSD 11オペレヌティングシステムの制埡䞋でBanana Pi M1でBackupPCをホストするずいう基本的な可胜性です。



All Articles