nextcloud
ownCloud はクラウドストレージを提供するためのソフトウェア群です。
ownCloud のインストールと設定はどのウェブサーバーとデータベースを動かすかによって異なってきます。現在のところ wiki には #Apache の設定 と #Nginx + uwsgi_php の設定 が載っています。
目次
- 1 必要環境
- 2 インストール
- 3 Apache の設定
- 4 Nginx + php-fpm の設定
- 5 Nginx + uwsgi_php の設定
- 6 同期
- 7 重要なノート
- 8 トラブルシューティング
- 8.1 自己署名証明書が使えない
- 8.2 Android デバイスの自己署名証明書
- 8.3 設定ディレクトリに書き込みができない
- 8.4 データディレクトリを作成できない (/path/to/dir)
- 8.5 CSync failed to find a specific file.
- 8.6 ログイン後に白いページが表示される
- 8.7 GUI の同期クライアントで接続できない
- 8.8 管理者アカウントを作成したらサーバーが永遠に待機して 503 エラーが表示される
- 8.9 ファイルをアップロードすると 'Integrity constraint violation...' エラーが表示される
- 8.10 "Cannot write into apps directory"
- 8.11 nginx.conf に推奨設定を記述したのにセキュリティの警告が表示される
- 9 参照
必要環境
ownCloud はウェブサーバーと PHP、データベースを必要とします。古典的な LAMP の組み合わせで問題なく動作し、推奨 されています。
インストール
公式リポジトリから owncloud をインストールしてください。
/etc/php/php.ini
で必要な以下のエクステンションをアンコメントします [1]:
gd.so iconv.so xmlrpc.so zip.so
また、php-intl と php-mcrypt をインストールして以下のエクステンションをアンコメントすることが 推奨 されています:
bz2.so curl.so intl.so mcrypt.so
キャッシュ
パフォーマンスを向上させるために、APCu による PHP キャッシュを使うことを推奨します。PHP#APCu を見てください。同じく OPCache も有効にすると有益です。PHP#OPCache を参照。
APCu を有効にした後、以下のディレクティブを /etc/webapps/owncloud/config/config.php
に追加してください:
'memcache.local' => '\OC\Memcache\APCu',
詳しくは 公式ドキュメント を参照。
/dev/urandom のアクセス
ownCloud 8.1.0-1 は /dev/urandom
にアクセスする必要があります。php.ini
で有効にしてください。
php.ini
の open_basedir
に :/dev/urandom
を追加します (末尾にスラッシュは付きません)。例:
open_basedir = /srv/http/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/dev/urandom
もしくは、/etc/httpd/conf/extra/owncloud.conf
の php_admin_value open_basedir
に :/dev/urandom
を追加するほうが良い結果が得られるかもしれません。
Nginx + uwsgi_php では上記の設定は反映されません。uwsgi_php の設定ファイルに :/dev/urandom
を指定してください:
/etc/uwsgi/owncloud.ini
php-set = open_basedir=%(owncloud_data_dir):/tmp/:/usr/share/pear/:/usr/share/webapps/owncloud:/etc/webapps/owncloud:/dev/urandom
データベースのサポート
使用するデータベースバックエンドにあわせて、/etc/php/php.ini
の以下の拡張をアンコメントしてください:
- MySQL の場合、
pdo_mysql.so
をアンコメントしてください。 - PostgreSQL の場合、
pdo_pgsql.so
とpgsql.so
をアンコメントして php-pgsql をインストールしてください。 - SQLite の場合、
pdo_sqlite.so
とsqlite3.so
をアンコメントして php-sqlite をインストールしてください。
Exif のサポート
公式リポジトリから exiv2 をインストールして php.ini
で exif.so
エクステンションをアンコメントすることで exif サポートを有効化できます。
オールインワンの Docker を使う
ownCloud のインストールと設定を素早く安全に行う方法として Docker を使うことができます。Docker のリポジトリ には始めから ownCloud がインストールされている完全な LAMP スタックのイメージが複数存在します。Docker コンテナは基本的に chroot 環境よりも安全でありオーバーヘッドも少なくなります。Docker 上の ownCloud はかなり古いマシンでもスムーズに動作するでしょう。普通に ownCloud をインストールするよりも大抵は Docker をインストールしてから ownCloud イメージをインストールする方が簡単で時間がかかりません。
Apache の設定
Apache の設定ファイルを ownCloud の設定ディレクトリにコピーします:
# cp /etc/webapps/owncloud/apache.example.conf /etc/httpd/conf/extra/owncloud.conf
そして /etc/httpd/conf/httpd.conf
の一番下で設定ファイルをインクルードします:
Include conf/extra/owncloud.conf
セキュリティを確保するために、ownCloud のインストールマニュアル に書かれているようにディレクトリのパーティションを設定してください:
#!/bin/bash ocpath='/usr/share/webapps/owncloud' htuser='http' htgroup='http' find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640 find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750 chown -R root:${htuser} ${ocpath}/ chown -R ${htuser}:${htgroup} ${ocpath}/apps/ chown -R ${htuser}:${htgroup} ${ocpath}/config/ chown -R ${htuser}:${htgroup} ${ocpath}/data/ chown -R ${htuser}:${htgroup} ${ocpath}/themes/ chown root:${htuser} ${ocpath}/.htaccess chown root:${htuser} ${ocpath}/data/.htaccess chmod 0644 ${ocpath}/.htaccess chmod 0644 ${ocpath}/data/.htaccess
そして Apache (httpd.service
) を再起動します。
ウェブブラウザで http://localhost/owncloud を開いて下さい。ユーザーアカウントを作成してインストールウィザードに従う必要があります。
WebDAV
OwnCloud には WebDAV の実装が付いておりデフォルトで有効になっていますが、Apache の実装と衝突する可能性があります。OwnCloud は /etc/httpd/conf/httpd.conf
で mod_dav
と mod_dav_fs
を無効化することを 推奨 しています。
サブディレクトリで ownCloud を動かす
デフォルトの owncloud.conf
を httpd.conf
でインクルードすることで、ownCloud は80番ポートと localhost ドメインをコントロールします。
サブディレクトリで ownCloud を動作させたい場合は、/etc/httpd/conf/extra/owncloud.conf
を編集して include ファイルの <VirtualHost *:80> ... </VirtualHost>
の部分をコメントアウトしてください。
Nginx + php-fpm の設定
ownCloud の公式ドキュメントでは php-fpm で PHP を使っています。したがってそれが最もサポートされている構成になります。以下は Arch Linux で動作するように、推奨されるサーバー設定 から多少変更を加えています。php-fpm と SSL 証明書が必要です。
user http; worker_processes auto; events { worker_connections 1024; } http { #sendfile on; # Appears to cause problems with webdav. #tcp_nopush on; server { listen 80; server_name owncloud.example.com; # enforce https return 301 https://$server_name$request_uri; } server { include mime.types; default_type application/octet-stream; listen 443 ssl; server_name owncloud.example.com; ssl_certificate /etc/ssl/server.crt; ssl_certificate_key /etc/ssl/server.key; # Add headers to serve security related headers add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;"; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; # Path to the root of your installation root /usr/share/webapps/owncloud; # set max upload size client_max_body_size 10G; fastcgi_buffers 64 4K; # Disable gzip to avoid the removal of the ETag header gzip off; # Uncomment if your server is build with the ngx_pagespeed module # This module is currently not supported. #pagespeed off; rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect; rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect; rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect; index index.php; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README){ deny all; } location / { # The following 2 rules are only needed with webfinger rewrite ^/.well-known/host-meta /public.php?service=host-meta last; rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; rewrite ^/.well-known/carddav /remote.php/carddav/ redirect; rewrite ^/.well-known/caldav /remote.php/caldav/ redirect; rewrite ^(/core/doc/[^\/]+/)$ $1/index.html; try_files $uri $uri/ /index.php; } location ~ \.php(?:$|/) { fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTPS on; fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice # Unix domain sockets are faster than TCP sockets fastcgi_pass unix:/run/php-fpm/php-fpm.sock; } # Optional: set long EXPIRES header on static assets location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ { expires 30d; # Optional: Don't log access to assets access_log off; } } }
php-fpm を http ユーザーで動作させるように設定して、上記のようにパーミッションを設定すれば、動作するはずです。ownCloud の設定の config.example.php
を手動でコピーするのは推奨されていません。最初の実行時に自動的に生成されます。/usr/share/webapps/owncloud/data
という ownCloud のデータディレクトリを作成して所有者を root:http にすることで自動設定が行われます。
Nginx + uwsgi_php の設定
Apache を使わずに、uwsgi-plugin-php アプリケーションサーバーを使って ownCloud を固有のプロセスで動かすことができます。uWSGI 自体にリソースの使用を制限するための機能が豊富に含まれており、アプリケーションのセキュリティを強化したり、専用のユーザーで動くようにプロセスを分けられます。
設定
- まず最初に Nginx サーバーをセットアップしてください。詳しくは Nginx のページを参照。
/etc/nginx/nginx.conf
ファイルの http セクションに以下の行でサーバーを設定:
# your nginx-server configs # ... # uncomment to run as user and group http #user http; http { # more configs # ... server { listen 80; #listen 443 ssl; server_name localhost; #ssl_certificate cert.pem; #ssl_certificate_key key.pem; #ssl_session_cache shared:SSL:1m; #ssl_session_timeout 5m; #ssl_ciphers HIGH:!aNULL:!MD5; #ssl_prefer_server_ciphers on; #this is to avoid Request Entity Too Large error client_max_body_size 1000M; # deny access to some special files location ~ ^/(data|config|\.ht|db_structure\.xml|README) { deny all; } # pass all .php or .php/path urls to uWSGI location ~ ^(.+\.php)(.*)$ { include uwsgi_params; uwsgi_modifier1 14; #Uncomment line below if you get connection refused error. Remember to comment out line with "uwsgi_pass 127.0.0.1:3001;" below #uwsgi_pass unix:/run/uwsgi/owncloud.sock; uwsgi_pass 127.0.0.1:3001; } # everything else goes to the filesystem, # but / will be mapped to index.php and run through uwsgi location / { root /usr/share/webapps/owncloud; index index.php; rewrite ^/.well-known/carddav /remote.php/carddav/ redirect; rewrite ^/.well-known/caldav /remote.php/caldav/ redirect; } } }
- 次に uWSGI の設定ファイルを作成します。
/etc/uwsgi/owncloud.ini
を使うと良いでしょう:
[uwsgi] master = true socket = 127.0.0.1:3001 # Change this to where you want ownlcoud data to be stored (maybe /home/owncloud) owncloud_data_dir = /usr/share/webapps/owncloud/data/ chdir = %(owncloud_data_dir) plugins = php php-docroot = /usr/share/webapps/owncloud php-index = index.php # only allow these php files, I don't want to inadvertently run something else php-allowed-ext = /index.php php-allowed-ext = /public.php php-allowed-ext = /remote.php php-allowed-ext = /cron.php php-allowed-ext = /status.php php-allowed-ext = /settings/apps.php php-allowed-ext = /core/ajax/update.php php-allowed-ext = /core/ajax/share.php php-allowed-ext = /core/ajax/requesttoken.php php-allowed-ext = /core/ajax/translations.php php-allowed-ext = /search/ajax/search.php php-allowed-ext = /search/templates/part.results.php php-allowed-ext = /settings/admin.php php-allowed-ext = /settings/users.php php-allowed-ext = /settings/personal.php php-allowed-ext = /settings/help.php php-allowed-ext = /settings/ajax/getlog.php php-allowed-ext = /settings/ajax/setlanguage.php php-allowed-ext = /settings/ajax/setquota.php php-allowed-ext = /settings/ajax/userlist.php php-allowed-ext = /settings/ajax/createuser.php php-allowed-ext = /settings/ajax/removeuser.php php-allowed-ext = /settings/ajax/enableapp.php php-allowed-ext = /core/ajax/appconfig.php php-allowed-ext = /settings/ajax/setloglevel.php php-allowed-ext = /ocs/v1.php # set php configuration for this instance of php, no need to edit global php.ini php-set = date.timezone=Etc/UTC php-set = open_basedir=%(owncloud_data_dir):/tmp/:/usr/share/pear/:/usr/share/webapps/owncloud:/etc/webapps/owncloud:/dev/urandom php-set = session.save_path=/tmp php-set = post_max_size=1000M php-set = upload_max_filesize=1000M php-set = always_populate_raw_post_data=-1 # load all extensions only in this instance of php, no need to edit global php.ini php-set = extension=bz2.so php-set = extension=curl.so php-set = extension=intl.so php-set = extension=pdo_sqlite.so php-set = extension=exif.so php-set = extension=gd.so php-set = extension=imagick.so php-set = extension=gmp.so php-set = extension=iconv.so php-set = extension=mcrypt.so php-set = extension=sockets.so php-set = extension=sqlite3.so php-set = extension=xmlrpc.so php-set = extension=xsl.so php-set = extension=zip.so # uncomment following line to use mysql-backend #php-set = extension=pdo_mysql.so processes = 10 cheaper = 2 cron = -3 -1 -1 -1 -1 /usr/bin/php -f /usr/share/webapps/owncloud/cron.php 1>/dev/null # Uncomment line below and replace http with a specific user/group name which you want uwsgi to run with. #uid = http #gid = http
有効化
uWSGI には設定ファイルをインスタンスの識別子として使ってアプリケーションを起動したり有効化できるテンプレートユニットが入っています。例えば:
# systemctl start uwsgi@owncloud.socket
上のコマンドは /etc/uwsgi/owncloud.ini
設定ファイルを参照して必要に応じて起動します。
ブート時にデフォルトで uwsgi サービスを有効化するには、次を実行:
# systemctl enable uwsgi@owncloud.socket
Uwsgi#サービスの起動も参照。
同期
デスクトップ
公式クライアントは owncloud-client パッケージでインストールできます。AUR には様々なバージョンが存在します: owncloud-client-betaAUR[リンク切れ: アーカイブ: aur-mirror], owncloud-client-gitAUR and owncloud-client-qt5AUR[リンク切れ: アーカイブ: aur-mirror]。使用方法はドキュメントの こちらのページ に書かれています。
カレンダー
Mozilla Thunderbird の Lightning カレンダーを使って ownCloud のカレンダーにアクセスするには以下の URL を使います:
https://ADDRESS/remote.php/caldav/calendars/USERNAME/CALENDARNAME
Kontact や Evolution など CalDAV に対応するプログラムを使って ownCloud のカレンダーにアクセスするには、以下の URL を使います:
https://ADDRESS/remote.php/caldav
詳しくは 公式ドキュメント を見て下さい。
連絡先
Thunderbird と連絡先を同期するには、SOGo フロントエンド と Lightning エクステンションをインストールして公式ドキュメントの 手順 に従う必要があります。
davfs2 でファイルをマウントする
ownCloud を永続的にマウントしたい場合、まず davfs2 をインストールしてください (Davfs に説明があります)。
もし ownCloud が https://own.example.com
にある場合、WebDAV の URL は https://own.example.com/remote.php/webdav
になります (ownCloud 6.0 現在)。
ownCloud をマウントするには、次のコマンドを使います:
# mount https://own.example.com/remote.php/webdav /path/to/mount
/etc/fstab
にエントリを作成することもできます:
/etc/fstab
https://own.example.com/remote.php/webdav /path/to/mount davfs rw,user,noauto 0 0
Android
小額で使うことができる公式 Android アプリが Play ストア にあり、無料で使えるアプリが F-Droid にあります。
連絡先とカレンダーの同期を有効にするには:
- Android 4 以上を使っている場合:
- 古いバージョンが対象ですが、こちらの記事 には有用な情報が記載されています。
- 4.0 以下のバージョンの Android を使っていて、フリーのソフトウェアを使いたい場合、カレンダーと連絡先の同期には aCal を、カレンダーだけの同期には CalDAV Sync Adapter (F-Droid) を試して下さい。フリーでないソフトウェアを使う気があるのであれば、CardDAV-Sync と CalDAV-Sync の使用が 推奨 されています。
巨大なファイル
WebDAV は大きなファイルを扱うのには向いていません、CPU とメモリを食いつぶしてしまいます。
現在のバージョンでは、ownCloud に大きなデータをコピーする良い方法はないように思われます。
対処法:
大きなファイルをあなたの ownCloud に直接コピーし、データベースを完全リスキャンします (例えば Re-scan filesystem アドオンを使うことができます)。
ですが、この方法は将来 ownCloud が計画している end-to-end 暗号化が実装された時に使えなくなるかもしれないので、注意してください。
重要なノート
- owncloud.example.xxx のようなサブドメインを使う場合、証明書でカバーされているか確認してください。そうでなければ、ownCloud クライアントや wevdav からの接続は失敗するかもしれません。
- ownCloud の sync-clients を使うことを計画しているなら、ntpd をインストールして ownCloud サーバーで実行してください。ntpd が実行されてないと、sync-client は失敗します。
- 接続には SSL 暗号化を追加してください!
(上記のように SSL 暗号化を追加する場合、/etc/httpd/conf/extra/httpd-ssl.conf
を編集して DocumentRoot "/srv/http"
を DocumentRoot "/usr/share/webapps/owncloud"
に変更してください。)
- ownCloud のアプリは他にも ここ で探すことができます。
- 新しいアプリケーションをインストールするには、アプリストアから zip をダウンロードして、それを
/srv/http/owncloud/apps/
に展開します。その後、httpd を再起動してください:
# systemctl restart httpd
サーバーにログインしてアプリセクションを開けば新しいアプリが追加されているはずです。
- HTTP のベーシック認証で ownCloud へのアクセスを保護するときは、"status.php" ファイルは認証から外して誰でもアクセスできるようにしてください [3]。
SABnzbd
SABnzbd を使う場合、sabnzbd.ini
ファイルに以下を設定すると良いでしょう:
folder_rename 0
というのは ownCloud はアップロードされたファイルを速攻でスキャンするからです。展開された接頭辞などを SABnzbd が削除することを予防します。
トラブルシューティング
自己署名証明書が使えない
ownCloud は cURL や SabreDAV を使って WebDAV が有効になっているかチェックします。(LAMP の記事に書かれているように) 自己署名証明書で SSL/TLS を使って、ownCloud の管理者ページにアクセスすると、以下のエラーメッセージが表示されます:
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.
LAMP のチュートリアルにしたがって設定を行っている場合、以下の手順を実行してください:
証明書のためのローカルディレクトリを作成して、そこに LAMP の証明書をコピーします。これによって ca-certificates
のアップデートによって証明書が上書きされるのを防ぎます。
# cp /etc/httpd/conf/server.crt /usr/share/ca-certificates/WWW.EXAMPLE.COM.crt
WWW.EXAMPLE.COM.crt を /etc/ca-certificates.conf
に追加:
WWW.EXAMPLE.COM.crt
そして証明書を更新:
# update-ca-certificates
httpd サービスを再起動して証明書を有効にしてください。
これで動作しない場合は /etc/php/php.ini
で mod_curl を無効化してみてください。
Android デバイスの自己署名証明書
LAMP#TLS/SSL に書かれているように SSL のセットアップをした場合、古いバージョンの DAVdroid では証明書が信頼できないとして接続が拒否されます。以下のようにサーバーに証明書を作成できます:
# openssl x509 -req -days 365 -in /etc/httpd/conf/server.csr -signkey /etc/httpd/conf/server.key -extfile android.txt -out CA.crt # openssl x509 -inform PEM -outform DER -in CA.crt -out CA.der.crt
android.txt
ファイルに以下を記述してください:
basicConstraints=CA:true
そして Android 端末に CA.der.crt
をインポートしてください:
Android 端末の SD カードに CA.der.crt
ファイルを保存してください (メールの添付ファイルなどを使って保存してください)。ファイルはルートディレクトリに配置してください。そして Settings > Security > Credential storage から Install from device storage を選択します。.crt
ファイルが検出されて、証明書の名前の入力が求められます。証明書をインポートしたら、Settings > Security > Credential storage > Trusted credentials > User から確認できるはずです。
ソース: [4]
設定ディレクトリに書き込みができない
httpd の設定ファイル (owncloud.conf
など) を確認してください。以下の文字列に設定ディレクトリ (デフォルトでは /etc/webapps
) を追加してください:
php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"
変更を適用するには httpd あるいは php-fpm サービスを再起動します。
データディレクトリを作成できない (/path/to/dir)
httpd の設定ファイル (owncloud.conf
など) を確認してください。以下の文字列にデータディレクトリを追加してください:
php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"
変更を適用するには httpd あるいは php-fpm サービスを再起動します。
CSync failed to find a specific file.
おそらく証明書に問題があります。証明書を再度作成して、名前を空にしないようにしてください。そうしないとエラーがまた発生します。
# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt
ログイン後に白いページが表示される
おそらく新しくインストールしたアプリが原因です。修正するには、phpMyAdmin を使って oc_appconfig
テーブルを編集するか (運が良いことにテーブルに edit オプションがある場合) mysql で手動で修正してください:
mysql -u root -p owncloud MariaDB [owncloud]> delete from oc_appconfig where appid='<nameOfExtension>' and configkey='enabled' and configvalue='yes' MariaDB [owncloud]> insert into oc_appconfig (appid,configkey,configvalue) values ('<nameOfExtension>','enabled','no');
テーブルから関連する設定が削除されるので、後でまた追加してください。
GUI の同期クライアントで接続できない
HTTP のベーシック認証を使っている場合、status.php
が対象から外れていることを確認してください。このファイルは誰からでもアクセスできるようにしておく必要があります [5]。
管理者アカウントを作成したらサーバーが永遠に待機して 503 エラーが表示される
サーバーが待機しているのにデータベースが動作している場合、Arch Linux リポジトリに含まれているアプリケーションをちゃんとインストールしてください。アプリケーションをインストールしていない場合、問題が発生することがあります。
ファイルをアップロードすると 'Integrity constraint violation...' エラーが表示される
ownCloud の同期クライアントで以下のエラーが表示されることがあります:
SQLSTATE[23000]: Integrity constraint violation: ... Duplicate entry '...' for key 'fs_storage_path_hash')...
File Locking アプリの問題が原因です。ウェブーサーバーの設定の衝突が発生しているのに対処できていません。エラーが発生しない Transactional File Locking が存在しますが、Redis の php キャッシュを使う必要があります。redis と php-redisAUR をインストールして、現在使っている php のキャッシュをコメントアウトして、/etc/php/conf.d/redis.ini
から extension=redis.so
をアンコメントしてください。そして config.php
に以下の変更を加えます:
'memcache.local' => '\OC\Memcache\Redis', 'filelocking.enabled' => 'true', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, 'timeout' => 0.0, ),
設定したら Redis を再起動:
# systemctl enable redis.service # systemctl start redis.service
最後に、File Locking アプリを無効化して、Transational File Locking を使うようにしてください。
管理者ページのサーバーステータスに 'Transactional File Locking Enabled' が表示され、同期の問題が消えるはずです。
"Cannot write into apps directory"
公式の管理者マニュアル に書かれているように、http ユーザーからアプリディレクトリに書き込みができるようにするか、appstoreenabled
を false
に設定する必要があります。
また、ドキュメントには書かれていませんが、/etc/php/php.ini
の open_basedir
行にディレクトリを指定してください。
One clean method is to have the package-installed directory at /usr/share/webapps/owncloud/apps
stay owned by root, and have the user-installed apps go into e.g. /var/www/owncloud/apps
, which is owned by http. Then you can set appstoreenabled
to true
and package upgrades of apps should work fine as well. Relevant lines from /etc/webapps/owncloud/config/config.php
:
'apps_paths' => array ( 0 => array ( 'path' => '/usr/share/webapps/owncloud/apps', 'url' => '/apps', 'writable' => false, ), 1 => array ( 'path' => '/var/www/owncloud/apps', 'url' => '/wapps', 'writable' => true, ), ),
/etc/php/php.ini
の open_basedir
行の例:
open_basedir = /srv/http/:/usr/share/webapps/:/var/www/owncloud/apps/
ディレクトリのパーミッション:
$ ls -ld /usr/share/webapps/owncloud/apps /var/www/owncloud/apps/
drwxr-xr-x 26 root root 4096 des. 14 20:48 /usr/share/webapps/owncloud/apps drwxr-xr-x 2 http http 48 jan. 20 20:01 /var/www/owncloud/apps/
nginx.conf に推奨設定を記述したのにセキュリティの警告が表示される
管理者マニュアルにしたがって Strict-Transport-Security
, X-Content-Type-Options
, X-Frame-Options
, X-XSS-Protection
, X-Robots-Tag
を設定しても管理者ページの上部に警告が表示されることがあります。
A possible cause could be that because owncloud sets those settings, uwsgi passed them along and nginx added them again:
$ curl -I https://domain.tld
... X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff X-Frame-Options: Sameorigin X-Robots-Tag: none Strict-Transport-Security: max-age=15768000; includeSubDomains; preload; X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Robots-Tag: none
While the fast_cgi sample config has a parameter to avoid that ( fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
), when using uwsgi and nginx the following modification of the uwsgi part in nginx.conf could help:
/etc/nginx/nginx.conf
... # pass all .php or .php/path urls to uWSGI location ~ ^(.+\.php)(.*)$ { include uwsgi_params; uwsgi_modifier1 14; # hode following headers received from uwsgi, because otherwise we would send them twice since we already add them in nginx itself uwsgi_hide_header X-Frame-Options; uwsgi_hide_header X-XSS-Protection; uwsgi_hide_header X-Content-Type-Options; uwsgi_hide_header X-Robots-Tag; uwsgi_hide_header X-Frame-Options; #Uncomment line below if you get connection refused error. Remember to commet out line with "uwsgi_pass 127.0.0.1:3001;" below uwsgi_pass unix:/run/uwsgi/owncloud.sock; #uwsgi_pass 127.0.0.1:3001; } ...