エンドツーエンドで暗号化のオンラインストレージTeamDriveを自宅Synologyで運用
前にも色々と書いてますが、DropboxPortableAHKが一度使えなくなったので、職場のPCでDropboxが使えなくなったせいで、急遽ownCloudを自宅サーバーに導入しました。条件としては、クライエントソフトがUSBドライブから起動できて、同期フォルダもUSBドライブ上におけるということで、ポータブルにできないGoogle DriveやDropboxではだめで、ownCloudに行き着きました。
しばらく使ってみて、ownCloudは容量無制限なのでとっても魅力的だし、使用感的にも十分いけるかなとおもったんですが、唯一Androidからファイルにアクセスする時の使い勝手が悪く、ウェブインターフェースからファイルを見つけるのがやたら遅くて使い物にならないのです。
これはownCloudが悪いのかSynologyの自宅サーバーが遅いのがよくわからないんですが、PCからアクセスするぶんにはOKなので、まあモバイルのブラウザとの相性なのかなぁと思います。あとは同期がPC経由でも結構遅い(とくにファイルサイズが1kb以下のファイルが異常に遅い)のと、同期でコンフリクトが起きるのがDropboxに比べてやたら多いのが気になります。
Google Driveは本当にだめなのかを先日確認したところ、ポータブル版にできそうで、実は出来ないという結論になったので他のサービスを物色して、ようやく条件に合いそうなのがこのTeamDriveです。
クライエントサイドでの暗号化をサポートするTeamDrive
「SpiderOak is not portable, TeamDrive is portable」というフォーラムの書き込みをみつけたんですが、これによるとTeamDriveというドイツ製のDropboxというかownCloudみたいなオンラインストレージサービスがあって、自分でサーバーを設置すれば10GBまで無料とのこと(実は、クライエントサイドの2GBの限度があります。詳しくは下記参照)。
10GBなら十分だし、クライエントサイドでの暗号化ということで、もしNSAとかの監視があったとしても大丈夫というのも良いですが、私の場合、最大の魅力はポータブルにできるということでした。いまのところownCloudには40GB ほどデータを置いてますが、CDをリップしたmp3が30GBくらいあるので選べば10GBで収まりそうだし、試してみてownCloudよりも早ければ乗り換えの予定です。
自宅サーバーといってもSynologyという台湾製のNASがあるだけなので、慣れないLinuxコマンドを駆使して、頑張るわけですが、当方は本当になんちゃってのUbuntu触ったことがある程度なので、ガクブルでした。
使って見た感想
インストール作業は下にありますが、後回しにして、感想を先にしますが、とても速くていい感じです。AndroidからもPDFを開くのがサクサクっとできたので、大満足。
ただし、サーバーは10GBまでフリーですが、どうやらクライエントサイドでユーザーに付2GBの制限があるようで、一人のユーザーで10GB全部は使えないと判明。5人で2GBづつ使って、10GBまでただですよ、ということらしい。勘違いしてしまったが、ホームページからはわかりにくいのでちょっとぷんすか。
自分のサーバー以外にもTeamDriveのクラウドサーバーに2GB もらえるので、実際は合計4GBかな。
ただし、30ユーロ/年ほどで、クライエントサイドの制限は消せるようなので、12GB を格安で運用という感じにできそうなので、ライセンスをたった今買ってみました。しばらく使って、追記します。
追記)カードで払ってもすぐにはライセンスが発行にはならないようです。次の日まで待つか。。。
追記)メールで送られたライセンスをクライエントソフトのヘルプメニューから自分で入力しないといけないだけでした。
追記)大量にファイルをアップしてみたけども、ものすごく速い。ownCloudだと1KB以下とかの小さなファイルの同期が異常に遅いという問題があったけど、関係無いみたい。Dropbox並に速い。すばらしい。
Synologyにインストール作業の覚書
SynologyはDebian派生のLinuxということですが、シェルがBusyboxということでなれづにかなり苦労しました。
公式のガイドのPDFを読むと、まずは、SynologyにSSHでの接続を許可する必要がある。
公式のガイドはDSMのバージョンがだいぶ古いので、このJosh Dick氏によるブログ記事を読むとDSM5での作業が分かりやすい。
ウィンドウズからはPuTTYをPortableApps.com経由でつかってSSHして、rootというログインでSynologyのadmin用のパスワードで接続。ちなみにPuTTYにペーストするには右クリック。PuTTYのデフォルトカラースキームではフォルダが暗い青色になるが、これが背景の黒とのコントラストが足りずひどいのでPuTTY上で背景色だけ緑に変更した。
あとはwgetでTeamDriveのtarをダウンロードする。
うちのSynologyはARMのCPUなので、対応するビルドのダウンロード先はここ。
んで、あとは書いてある通り/usr/local/へとtarして解凍、dataフォルダを書いてある通り移動する。
ここからは公式のマニュアルに従って起動前の設定をする。
TeamDriveはrootとして起動するなとあるので、suコマンドでユーザーとして起動するか、ユーザーでログインしてこないと行けないのだと思われる。
これにはさっきのブログ記事に書いてある通りviで/etc/passwdを編集する。
viコマンドをいつも忘れるのでチートシートをみる。
これでPyTTYへユーザーとしてログインできるはず。。。
出来た!が、なんかエラーもでた。
またもさっきのブログによるとEnabling the User Home Serviceの項にDSMからuser home serviceを有効にしろとある。これでvolume1の下にhomesというフォルダーもできて、ユーザーごとのHomeができる。
やった、エラーがなくなった。
次はいよいよマニュアルの3章にある通り、/usr/local/tdps/tdps.configをviで編集。
とりあえずテストにはローカルのIPとパスワードだけ設定して、あとはデフォルトでいいとあるのでそれをやる。
むむ、tdps.configはrootで作ったからかユーザーからは書き込みできない。rootで出直し。でけた。
cd /usr/local/tdps
して、./tdpsd でデーモン起動。エラー。パーミッションが不許可とは。rootで解凍しちゃったからか。
sudoしてchmodすればいいのかと思ったが、sudoができない。Ubuntuじゃないから?Busyboxはsudoないの?(Busybox使ったことがないので混乱。suというコマンドがあるのは後で知った。)
rootで出直してchmod 755 /usr/local/tdps としてみる。ユーザーで戻ってきてもだめ。
rootで出直してrm -r /usr/local/tdps/ して、フォルダけす。ユーザーで戻ってきてtarするもここには書込みできませんなのでrootじゃないとだめじゃん。
ログイン・ログオフ繰り返しが辛い。suというコマンドがあった。が、わけわからん。・・・そうかPuTTYを2つ開いておけばいいじゃないか。
とりあえずユーザー領域にユーザーとしてtarして設定ファイルを同様にいじってみると起動には成功して、エラーログが見れるようになった。ログにはパスワードをMD5で入れろとあった。付属されているtdps-md5pwdでハッシュ生成して、これを生のパスワードの代わりにconfigファイルへ入れるとちゃんと起動した。
rootの方をちゃんとMD5にしてもう一度やってもだめ。ユーザーの方でいいか。
クライエントをPCの方へインストールして、マニュアル通りに設定。テストとしてPDFを一個コピーしておく。
ローカルのサーバーを追加、スペースの設置。Androidのクライエントをインストール。端末を立てに持っているとメニューが見えない罠にハマるも、横にしてインビテーションを受け入れる。PDFを見つけて開いてみる。開いて成功!
とりあえずローカルのテストは成功した。あとはSynologyの方からもらったDDNSをテストすると終了。
DDNSにしたらサーバーが見つからないと怒られたが、Synologyの方でポートフォワーディングをコンパネ>External Access>Router configurationから設定してやったらオーケー。
これで10GBの同期フォルダが自宅サーバーに設置成功!
TeamDriveパーソナルサーバーを起動するSHスクリプト
これだとSynologyのDSMのアップデートとかで、再起動になったときにTeamDriveサーバーが止まってしまうので、サービスとして運用したい。
ちょっとググったらこれが見つかった。 How-To: Start TDPSD as Service under Linux 後でやってみる。。。
やってみました。 色々とTeamDriveの運用例は見つかるが、Busyboxにそのまま使えないので苦労したが、一応できた。
結局起動スクリプトを自分で書かなければいけなかったが、SHスクリプトなんて書いたことないし、しかもBusyboxだとコマンドに制限があってBash用のスクリプトだとだめという、初心者にはきついわながあった。
起動スクリプトもoptにはいれられないので、S99をSynologyが使っているスクリプトフォルダに入れないといけないのも注意だった。
しかも、TeamDriveがインストールする終了、サービス監視のスクリプトにはエラーがあって、そのままだと使えないことも判明。これもBusyboxのせい。
いやー、しかし、おかげでだいぶ鍛えられた。
暇見て詳細も自分用覚書としてアップデートします。
Starting Services on Synology DSM 5というブログ記事によると、Synologyの起動スクリプトは、
/usr/syno/etc/rc.d/
にある。
ジブのユーザー領域に下のような起動スクリプトを書いておいて、シムリンクを置いておくとアップデートで消えても復活がし易い。マイナーなアップデートでもこのスクリプトが消えたことがあった。
ln -s /usr/local/pyTivo/pyTivo.sh /usr/syno/etc/rc.d/S99pyTivo.sh
こんな感じにシムリンク作成。
人生で始めて書いた起動スクリプト。たぶん無駄が多いが動けば良いのだ。
#!/bin/sh
PATH="/volume1/homes/ユーザー名/tdps"
USER="ユーザー名"
PID_FILE="${PATH}/tdpsd.pid"
start_daemon ()
{
/bin/su - ${USER} -c "PATH=${PATH} tdpsd -w ${PATH}"
}
stop_daemon ()
{
/bin/su - ${USER} -c "PATH=${PATH} stop-tdps -w ${PATH}"
}
daemon_status ()
{
if [ -f ${PID_FILE} ]; then
PID_PIDFILE="$(/bin/cat ${PATH}/tdpsd.pid)"
PID_PS="$(/bin/ps | /bin/grep "tdpsd" | /bin/grep -v grep | /usr/bin/awk '{print $1}')"
/bin/echo "PID = ${PID_PS}"
/bin/echo "PID_PIDFILE = ${PID_PIDFILE}"
if [ "${PID_PS}" -eq "${PID_PIDFILE}" ]; then
return
fi
fi
return 1
}
case $1 in
start)
if daemon_status; then
/bin/echo "TDPS is already running"
exit 0
else
/bin/echo "Starting TDPS ..."
start_daemon
exit $?
fi
;;
stop)
if daemon_status; then
/bin/echo "Stopping TDPS ..."
stop_daemon
exit $?
else
/bin/echo "TDPS is not runing"
exit 0
fi
;;
restart)
stop_daemon
start_daemon
exit $?
;;
status)
if daemon_status; then
/bin/echo "TDPS is running"
exit 0
else
/bin/echo "TDPS is not runing"
exit 1
fi
;;
*)
exit 1
;;
esac
« RaspberryPiにAndroid4.4プリインストールして箱つけたようなCuBox-i | トップページ | 海外からもダウンロードできるおすすめ日本製Androidゲームのまとめ »
「Dropbox」カテゴリの記事
- 自分のHDDで容量無制限なクラウドストレージLimaを試してみた。(2015.09.28)
- Synologyのアップデート後のTeamDriveパーソナルサーバー復旧覚書(2015.05.14)
- Google driveを自分でポータブル版にしてUSBドライブでつかうつもりが断念。(2014.10.14)
- エンドツーエンドで暗号化のオンラインストレージTeamDriveを自宅Synologyで運用(2014.10.28)
- ownClould6.0.3-3へのアップデートでハマる。(2014.07.07)
« RaspberryPiにAndroid4.4プリインストールして箱つけたようなCuBox-i | トップページ | 海外からもダウンロードできるおすすめ日本製Androidゲームのまとめ »
コメント