ownCloudの同期が動かなくなって困る

ownCloudを便利に使っているのですが,ふと気づくと同期されていない.ステータスを見ると最後の同期が8時間前.タスクマネージャーのアイコンは!マークが付いて「不明な状態」となっています.

20160226_19:02:52-398

ログを見てもよくわからない.

WebやAndroidそして別のLinuxマシンは問題ないようです.ということは多分この端末の問題.
問題の環境はDebian stretch testing amd64のowncloud 7.0.12~dfsg-2です.

一旦ownCloudを終了して設定ファイルだけ退避(対象ファイルはそのまま)して設定を作りなおしてみました.

$ mv ./.local/share/data/ownCloud ./.local/share/data/ownCloud-backup
$ owncloud --logwindow

とりあえず同期出来たようです.

ownCloud のデスクトップクライアントの最新版(2.0)を試す


  • download.owncloud.com/download/changelog-client
    Release 2.0.0
    Release August 25th 2015
    * Add support for multiple accounts (#3084)
    * Do not sync down new big folders from server without users consent (#3148)
    * Integrate Selective Sync into the default UI
    * OS X: Support native finder integration for 10.10 Yosemite (#2340)
    * Fix situation where client would not reconnect after timeout (#2321)
    * Use SI units for the file sizes
    * Improve progress reporting during sync (better estimations, show all files, show all bandwidth)
    * Windows: Support paths >255 characters (#57) by using Windows API instead of POSIX API
    * Windows, OS X: Allow to not sync hidden files (#2086)
    * OS X: Show file name in UI if file has invalid UTF-8 in file name
    * Sharing: Make use of Capability API (#3439)
    * Sharing: Do not allow sharing the root folder (#3495)
    * Sharing: Show thumbnail
    * Client Updater: Check for updates periodically, not only once per run (#3044)
    * Windows: Remove misleading option to remove sync data (#3461)
    * Windows: Do not provoke AD account locking if password changes (#2186)
    * Windows: Fix installer when installing unprivileged (#2616, #2568)
    * Quota: Only refresh from server when UI is shown
    * SSL Button: Show more information
    * owncloudcmd: Fix --httpproxy (#3465)
    * System proxy: Ask user for credentials if needed
    * Several fixes and performance improvements in the sync engine
    * Network: Try to use SSL session tickets/identifiers. Check the SSL button to see if they are used.
    * Bandwidth Throttling: Provide automatic limit setting for downloads (#3084)
    * Systray: Workaround for issue with Qt 5.5.0 #3656

ということでマルチアカウント対応とか便利そう!ってことで試してみました.
何時もはディストリビューションで提供されているパッケージを利用しています.今回導入は ownCloud 自体が公開している OBS のリポジトリから apt で導入しました.

クライアントの 一般 タブの アカウントを追加 ボタンで普通に追加できます.
20150828_18:08:02-17719

同期複数アカウントの場合は明示的にローカルフォルダを指定しないといけません.
20150829_19:08:11-22354

同期フォルダが選択できるようになってるのも便利ですね.これまでは除外フォルダとして指定していました.
20150829_19:08:55-22932

自宅サーバで低速だけど大容量のサーバ.VPS で高速な出先でアクセスするサーバとか,プライベートや仕事用アカウントやサーバを分けて使うといったことがお手軽にできるようになりました :-)
(プライベートと仕事は端末やアカウントを分けたほうが良いだろうけど.)

ownCLoud どんどん便利になっていきますねー.例えば Raspberry Pi の Rasbian でもパッケージで提供されているので,apt 一発で導入でき省電力ファイルサーバが簡単に作れたりもします.お勧めです.

ownCloud 7.0.4 導入でownCloud Client 接続で嵌まる

レンタルサーバのheteml にownCloud 7.0.4 を導入する簡単なお仕事.ssh も使えるし〜と思ってさくっと導入してWeb でのテストまでして引渡したのですがユーザからownCloud のクライアントで接続できないとのこと.

ログファイルを出力しつつ試してみると確かに繋がりません.

% owncloud —confdir ./ —logfile ./log —logflush —logwindow

  • —confdir 設定ファイルのディレクトリ指定
  • —logfile ログファイル指定
  • —logflush ログのリアルタイム出力
  • —logwindow ログ出力ウィンドウ表示

WebDav でもうまく行かない.

怪しそうな以下のエラーメッセージで検索するとそれらしいものを発見.

No basic authentication headers were found

コメントを参考に以下の2ファイルを修正.

  • .htaccess
  • lib/base.php
$ diff -u .htaccess.org .htaccess
--- .htaccess.org       2015-02-19 18:41:36.000000000 +0900
+++ .htaccess   2015-03-03 18:09:27.000000000 +0900
@@-17,6 +17,9 @@
 </IfModule>
 <IfModule mod_rewrite.c>
 RewriteEngine on
+RewriteCond %{HTTP:Authorization} ^Basic.*
+RewriteRule ^(.*) $1?Authorization=%{HTTP:Authorization} [QSA,C]
+RequestHeader unset Authorization
 RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
 RewriteRule ^\.well-known/host-meta /public.php?service=host-meta [QSA,L]
 RewriteRule ^\.well-known/host-meta\.json /public.php?service=host-meta-json [QSA,L]
@@-40,4 +43,4 @@
 </IfModule>
$ diff -u lib/base.php.org lib/base.php
--- lib/base.php.org    2014-12-09 03:34:15.000000000 +0900
+++ lib/base.php        2015-03-02 20:58:04.000000000 +0900
@@-805,6 +805,12 @@

        protected static function handleAuthHeaders() {
                //copy http auth headers for apache+php-fcgid work around
+               if(isset($_GET['Authorization']) && preg_match('/Basic\s+(.*)$/i', $_GET['Authorization'], $matches))
+               {
+                   list($name, $password) = explode(':', base64_decode($matches[1]));
+                   $_SERVER['PHP_AUTH_USER'] = strip_tags($name);
+                   $_SERVER['PHP_AUTH_PW'] = strip_tags($password);
+               }
                if (isset($_SERVER['HTTP_XAUTHORIZATION']) && !isset($_SERVER['HTTP_AUTHORIZATION'])) {
                        $_SERVER['HTTP_AUTHORIZATION'] = $_SERVER['HTTP_XAUTHORIZATION'];
                }
```language

これでどうにか繋がるようになりました.
同じような環境はそこそこありそうですけどね….