近しい手順はいくつかあったのですが、そのものドンピシャがなかったのでまとめます。
今回のやりたかったことは以下の通り。
- サーバ環境(X Windowなし)
- OS起動時に自動起動したい
- そして勝手に同期を初めてもらいたい
Dropboxの公式手順がユーザ権限で動かせるcli導入手順なので、どうしてもその派生手順が多い。
とはいえ今回はサーバなのでパッケージ以外は利用したくない。
というわけで、以下が手順です。
nautilus-dropboxのインストール
面倒なのでパッケージを利用させて頂く。
$ sudo apt-get install nautilus-dropbox
dropboxの初期設定
まずは手動で動作する環境を。
というわけで、対象ユーザ(後のowner)でdropboxを起動して設定します。動かすときは 一般ユーザ権限 なので注意!(rootで起動しちゃうと各種ファイルがrootで作られるので後にパーミッションを修正する必要あり)
$ dropbox start -i
Starting Dropbox...Done!
# しばらく待つ...
$ dropbox start -i
To link this computer to a dropbox account, visit the following url:
https://www.dropbox.com/cli_link?host_id=xxxxxxxxxxxxxxxx
表示されたURLをブラウザで叩いて認証を通ると認可されます。
これで無事クライアント設定がされ、対象ユーザのホームディレクトリにDropboxディレクトリが出来ます。
dropboxの自動起動設定
今回の山場です。以下のようなスクリプトを作成します。
#!/bin/sh
#dropbox service
DROPBOX_USERS="user1 user2"
DAEMON=/usr/bin/dropbox
start() {
echo "Starting dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
HOME="$HOMEDIR" start-stop-daemon -o -c $dbuser -S -u $dbuser -x $DAEMON -- start
done
}
stop() {
echo "Stopping dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
start-stop-daemon -o -c $dbuser -K -u $dbuser -x $DAEMON -- stop
done
}
status() {
for dbuser in $DROPBOX_USERS; do
dbpid=`pgrep -u $dbuser dropbox`
if [ -z $dbpid ] ; then
echo "dropboxd for USER $dbuser: not running."
else
echo "dropboxd for USER $dbuser: running (pid $dbpid)"
fi
done
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload|force-reload)
stop
start
;;
status)
status
;;
*)
echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
exit 1
esac
exit 0
パッケージのバイナリを使う関係で、オリジナルのものからは若干変えていまして、以下が変更点です。
- daemon化対象を
/usr/bin/dropbox
に(先ほどの設定時に叩いたコマンド) - 参照が
/usr/bin
なので存在チェックを外す - 操作モード(start, stop)に関する引数を追加
- こいつ自身がやってくれる模様なので、バックグラウンド化を外した
あとはこれを自動実行に入れます。
$ sudo chmod 755 /etc/init.d/dropbox
$ sudo update-rc.d dropbox default 99
で、再起動して一般ユーザownerのdropboxプロセスが起動していれば無事完了。
参考
スクリプトのベースはここから拝借しました
http://www.dropboxwiki.com/tips-and-tricks/install-dropbox-in-an-entirely-text-based-linux-environment#Running_on_system_startup