「Nextcloud」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
1行目: 1行目:
{{lowercase title}}
+
{{Lowercase title}}
 
[[Category:ウェブサーバー]]
 
[[Category:ウェブサーバー]]
 
[[en:Owncloud]]
 
[[en:Owncloud]]
11行目: 11行目:
 
[[Wikipedia:OwnCloud|ownCloud]] はクラウドストレージを提供するためのソフトウェア群です。
 
[[Wikipedia:OwnCloud|ownCloud]] はクラウドストレージを提供するためのソフトウェア群です。
   
ownCloud のインストールと設定はどのウェブサーバーとデータベースを動かすかによって異なってきます。現在のところ wiki には [[#Apache の設定]] と [[#Nginx + uwsgi_php の設定]] が載っています。
+
ownCloud のインストールと設定はどのウェブサーバーとデータベースを動かすかによって異なってきます。現在のところ wiki には [[#Apache の設定]] と [[#Nginx の設定]] が載っています。
   
 
== 必要環境 ==
 
== 必要環境 ==
   
''ownCloud'' は[[:Category:ウェブサーバー|ウェブサーバー]]と [[PHP]]、[[:Category:データベース管理システム|データベース]]を必要とします。古典的な [[LAMP]] の組み合わせで問題なく動作し、[https://doc.owncloud.org/server/8.1/admin_manual/release_notes.html#recommended-setup-for-running-owncloud 推奨] されています。
+
''ownCloud'' は[[:Category:ウェブサーバー|ウェブサーバー]]と [[PHP]]、[[:Category:データベース管理システム|データベース]]を必要とします。古典的な [[LAMP]] の組み合わせで問題なく動作し、[https://doc.owncloud.org/server/8.2/admin_manual/installation/system_requirements.html#recommended-setup-for-running-owncloud 推奨] されています。
   
 
== インストール ==
 
== インストール ==
32行目: 32行目:
 
intl.so
 
intl.so
 
mcrypt.so
 
mcrypt.so
  +
  +
=== データベースのサポート ===
  +
使用するデータベースバックエンドにあわせて、{{ic|/etc/php/php.ini}} の以下の拡張をアンコメントしてください:
  +
* [[MySQL]] の場合、{{ic|pdo_mysql.so}} をアンコメントしてください。
  +
* [[PostgreSQL]] の場合、{{ic|pdo_pgsql.so}} と {{ic|pgsql.so}} をアンコメントして {{Pkg|php-pgsql}} をインストールしてください。
  +
* [[SQLite]] の場合、{{ic|pdo_sqlite.so}} と {{ic|sqlite3.so}} をアンコメントして {{Pkg|php-sqlite}} をインストールしてください。
   
 
=== キャッシュ ===
 
=== キャッシュ ===
40行目: 46行目:
 
'memcache.local' => '\OC\Memcache\APCu',
 
'memcache.local' => '\OC\Memcache\APCu',
   
  +
{{Note|[[PHP#設定|PHP 設定]]の {{ic|[apc]}} の下に {{ic|1=apc.enable_cli=1}} を追加してください。また、{{ic|/etc/php/conf.d/apcu.ini}} の {{ic|1=extension=apcu.so}} をアンコメントしてください。2015年7月12日現在、これらの設定をしないと [https://github.com/owncloud/core/issues/17329#issuecomment-119248944 複数] の [https://github.com/owncloud/documentation/issues/1233#issuecomment-120664134 問題] が発生します。}}
{{Note|
 
* [[PHP#設定|PHP 設定]]の {{ic|[apc]}} の下に {{ic|1=apc.enable_cli=1}} を追加してください。また、{{ic|/etc/php/conf.d/apcu.ini}} の {{ic|1=extension=apcu.so}} をアンコメントしてください。2015年7月12日現在、これらの設定をしないと [https://github.com/owncloud/core/issues/17329#issuecomment-119248944 複数] の [https://github.com/owncloud/documentation/issues/1233#issuecomment-120664134 問題] が発生します。
 
* 2016年1月4日現在、OwnCloud 8.2.2 では {{Pkg|php-apcu-bc}} パッケージに含まれている "APCu Backwards Compatibility Module" が必要です。パッケージをインストールしたら {{ic|/etc/php/conf.d/apcu.ini}} の {{ic|1=extension=apcu.so}} の後に {{ic|1=extension=apc.so}} を追加してください。}}
 
   
 
詳しくは [https://doc.owncloud.org/server/8.1/admin_manual/configuration_server/config_sample_php_parameters.html#memory-caching-backend-configuration 公式ドキュメント] を参照。
 
詳しくは [https://doc.owncloud.org/server/8.1/admin_manual/configuration_server/config_sample_php_parameters.html#memory-caching-backend-configuration 公式ドキュメント] を参照。
   
=== /dev/urandomアクセス ===
+
=== Exifサポート ===
  +
[[公式リポジトリ]]から {{Pkg|exiv2}} をインストールして {{ic|php.ini}} で {{ic|exif.so}} エクステンションをアンコメントすることで exif サポートを有効化できます。
   
  +
=== (オプション) セキュリティの強化 ===
ownCloud 8.1.0-1 は {{ic|/dev/urandom}} にアクセスする必要があります。{{ic|php.ini}} で有効にしてください。
 
  +
==== ファイルシステムのパーティションの設定 ====
   
  +
[https://doc.owncloud.org/server/8.2/admin_manual/installation/installation_wizard.html#setting-strong-directory-permissions 公式インストールマニュアル] より:
{{ic|php.ini}} の {{ic|open_basedir}} に {{ic|:/dev/urandom}} を追加します (末尾にスラッシュは付きません)。例:
 
  +
:セキュリティを強化するために ownCloud ディレクトリのパーミッションはできるだけ制限的に設定することを推奨します。インストールを行った後、セットアップを開始する前に設定してください。HTTP ユーザーが {{ic|config/}}, {{ic|data/}}, {{ic|apps/}} ディレクトリの所有者となっていれば ownCloud を設定したりデータファイルを作成・修正・削除したり、ownCloud のウェブインターフェイスでアプリをインストールできます。
   
  +
{{hc|oc-perms|2=<nowiki>
open_basedir = /srv/http/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/dev/urandom
 
  +
#!/bin/bash
  +
ocpath='/usr/share/webapps/owncloud'
  +
htuser='http'
  +
htgroup='http'
  +
rootuser='root'
   
  +
printf "Creating possible missing Directories\n"
もしくは、{{ic|/etc/httpd/conf/extra/owncloud.conf}} の {{ic|php_admin_value open_basedir}} に {{ic|:/dev/urandom}} を追加するほうが良い結果が得られるかもしれません。
 
  +
mkdir -p $ocpath/data
  +
mkdir -p $ocpath/assets
   
  +
printf "chmod Files and Directories\n"
Nginx + uwsgi_php では上記の設定は反映されません。uwsgi_php の設定ファイルに {{ic|:/dev/urandom}} を指定してください:
 
  +
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
  +
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750
   
  +
printf "chown Directories\n"
{{hc|/etc/uwsgi/owncloud.ini|<nowiki>php-set = open_basedir=%(owncloud_data_dir):/tmp/:/usr/share/pear/:/usr/share/webapps/owncloud:/etc/webapps/owncloud:/dev/urandom</nowiki>}}
 
  +
chown -R ${rootuser}:${htgroup} ${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 -R ${htuser}:${htgroup} ${ocpath}/assets/
   
  +
chmod +x ${ocpath}/occ
=== データベースのサポート ===
 
使用するデータベースバックエンドにあわせて、{{ic|/etc/php/php.ini}} の以下の拡張をアンコメントしてください:
 
* [[MySQL]] の場合、{{ic|pdo_mysql.so}} をアンコメントしてください。
 
* [[PostgreSQL]] の場合、{{ic|pdo_pgsql.so}} と {{ic|pgsql.so}} をアンコメントして {{Pkg|php-pgsql}} をインストールしてください。
 
* [[Sqlite|SQLite]] の場合、{{ic|pdo_sqlite.so}} と {{ic|sqlite3.so}} をアンコメントして {{Pkg|php-sqlite}} をインストールしてください。
 
   
  +
printf "chmod/chown .htaccess\n"
=== Exif のサポート ===
 
  +
if [ -f ${ocpath}/.htaccess ]
[[公式リポジトリ]]から {{Pkg|exiv2}} をインストールして {{ic|php.ini}} で {{ic|exif.so}} エクステンションをアンコメントすることで exif サポートを有効化できます。
 
  +
then
  +
chmod 0644 ${ocpath}/.htaccess
  +
chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
  +
fi
  +
if [ -f ${ocpath}/data/.htaccess ]
  +
then
  +
chmod 0644 ${ocpath}/data/.htaccess
  +
chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
  +
fi
  +
</nowiki>}}
   
  +
標準的なインストール場所からファイルパスをカスタマイズしている場合、上記のスクリプトも修正する必要があります。
=== オールインワンの Docker を使う ===
 
   
  +
==== fail2ban によるハッキングからの防護 ====
''ownCloud'' のインストールと設定を素早く安全に行う方法として [[Docker]] を使うことができます。[https://index.docker.io/search?q=ownCloud Docker のリポジトリ] には始めから ''ownCloud'' がインストールされている完全な LAMP スタックのイメージが複数存在します。''Docker'' コンテナは基本的に [[chroot]] 環境よりも安全でありオーバーヘッドも少なくなります。Docker 上の ''ownCloud'' はかなり古いマシンでもスムーズに動作するでしょう。普通に ''ownCloud'' をインストールするよりも大抵は ''Docker'' をインストールしてから ''ownCloud'' イメージをインストールする方が簡単で時間がかかりません。
 
  +
[[fail2ban]] のセットアップが強く推奨されています。インストールしたら、以下のファイルを作成してください:
   
  +
{{hc|/etc/fail2ban/filter.d/owncloud.conf|<nowiki>
{{Note|Docker イメージは ownCloud の公式サポートがありません。}}
 
  +
[Definition]
  +
failregex={"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"}
  +
  +
ignoreregex =
  +
</nowiki>}}
  +
  +
{{hc|/etc/fail2ban/jail.local|<nowiki>
  +
[owncloud]
  +
enabled = true
  +
filter = owncloud
  +
port = http,https
  +
logpath = /usr/share/webapps/owncloud/data/owncloud.log
  +
# optionally whitelist internal LAN IP addresses
  +
ignoreip = 192.168.1.1/24
  +
</nowiki>}}
  +
  +
設定後 {{ic|fail2ban}} サービスを[[systemd#ユニットを使う|再起動]]してください。以下を実行することで設定をテストできます:
  +
# fail2ban-regex /usr/share/webapps/owncloud/data/owncloud.log /etc/fail2ban/filter.d/owncloud.conf -v
  +
  +
== Arch パッケージのアップデートに伴うメンテナンス ==
  +
  +
Arch の owncloud パッケージを pacman で更新した場合、ウェブインターフェイスから手動で関連ファイルのアップデートを実行する必要があります。もしくは、シェルから ''http'' ユーザーとして {{ic|/usr/share/webapps/owncloud/occ upgrade}} を実行することでもアップデートできます:
  +
# sudo -u http /usr/share/webapps/owncloud/occ upgrade
  +
  +
{{Note|上記のアップデートを行わないとモバイルアプリから接続できなくなります。}}
  +
  +
== データベースの設定 ==
  +
=== MariaDB ===
  +
[[MySQL#インストール|MariaDB]] をインストールして初期設定を完了したら、MariaDB の中に ownCloud 用のデータベースとユーザーを作成する必要があります:
  +
  +
$ mysql -u root -p
  +
create database owncloud;
  +
create user ownclouduser@localhost identified by 'password';
  +
grant all privileges on owncloud.* to ownclouduser@localhost identified by 'password';
  +
flush privileges;
  +
exit;
  +
  +
== ウェブサーバーの設定 ==
   
== Apache の設定 ==
+
=== Apache の設定 ===
   
 
{{Note|[[Apache HTTP Server#PHP]] に書かれているようにして PHP を有効化してください。}}
 
{{Note|[[Apache HTTP Server#PHP]] に書かれているようにして PHP を有効化してください。}}
85行目: 152行目:
 
Include conf/extra/owncloud.conf
 
Include conf/extra/owncloud.conf
   
  +
Apache ({{ic|httpd.service}}) を再起動します。
セキュリティを確保するために、[https://doc.owncloud.org/server/8.0/admin_manual/installation/installation_wizard.html#setting-strong-directory-permissions 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 ({{ic|httpd.service}}) を再起動します。
 
   
 
ウェブブラウザで http://localhost/owncloud を開いて下さい。ユーザーアカウントを作成してインストールウィザードに従う必要があります。
 
ウェブブラウザで http://localhost/owncloud を開いて下さい。ユーザーアカウントを作成してインストールウィザードに従う必要があります。
   
  +
{{Note|データフォルダを別の場所に移動するとデフォルトの apache 設定ファイルにある open_basedir オプションの設定と衝突する可能性があります。}}
=== WebDAV ===
 
  +
  +
==== WebDAV ====
   
 
OwnCloud には WebDAV の実装が付いておりデフォルトで有効になっていますが、Apache の実装と衝突する可能性があります。OwnCloud は {{ic|/etc/httpd/conf/httpd.conf}} で {{ic|mod_dav}} と {{ic|mod_dav_fs}} を無効化することを [http://forum.owncloud.org/viewtopic.php?f=17&t=7240 推奨] しています。
 
OwnCloud には WebDAV の実装が付いておりデフォルトで有効になっていますが、Apache の実装と衝突する可能性があります。OwnCloud は {{ic|/etc/httpd/conf/httpd.conf}} で {{ic|mod_dav}} と {{ic|mod_dav_fs}} を無効化することを [http://forum.owncloud.org/viewtopic.php?f=17&t=7240 推奨] しています。
   
=== サブディレクトリで ownCloud を動かす ===
+
==== サブディレクトリで ownCloud を動かす ====
   
 
デフォルトの {{ic|owncloud.conf}} を {{ic|httpd.conf}} でインクルードすることで、ownCloud は80番ポートと localhost ドメインをコントロールします。
 
デフォルトの {{ic|owncloud.conf}} を {{ic|httpd.conf}} でインクルードすることで、ownCloud は80番ポートと localhost ドメインをコントロールします。
116行目: 168行目:
 
サブディレクトリで ownCloud を動作させたい場合は、{{ic|/etc/httpd/conf/extra/owncloud.conf}} を編集して include ファイルの {{ic|<nowiki><VirtualHost *:80> ... </VirtualHost></nowiki>}} の部分をコメントアウトしてください。
 
サブディレクトリで ownCloud を動作させたい場合は、{{ic|/etc/httpd/conf/extra/owncloud.conf}} を編集して include ファイルの {{ic|<nowiki><VirtualHost *:80> ... </VirtualHost></nowiki>}} の部分をコメントアウトしてください。
   
== Nginx + php-fpm の設定 ==
+
=== Nginx の設定 ===
   
ownCloud の公式ドキュメントでは php-fpm で PHP を使っています。したがってそれが最もサポートされている構成になります。以下Arch Linux でるように[https://doc.owncloud.org/server/8.1/admin_manual/installation/nginx_configuration.html 推奨されるサーバー設定] から多少変更加えています。{{pkg|php-fpm}} と SSL 証明書が必要です
+
''ownCloud'' の公式ドキュメントでは {{Pkg|php-fpm}}[[PHP]] を使っています。したがってそれが最もサポートされている構成になります。''php-fpm'' の設定方法[[Nginx#PHP ]]をTLS 証明書の設定方法は [[Nginx#TLS/SSL]] をください。
   
  +
デフォルトでは、Arch Linux で ownCloud を動作させるのに [https://doc.owncloud.org/server/9.0/admin_manual/installation/nginx_configuration.html 推奨サーバー設定] から変更する必要があるのは {{ic|server_name}}, {{ic|ssl_certificate}}, {{ic|ssl_certificate_key}}, {{ic|root}}, {{ic|fastcgi_pass}} ディレクティブだけです:
{{bc|<nowiki>
 
user http;
 
worker_processes auto;
 
   
  +
{{hc|/etc/nginx/nginx.conf|<nowiki>
events {
 
  +
server {
worker_connections 1024;
 
  +
listen 80;
  +
server_name cloud.example.com;
  +
# enforce https
  +
return 301 https://$server_name$request_uri;
 
}
 
}
   
http {
+
server {
  +
listen 443 ssl;
 
  +
server_name cloud.example.com;
#sendfile on; # Appears to cause problems with webdav.
 
#tcp_nopush on;
 
   
  +
ssl_certificate /path/to/domain-cert.crt;
server {
 
  +
ssl_certificate_key /path/to/private-key.key;
listen 80;
 
server_name owncloud.example.com;
 
# enforce https
 
return 301 https://$server_name$request_uri;
 
}
 
   
  +
# Add headers to serve security related headers
server {
 
  +
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
include mime.types;
 
  +
add_header X-Content-Type-Options nosniff;
default_type application/octet-stream;
 
  +
add_header X-Frame-Options "SAMEORIGIN";
  +
add_header X-XSS-Protection "1; mode=block";
  +
add_header X-Robots-Tag none;
  +
add_header X-Download-Options noopen;
  +
add_header X-Permitted-Cross-Domain-Policies none;
   
  +
# Path to the root of your installation
listen 443 ssl;
 
  +
root /usr/share/webapps/owncloud/;
server_name owncloud.example.com;
 
  +
# set max upload size
  +
client_max_body_size 10G;
  +
fastcgi_buffers 64 4K;
   
  +
# Disable gzip to avoid the removal of the ETag header
ssl_certificate /etc/ssl/server.crt;
 
  +
gzip off;
ssl_certificate_key /etc/ssl/server.key;
 
   
  +
# Uncomment if your server is build with the ngx_pagespeed module
# Add headers to serve security related headers
 
  +
# This module is currently not supported.
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
 
  +
#pagespeed off;
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;
 
   
  +
index index.php;
# Path to the root of your installation
 
  +
error_page 403 /core/templates/403.php;
root /usr/share/webapps/owncloud;
 
  +
error_page 404 /core/templates/404.php;
# set max upload size
 
client_max_body_size 10G;
 
fastcgi_buffers 64 4K;
 
   
  +
rewrite ^/.well-known/carddav /remote.php/carddav/ permanent;
# Disable gzip to avoid the removal of the ETag header
 
  +
rewrite ^/.well-known/caldav /remote.php/caldav/ permanent;
gzip off;
 
   
  +
# The following 2 rules are only needed for the user_webfinger app.
# Uncomment if your server is build with the ngx_pagespeed module
 
  +
# Uncomment it if you're planning to use this app.
# This module is currently not supported.
 
  +
#rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
#pagespeed off;
 
  +
#rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
   
  +
location = /robots.txt {
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
 
  +
allow all;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
 
  +
log_not_found off;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
 
  +
access_log off;
  +
}
   
  +
location ~ ^/(build|tests|config|lib|3rdparty|templates|data)/ {
index index.php;
 
  +
deny all;
error_page 403 /core/templates/403.php;
 
  +
}
error_page 404 /core/templates/404.php;
 
   
location = /robots.txt {
+
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
allow all;
+
deny all;
  +
}
log_not_found off;
 
access_log off;
 
}
 
   
  +
location / {
location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README){
 
  +
rewrite ^/remote/(.*) /remote.php last;
deny all;
 
  +
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
}
 
  +
try_files $uri $uri/ =404;
  +
}
   
location / {
+
location ~ \.php(?:$|/) {
  +
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# The following 2 rules are only needed with webfinger
 
  +
include fastcgi_params;
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
 
  +
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
 
  +
fastcgi_param PATH_INFO $fastcgi_path_info;
  +
fastcgi_param HTTPS on;
  +
fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
  +
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
  +
fastcgi_intercept_errors on;
  +
}
   
  +
# Adding the cache control header for js and css files
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
 
  +
# Make sure it is BELOW the location ~ \.php(?:$|/) { block
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
 
  +
location ~* \.(?:css|js)$ {
  +
add_header Cache-Control "public, max-age=7200";
  +
# 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;
  +
add_header X-Download-Options noopen;
  +
add_header X-Permitted-Cross-Domain-Policies none;
  +
# Optional: Don't log access to assets
  +
access_log off;
  +
}
   
  +
# Optional: Don't log access to other assets
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
 
  +
location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
 
  +
access_log off;
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;
 
}
 
 
}
 
 
}
 
}
 
</nowiki>}}
 
</nowiki>}}
   
{{pkg|php-fpm}} を http ユーザーで動作させるように設定して、上記のようにパーミッションを設定すれば、動作するはずです。ownCloud の設定の {{ic|config.example.php}} を手動でコピーするのは推奨されていません。最初の実行時に自動的に生成されます。{{ic|/usr/share/webapps/owncloud/data}} という ownCloud のデータディレクトリを作成して所有者を root:http にすることで自動設定が行われます。
+
{{pkg|php-fpm}} を {{ic|http}} ユーザーで動作させるように設定して、上記のようにパーミッションを設定すれば、動作するはずです。ownCloud の設定の {{ic|config.example.php}} を手動でコピーするのは推奨されていません。最初の実行時に自動的に生成されます。{{ic|/usr/share/webapps/owncloud/data}} という ownCloud のデータディレクトリを作成して所有者を root:http にすることで自動設定が行われます。
   
== Nginx + uwsgi_php の設定 ==
+
=== uWSGI の設定 ===
   
Apache を使わずに、{{pkg|uwsgi-plugin-php}} アプリケーションサーバーを使って ownCloud を固有のプロセスで動かすことができます。uWSGI 自体にリソースの使用を制限するための機能が豊富に含まれており、アプリケーションのセキュリティを強化したり、専用のユーザーで動くようにプロセスを分けられます。
+
{{pkg|uwsgi-plugin-php}} による [[uWSGI]] アプリケーションサーバーを使うことで ownCloud を固有のプロセスで動かすことができます。システム全体の {{ic|php.ini}} を編集しなくても、インスタンスの [[PHP#設定|PHP 設定]]を定義することができるため、ウェブアプリケーションの設定を分離することが可能です。uWSGI 自体にリソースの使用を制限するための機能が豊富に含まれており、アプリケーションのセキュリティを強化したり、専用のユーザーで動くようにプロセスを分けられます。
   
=== 設定 ===
+
==== 設定 ====
   
  +
[[#Nginx の設定]]と異なるところは {{ic|<nowiki>location ~ \.php(?:$|/) {}</nowiki>}} ブロックだけです:
*まず最初に Nginx サーバーをセットアップしてください。詳しくは [[Nginx]] のページを参照。
 
*{{ic|/etc/nginx/nginx.conf}} ファイルの http セクションに以下の行でサーバーを設定:
 
 
{{bc|<nowiki>
 
{{bc|<nowiki>
  +
location ~ \.php(?:$|/) {
# your nginx-server configs
 
  +
include uwsgi_params;
# ...
 
  +
uwsgi_modifier1 14;
  +
# Avoid duplicate headers confusing OC checks
  +
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_pass unix:/run/uwsgi/owncloud.sock;
  +
}
  +
</nowiki>}}
   
  +
それから ''uWSGI'' の設定ファイルを作成してください:
# uncomment to run as user and group http
 
#user http;
 
   
  +
{{hc|/etc/uwsgi/owncloud.ini|<nowiki>
http {
 
  +
[uwsgi]
# more configs
 
  +
; load the required plugins
# ...
 
  +
plugins = php
server {
 
  +
; force the sapi name to 'apache', this will enable the opcode cache
listen 80;
 
  +
php-sapi-name = apache
#listen 443 ssl;
 
server_name localhost;
 
   
  +
; set master process name and socket
#ssl_certificate cert.pem;
 
  +
; '%n' refers to the name of this configuration file without extension
#ssl_certificate_key key.pem;
 
  +
procname-master = uwsgi %n
  +
master = true
  +
socket = /run/uwsgi/%n.sock
   
  +
; drop privileges
#ssl_session_cache shared:SSL:1m;
 
  +
uid = http
#ssl_session_timeout 5m;
 
  +
gid = http
  +
umask = 027
   
  +
; run with at least 1 process but increase up to 4 when needed
#ssl_ciphers HIGH:!aNULL:!MD5;
 
  +
processes = 4
#ssl_prefer_server_ciphers on;
 
  +
cheaper = 1
   
  +
; reload whenever this config file changes
#this is to avoid Request Entity Too Large error
 
  +
; %p is the full path of the current config file
client_max_body_size 1000M;
 
  +
touch-reload = %p
# 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;
 
}
 
}
 
}
 
</nowiki>}}
 
*次に [[Uwsgi|uWSGI]] の設定ファイルを作成します。{{ic|/etc/uwsgi/owncloud.ini}} を使うと良いでしょう:
 
{{bc|<nowiki>
 
[uwsgi]
 
master = true
 
socket = 127.0.0.1:3001
 
   
  +
; disable uWSGI request logging
# Change this to where you want ownlcoud data to be stored (maybe /home/owncloud)
 
  +
;disable-logging = true
owncloud_data_dir = /usr/share/webapps/owncloud/data/
 
chdir = %(owncloud_data_dir)
 
   
  +
; enforce a DOCUMENT_ROOT
plugins = php
 
php-docroot = /usr/share/webapps/owncloud
+
php-docroot = /usr/share/webapps/%n
  +
; limit allowed extensions
php-index = index.php
 
  +
php-allowed-ext = .php
  +
; and search for index.php if required
  +
php-index = index.php
   
  +
; set php configuration for this instance of php, no need to edit global php.ini
# 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 = 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 = open_basedir=/tmp/:/usr/share/webapps/owncloud:/etc/webapps/owncloud:/dev/urandom
php-set = session.save_path=/tmp
+
php-set = expose_php=false
  +
; avoid security risk of leaving sessions in world-readable /tmp
php-set = post_max_size=1000M
 
  +
php-set = session.save_path=/usr/share/webapps/owncloud/data
php-set = upload_max_filesize=1000M
 
php-set = always_populate_raw_post_data=-1
 
   
  +
; port of php directives set upstream in /usr/share/webapps/owncloud/.user.ini for use with PHP-FPM
# load all extensions only in this instance of php, no need to edit global php.ini
 
php-set = extension=bz2.so
+
php-set = upload_max_filesize=513M
php-set = extension=curl.so
+
php-set = post_max_size=513M
php-set = extension=intl.so
+
php-set = memory_limit=512M
php-set = extension=pdo_sqlite.so
+
php-set = output_buffering=off
  +
php-set = extension=exif.so
 
  +
; load all extensions only in this instance of php, no need to edit global php.ini
  +
;; required core modules
 
php-set = extension=gd.so
 
php-set = extension=gd.so
php-set = extension=imagick.so
 
php-set = extension=gmp.so
 
 
php-set = extension=iconv.so
 
php-set = extension=iconv.so
  +
;php-set = extension=zip.so # enabled by default in global php.ini
  +
  +
;; database connectors
  +
;; uncomment your selected driver
  +
;php-set = extension=pdo_sqlite.so
  +
;php-set = extension=pdo_mysql.so
  +
;php-set = extension=pdo_pgsql.so
  +
  +
;; recommended extensions
  +
;php-set = extension=curl.so # enabled by default in global php.ini
  +
php-set = extension=bz2.so
  +
php-set = extension=intl.so
 
php-set = extension=mcrypt.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
 
   
  +
;; required for specific apps
processes = 10
 
  +
;php-set = extension=ldap.so # for LDAP integration
cheaper = 2
 
  +
;php-set = extension=ftp.so # for FTP storage / external user authentication
cron = -3 -1 -1 -1 -1 /usr/bin/php -f /usr/share/webapps/owncloud/cron.php 1>/dev/null
 
  +
;php-set = extension=imap.so # for external user authentication, requires php-imap
   
  +
;; recommended for specific apps
# Uncomment line below and replace http with a specific user/group name which you want uwsgi to run with.
 
  +
;php-set = extension=exif.so # for image rotation in pictures app, requires exiv2
#uid = http
 
  +
;php-set = extension=gmp.so # for SFTP storage
#gid = http
 
  +
  +
;; for preview generation
  +
;; provided by packages in AUR
  +
; php-set = extension=imagick.so
  +
  +
; opcache
  +
php-set = zend_extension=opcache.so
  +
  +
; user cache
  +
; provided by php-acpu, to be enabled **either** here **or** in /etc/php/conf.d/apcu.ini
  +
php-set = extension=apcu.so
  +
; per https://github.com/krakjoe/apcu/blob/simplify/INSTALL
  +
php-set = apc.ttl=7200
  +
php-set = apc.enable_cli=1
  +
  +
cron2 = minute=-15,unique=1 /usr/bin/php -f /usr/share/webapps/owncloud/cron.php 1>/dev/null
 
</nowiki>}}
 
</nowiki>}}
   
  +
{{Note|
=== 有効化 ===
 
  +
* 必ず uWSGI 設定ファイルでタイムゾーンを設定して使用するデータベースコネクタをアンコメントしてください。
  +
* PHP 7 から、[[PHP#設定|open_basedir]] ディレクトリは上流と同じように [https://www.archlinuxjp.org/news/php-70-packages-released/ デフォルトでは設定されなくなりました]。使用すると [https://github.com/owncloud/core/search?q&#61;open_basedir&type&#61;Issues&utf8&#61;%E2%9C%93 一部の機能が使えなくなる] 可能性があります。}}
  +
  +
{{Warning|[https://uwsgi-docs.readthedocs.org/en/latest/Cron.html uWSGI cron] によって設定される [https://doc.owncloud.org/server/9.0/admin_manual/configuration_server/background_jobs_configuration.html ownCloud のバックグラウンドジョブ] は {{ic|/etc/php/php.ini}} のグローバル設定を使用します。必要なモジュールなどのパラメータが有効にならず、[https://github.com/owncloud/core/issues/12678#issuecomment-66114448 様々な問題] が発生します。{{ic|/etc/php/php.ini}} を {{ic|/etc/uwsgi/cron-php.ini}} などにコピーして必要な設定 ({{ic|/etc/uwsgi/owncloud.ini}} のパラメータ) を行い、cron で ''php'' を実行する箇所に {{ic|-c /etc/uwsgi/cron-php.ini}} オプションを追加することで問題は解決します。}}
  +
  +
==== 有効化 ====
   
[[Uwsgi|uWSGI]] には設定ファイルをインスタンスの識別子として使ってアプリケーションを起動したり有効化できる[[Systemd#ユニットを使う|テンプレートユニット]]が入っています。例えば:
+
[[uWSGI]] には設定ファイルをインスタンスの識別子として使ってアプリケーションを起動したり有効化できる[[Systemd#ユニットを使う|テンプレートユニット]]が入っています。例えば:
 
# systemctl start uwsgi@owncloud.socket
 
# systemctl start uwsgi@owncloud.socket
 
上のコマンドは {{ic|/etc/uwsgi/owncloud.ini}} 設定ファイルを参照して必要に応じて起動します。
 
上のコマンドは {{ic|/etc/uwsgi/owncloud.ini}} 設定ファイルを参照して必要に応じて起動します。
371行目: 411行目:
 
{{Note|[http://0pointer.de/blog/projects/socket-activation.html systemd のソケットアクティベーション] を利用することで、インスタンスへの接続がない間は無駄にリソースを消費しないようにしています。すぐに有効化したい場合は、{{ic|.socket}} という部分を削除してサービスを起動・有効化してください。}}
 
{{Note|[http://0pointer.de/blog/projects/socket-activation.html systemd のソケットアクティベーション] を利用することで、インスタンスへの接続がない間は無駄にリソースを消費しないようにしています。すぐに有効化したい場合は、{{ic|.socket}} という部分を削除してサービスを起動・有効化してください。}}
   
[[Uwsgi#サービスの起動]]も参照。
+
[[uWSGI#サービスの起動]]も参照。
   
 
== 同期 ==
 
== 同期 ==
377行目: 417行目:
 
=== デスクトップ ===
 
=== デスクトップ ===
   
公式クライアントは {{Pkg|owncloud-client}} パッケージでインストールできます。[[AUR]] には様々なバージョンが存在します: {{AUR|owncloud-client-beta}}{{Broken package link|{{aur-mirror|owncloud-client-beta}}}}, {{AUR|owncloud-client-git}} and {{AUR|owncloud-client-qt5}}{{Broken package link|{{aur-mirror|owncloud-client-qt5}}}}。使用方法はドキュメントの [http://doc.owncloud.org/server/7.0/user_manual/files/sync.html こちらのページ] に書かれています。
+
公式クライアントは {{Pkg|owncloud-client}} パッケージでインストールできます。[[AUR]] には様々なバージョンが存在します: {{AUR|owncloud-client-beta}}{{Broken package link|{{aur-mirror|owncloud-client-beta}}}}, {{AUR|owncloud-client-git}}, {{AUR|owncloud-client-qt5}}{{Broken package link|{{aur-mirror|owncloud-client-qt5}}}}。使用方法はドキュメントの [http://doc.owncloud.org/server/7.0/user_manual/files/sync.html こちらのページ] に書かれています。
   
 
==== カレンダー ====
 
==== カレンダー ====
410行目: 450行目:
 
https://own.example.com/remote.php/webdav /path/to/mount davfs rw,user,noauto 0 0
 
https://own.example.com/remote.php/webdav /path/to/mount davfs rw,user,noauto 0 0
 
}}
 
}}
{{Tip|自動でマウントできるように [[Davfs#通常ユーザーでマウント]] で説明されているようにファイルにユーザー名 (と必要であればパスワード) を保存できます。}}
+
{{Tip|自動でマウントできるように [[Davfs#通常ユーザーでマウント]]で説明されているようにファイルにユーザー名 (と必要であればパスワード) を保存できます。}}
{{Note|ディレクトリは作成・コピーできるのに、ファイルの作成やコピーができない場合、[[Davfs#ファイルの作成やコピーができない]] を見てください。}}
+
{{Note|ディレクトリは作成・コピーできるのに、ファイルの作成やコピーができない場合、[[Davfs#ファイルの作成やコピーができない]]を見てください。}}
   
 
=== Android ===
 
=== Android ===
444行目: 484行目:
 
* ownCloud の [http://owncloud.org/sync-clients/ sync-clients] を使うことを計画しているなら、[[Network Time Protocol daemon|ntpd]] をインストールして ownCloud サーバーで実行してください。ntpd が実行されてないと、sync-client は失敗します。
 
* ownCloud の [http://owncloud.org/sync-clients/ sync-clients] を使うことを計画しているなら、[[Network Time Protocol daemon|ntpd]] をインストールして ownCloud サーバーで実行してください。ntpd が実行されてないと、sync-client は失敗します。
   
* 接続には [[LAMP#SSL|SSL 暗号化]]を追加してください!
+
* 接続には [[LAMP#TLS/SSL|SSL 暗号化]]を追加してください!
 
(上記のように SSL 暗号化を追加する場合、{{ic|/etc/httpd/conf/extra/httpd-ssl.conf}} を編集して {{ic|DocumentRoot "/srv/http"}} を {{ic|DocumentRoot "/usr/share/webapps/owncloud"}} に変更してください。)
 
(上記のように SSL 暗号化を追加する場合、{{ic|/etc/httpd/conf/extra/httpd-ssl.conf}} を編集して {{ic|DocumentRoot "/srv/http"}} を {{ic|DocumentRoot "/usr/share/webapps/owncloud"}} に変更してください。)
   
462行目: 502行目:
 
folder_rename 0
 
folder_rename 0
 
というのは ownCloud はアップロードされたファイルを速攻でスキャンするからです。展開された接頭辞などを SABnzbd が削除することを予防します。
 
というのは ownCloud はアップロードされたファイルを速攻でスキャンするからです。展開された接頭辞などを SABnzbd が削除することを予防します。
  +
  +
== オールインワンの Docker を使う ==
  +
  +
''ownCloud'' のインストールと設定を素早く安全に行う方法として [[Docker]] を使うことができます。[https://index.docker.io/search?q=ownCloud Docker のリポジトリ] には始めから ''ownCloud'' がインストールされている完全な LAMP スタックのイメージが複数存在します。''Docker'' コンテナは基本的に [[chroot]] 環境よりも安全でありオーバーヘッドも少なくなります。Docker 上の ''ownCloud'' はかなり古いマシンでもスムーズに動作するでしょう。普通に ''ownCloud'' をインストールするよりも大抵は ''Docker'' をインストールしてから ''ownCloud'' イメージをインストールする方が簡単で時間がかかりません。
  +
  +
{{Note|Docker イメージは ownCloud の公式サポートがありません。}}
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
505行目: 551行目:
   
 
ソース: [http://www.leftbrainthings.com/2013/10/13/creating-and-importing-self-signed-certificate-to-android-device/]
 
ソース: [http://www.leftbrainthings.com/2013/10/13/creating-and-importing-self-signed-certificate-to-android-device/]
  +
  +
[https://play.google.com/store/apps/details?id=at.bitfire.cadroid CAdroid] を使ってサーバーから直接証明書をインポートする方法もあります。
   
 
=== 設定ディレクトリに書き込みができない ===
 
=== 設定ディレクトリに書き込みができない ===
530行目: 578行目:
 
=== ログイン後に白いページが表示される ===
 
=== ログイン後に白いページが表示される ===
   
おそらく新しくインストールしたアプリが原因です。修正するには、[[phpMyAdmin]] を使っ {{ic|oc_appconfig}} テーブルを編集すか (運が良いことにテーブルedit オプショがある場合) mysql で手動で修正してください:
+
おそらく新しくインストールしたアプリが原因です。修正するには、[https://doc.owncloud.org/server/8.2/admin_manual/configuration_server/occ_command.html こちら] に書かれようocc コマドを使用ます。アプリを全確認するには:
  +
# sudo -u http php /usr/share/webapps/owncloud/occ app:list
  +
問題のアプリを無効化するには (ownCloud を標準のディレクトリにインストールした場合):
  +
# sudo -u http php /usr/share/webapps/owncloud/occ app:disable <nameOfExtension>
  +
  +
もしくは [[phpMyAdmin]] を使って {{ic|oc_appconfig}} テーブルを編集するか (運が良いことにテーブルに edit オプションがある場合) mysql で手動で修正してください:
   
mysql -u root -p owncloud
+
$ mysql -u root -p owncloud
MariaDB [owncloud]> '''delete from''' oc_appconfig '''where''' appid='<nameOfExtension>' '''and''' configkey='enabled' '''and''' configvalue='yes'
+
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');
 
MariaDB [owncloud]> '''insert into''' oc_appconfig (appid,configkey,configvalue) '''values''' ('<nameOfExtension>','enabled','no');
   
578行目: 631行目:
 
また、ドキュメントには書かれていませんが、{{ic|/etc/php/php.ini}} の {{ic|open_basedir}} 行にディレクトリを指定してください。
 
また、ドキュメントには書かれていませんが、{{ic|/etc/php/php.ini}} の {{ic|open_basedir}} 行にディレクトリを指定してください。
   
One clean method is to have the package-installed directory at {{ic|/usr/share/webapps/owncloud/apps}} stay owned by root, and have the user-installed apps go into e.g. {{ic|/var/www/owncloud/apps}}, which is owned by http. Then you can set {{ic|appstoreenabled}} to {{ic|true}} and package upgrades of apps should work fine as well. Relevant lines from {{ic|/etc/webapps/owncloud/config/config.php}}:
+
きれいな解決方法としてパッケージによってインストールされた {{ic|/usr/share/webapps/owncloud/apps}} ディレクトリの所有者は root にしたまま、ユーザーがインストールしたアプリは http が所有者となる {{ic|/var/www/owncloud/apps}} などに入れる方法があります。それから {{ic|appstoreenabled}} {{ic|true}} に設定してアプリのパッケージをアップグレードすれば上手く動作するはずです。{{ic|/etc/webapps/owncloud/config/config.php}} の該当する行:
   
 
{{bc|<nowiki>
 
{{bc|<nowiki>
612行目: 665行目:
 
管理者マニュアルにしたがって {{ic|Strict-Transport-Security}}, {{ic|X-Content-Type-Options}}, {{ic|X-Frame-Options}}, {{ic|X-XSS-Protection}}, {{ic|X-Robots-Tag}} を設定しても管理者ページの上部に警告が表示されることがあります。
 
管理者マニュアルにしたがって {{ic|Strict-Transport-Security}}, {{ic|X-Content-Type-Options}}, {{ic|X-Frame-Options}}, {{ic|X-XSS-Protection}}, {{ic|X-Robots-Tag}} を設定しても管理者ページの上部に警告が表示されることがあります。
   
  +
考えられる原因として ownCloud 自身が設定を行っていて、uWSGI によって nginx に設定が重複して追加されてしまっている可能性があります:
A possible cause could be that because owncloud sets those settings, uwsgi passed them along and nginx added them again:
 
 
{{hc|$ curl -I https://domain.tld|
 
{{hc|$ curl -I https://domain.tld|
 
<nowiki>...
 
<nowiki>...
625行目: 678行目:
 
X-Robots-Tag: none</nowiki>}}
 
X-Robots-Tag: none</nowiki>}}
   
While the fast_cgi sample config has a parameter to avoid that ( {{ic|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:
+
fast_cgi のサンプル設定には重複を避けるためのパラメータが存在しますが ({{ic|fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice}})uwsgi nginx を使用する場合、{{ic|nginx.conf}} の uwsgi の部分に以下の修正を加えることで解決します:
   
 
{{hc| /etc/nginx/nginx.conf|
 
{{hc| /etc/nginx/nginx.conf|
644行目: 697行目:
 
}
 
}
 
...</nowiki>}}
 
...</nowiki>}}
  +
  +
=== パスワードが保存されない ===
  +
  +
パスワードが保存される起動するたびに要求される場合 {{Pkg|gnome-keyring}} をインストールしてみてください。
   
 
== 参照 ==
 
== 参照 ==

2016年9月25日 (日) 11:15時点における版

関連記事

ownCloud はクラウドストレージを提供するためのソフトウェア群です。

ownCloud のインストールと設定はどのウェブサーバーとデータベースを動かすかによって異なってきます。現在のところ wiki には #Apache の設定#Nginx の設定 が載っています。

目次

必要環境

ownCloudウェブサーバーPHPデータベースを必要とします。古典的な LAMP の組み合わせで問題なく動作し、推奨 されています。

インストール

公式リポジトリから owncloudインストールしてください。

/etc/php/php.ini必要な以下のエクステンションをアンコメントします [1]:

gd.so
iconv.so
xmlrpc.so
zip.so

また、php-intlphp-mcrypt をインストールして以下のエクステンションをアンコメントすることが 推奨 されています:

bz2.so
curl.so
intl.so
mcrypt.so

データベースのサポート

使用するデータベースバックエンドにあわせて、/etc/php/php.ini の以下の拡張をアンコメントしてください:

  • MySQL の場合、pdo_mysql.so をアンコメントしてください。
  • PostgreSQL の場合、pdo_pgsql.sopgsql.so をアンコメントして php-pgsql をインストールしてください。
  • SQLite の場合、pdo_sqlite.sosqlite3.so をアンコメントして php-sqlite をインストールしてください。

キャッシュ

パフォーマンスを向上させるために、APCu による PHP キャッシュを使うことを推奨します。PHP#APCu を見てください。同じく OPCache も有効にすると有益です。PHP#OPCache を参照。

APCu を有効にした後、以下のディレクティブを /etc/webapps/owncloud/config/config.php に追加してください:

'memcache.local' => '\OC\Memcache\APCu',
ノート: PHP 設定[apc] の下に apc.enable_cli=1 を追加してください。また、/etc/php/conf.d/apcu.iniextension=apcu.so をアンコメントしてください。2015年7月12日現在、これらの設定をしないと 複数問題 が発生します。

詳しくは 公式ドキュメント を参照。

Exif のサポート

公式リポジトリから exiv2 をインストールして php.iniexif.so エクステンションをアンコメントすることで exif サポートを有効化できます。

(オプション) セキュリティの強化

ファイルシステムのパーティションの設定

公式インストールマニュアル より:

セキュリティを強化するために ownCloud ディレクトリのパーミッションはできるだけ制限的に設定することを推奨します。インストールを行った後、セットアップを開始する前に設定してください。HTTP ユーザーが config/, data/, apps/ ディレクトリの所有者となっていれば ownCloud を設定したりデータファイルを作成・修正・削除したり、ownCloud のウェブインターフェイスでアプリをインストールできます。
oc-perms
#!/bin/bash
ocpath='/usr/share/webapps/owncloud'
htuser='http'
htgroup='http'
rootuser='root'

printf "Creating possible missing Directories\n"
mkdir -p $ocpath/data
mkdir -p $ocpath/assets

printf "chmod Files and Directories\n"
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750

printf "chown Directories\n"
chown -R ${rootuser}:${htgroup} ${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 -R ${htuser}:${htgroup} ${ocpath}/assets/

chmod +x ${ocpath}/occ

printf "chmod/chown .htaccess\n"
if [ -f ${ocpath}/.htaccess ]
 then
  chmod 0644 ${ocpath}/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
fi
if [ -f ${ocpath}/data/.htaccess ]
 then
  chmod 0644 ${ocpath}/data/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
fi

標準的なインストール場所からファイルパスをカスタマイズしている場合、上記のスクリプトも修正する必要があります。

fail2ban によるハッキングからの防護

fail2ban のセットアップが強く推奨されています。インストールしたら、以下のファイルを作成してください:

/etc/fail2ban/filter.d/owncloud.conf
[Definition]
failregex={"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"}

ignoreregex =
/etc/fail2ban/jail.local
[owncloud]
enabled = true
filter  = owncloud
port    =  http,https
logpath = /usr/share/webapps/owncloud/data/owncloud.log
# optionally whitelist internal LAN IP addresses
ignoreip = 192.168.1.1/24

設定後 fail2ban サービスを再起動してください。以下を実行することで設定をテストできます:

# fail2ban-regex /usr/share/webapps/owncloud/data/owncloud.log /etc/fail2ban/filter.d/owncloud.conf -v

Arch パッケージのアップデートに伴うメンテナンス

Arch の owncloud パッケージを pacman で更新した場合、ウェブインターフェイスから手動で関連ファイルのアップデートを実行する必要があります。もしくは、シェルから http ユーザーとして /usr/share/webapps/owncloud/occ upgrade を実行することでもアップデートできます:

# sudo -u http /usr/share/webapps/owncloud/occ upgrade
ノート: 上記のアップデートを行わないとモバイルアプリから接続できなくなります。

データベースの設定

MariaDB

MariaDB をインストールして初期設定を完了したら、MariaDB の中に ownCloud 用のデータベースとユーザーを作成する必要があります:

$ mysql -u root -p
create database owncloud;
create user ownclouduser@localhost identified by 'password';
grant all privileges on owncloud.* to ownclouduser@localhost identified by 'password';
flush privileges;
exit;

ウェブサーバーの設定

Apache の設定

ノート: Apache HTTP Server#PHP に書かれているようにして PHP を有効化してください。

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

Apache (httpd.service) を再起動します。

ウェブブラウザで http://localhost/owncloud を開いて下さい。ユーザーアカウントを作成してインストールウィザードに従う必要があります。

ノート: データフォルダを別の場所に移動するとデフォルトの apache 設定ファイルにある open_basedir オプションの設定と衝突する可能性があります。

WebDAV

OwnCloud には WebDAV の実装が付いておりデフォルトで有効になっていますが、Apache の実装と衝突する可能性があります。OwnCloud は /etc/httpd/conf/httpd.confmod_davmod_dav_fs を無効化することを 推奨 しています。

サブディレクトリで ownCloud を動かす

デフォルトの owncloud.confhttpd.conf でインクルードすることで、ownCloud は80番ポートと localhost ドメインをコントロールします。

サブディレクトリで ownCloud を動作させたい場合は、/etc/httpd/conf/extra/owncloud.conf を編集して include ファイルの <VirtualHost *:80> ... </VirtualHost> の部分をコメントアウトしてください。

Nginx の設定

ownCloud の公式ドキュメントでは php-fpmPHP を使っています。したがってそれが最もサポートされている構成になります。php-fpm の設定方法は Nginx#PHP を動かすを、TLS 証明書の設定方法は Nginx#TLS/SSL を見てください。

デフォルトでは、Arch Linux で ownCloud を動作させるのに 推奨サーバー設定 から変更する必要があるのは server_name, ssl_certificate, ssl_certificate_key, root, fastcgi_pass ディレクティブだけです:

/etc/nginx/nginx.conf
server {
  listen 80;
  server_name cloud.example.com;
  # enforce https
  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl;
  server_name cloud.example.com;

  ssl_certificate /path/to/domain-cert.crt;
  ssl_certificate_key /path/to/private-key.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;
  add_header X-Download-Options noopen;
  add_header X-Permitted-Cross-Domain-Policies 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;

  index index.php;
  error_page 403 /core/templates/403.php;
  error_page 404 /core/templates/404.php;

  rewrite ^/.well-known/carddav /remote.php/carddav/ permanent;
  rewrite ^/.well-known/caldav /remote.php/caldav/ permanent;

  # The following 2 rules are only needed for the user_webfinger app.
  # Uncomment it if you're planning to use this app.
  #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
  #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

  location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
  }

  location ~ ^/(build|tests|config|lib|3rdparty|templates|data)/ {
    deny all;
  }

  location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
    deny all;
  }

  location / {
    rewrite ^/remote/(.*) /remote.php last;
    rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
    try_files $uri $uri/ =404;
  }

  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
    fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
    fastcgi_intercept_errors on;
  }

  # Adding the cache control header for js and css files
  # Make sure it is BELOW the location ~ \.php(?:$|/) { block
  location ~* \.(?:css|js)$ {
    add_header Cache-Control "public, max-age=7200";
    # 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;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    # Optional: Don't log access to assets
    access_log off;
  }

  # Optional: Don't log access to other assets
  location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
    access_log off;
  }
}

php-fpmhttp ユーザーで動作させるように設定して、上記のようにパーミッションを設定すれば、動作するはずです。ownCloud の設定の config.example.php を手動でコピーするのは推奨されていません。最初の実行時に自動的に生成されます。/usr/share/webapps/owncloud/data という ownCloud のデータディレクトリを作成して所有者を root:http にすることで自動設定が行われます。

uWSGI の設定

uwsgi-plugin-php による uWSGI アプリケーションサーバーを使うことで ownCloud を固有のプロセスで動かすことができます。システム全体の php.ini を編集しなくても、インスタンスの PHP 設定を定義することができるため、ウェブアプリケーションの設定を分離することが可能です。uWSGI 自体にリソースの使用を制限するための機能が豊富に含まれており、アプリケーションのセキュリティを強化したり、専用のユーザーで動くようにプロセスを分けられます。

設定

#Nginx の設定と異なるところは location ~ \.php(?:$|/) {} ブロックだけです:

  location ~ \.php(?:$|/) {
    include uwsgi_params;
    uwsgi_modifier1 14;
    # Avoid duplicate headers confusing OC checks
    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_pass unix:/run/uwsgi/owncloud.sock;
  }

それから uWSGI の設定ファイルを作成してください:

/etc/uwsgi/owncloud.ini
[uwsgi]
; load the required plugins
plugins = php
; force the sapi name to 'apache', this will enable the opcode cache  
php-sapi-name = apache

; set master process name and socket
; '%n' refers to the name of this configuration file without extension
procname-master = uwsgi %n
master = true
socket = /run/uwsgi/%n.sock

; drop privileges
uid    = http
gid    = http
umask  = 027

; run with at least 1 process but increase up to 4 when needed
processes = 4
cheaper = 1

; reload whenever this config file changes
; %p is the full path of the current config file
touch-reload = %p

; disable uWSGI request logging
;disable-logging = true

; enforce a DOCUMENT_ROOT
php-docroot     = /usr/share/webapps/%n
; limit allowed extensions
php-allowed-ext = .php
; and search for index.php if required
php-index = index.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=/tmp/:/usr/share/webapps/owncloud:/etc/webapps/owncloud:/dev/urandom
php-set = expose_php=false
; avoid security risk of leaving sessions in world-readable /tmp
php-set = session.save_path=/usr/share/webapps/owncloud/data

; port of php directives set upstream in /usr/share/webapps/owncloud/.user.ini for use with PHP-FPM
php-set = upload_max_filesize=513M
php-set = post_max_size=513M
php-set = memory_limit=512M
php-set = output_buffering=off

; load all extensions only in this instance of php, no need to edit global php.ini
;; required core modules
php-set = extension=gd.so
php-set = extension=iconv.so
;php-set = extension=zip.so     # enabled by default in global php.ini

;; database connectors
;; uncomment your selected driver
;php-set = extension=pdo_sqlite.so
;php-set = extension=pdo_mysql.so
;php-set = extension=pdo_pgsql.so

;; recommended extensions
;php-set = extension=curl.so    # enabled by default in global php.ini
php-set = extension=bz2.so
php-set = extension=intl.so
php-set = extension=mcrypt.so

;; required for specific apps
;php-set = extension=ldap.so    # for LDAP integration
;php-set = extension=ftp.so     # for FTP storage / external user authentication
;php-set = extension=imap.so    # for external user authentication, requires php-imap

;; recommended for specific apps
;php-set = extension=exif.so    # for image rotation in pictures app, requires exiv2
;php-set = extension=gmp.so     # for SFTP storage

;; for preview generation
;; provided by packages in AUR
; php-set = extension=imagick.so

; opcache
php-set = zend_extension=opcache.so

; user cache
; provided by php-acpu, to be enabled **either** here **or** in /etc/php/conf.d/apcu.ini
php-set = extension=apcu.so
; per https://github.com/krakjoe/apcu/blob/simplify/INSTALL
php-set = apc.ttl=7200
php-set = apc.enable_cli=1

cron2 = minute=-15,unique=1 /usr/bin/php -f /usr/share/webapps/owncloud/cron.php 1>/dev/null
ノート:
警告: uWSGI cron によって設定される ownCloud のバックグラウンドジョブ/etc/php/php.ini のグローバル設定を使用します。必要なモジュールなどのパラメータが有効にならず、様々な問題 が発生します。/etc/php/php.ini/etc/uwsgi/cron-php.ini などにコピーして必要な設定 (/etc/uwsgi/owncloud.ini のパラメータ) を行い、cron で php を実行する箇所に -c /etc/uwsgi/cron-php.ini オプションを追加することで問題は解決します。

有効化

uWSGI には設定ファイルをインスタンスの識別子として使ってアプリケーションを起動したり有効化できるテンプレートユニットが入っています。例えば:

# systemctl start uwsgi@owncloud.socket

上のコマンドは /etc/uwsgi/owncloud.ini 設定ファイルを参照して必要に応じて起動します。

ブート時にデフォルトで uwsgi サービスを有効化するには、次を実行:

# systemctl enable uwsgi@owncloud.socket
ノート: systemd のソケットアクティベーション を利用することで、インスタンスへの接続がない間は無駄にリソースを消費しないようにしています。すぐに有効化したい場合は、.socket という部分を削除してサービスを起動・有効化してください。

uWSGI#サービスの起動も参照。

同期

デスクトップ

公式クライアントは owncloud-client パッケージでインストールできます。AUR には様々なバージョンが存在します: owncloud-client-betaAUR[リンク切れ: アーカイブ: aur-mirror], owncloud-client-gitAUR, owncloud-client-qt5AUR[リンク切れ: アーカイブ: aur-mirror]。使用方法はドキュメントの こちらのページ に書かれています。

カレンダー

Mozilla ThunderbirdLightning カレンダーを使って 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
ヒント: 自動でマウントできるように Davfs#通常ユーザーでマウントで説明されているようにファイルにユーザー名 (と必要であればパスワード) を保存できます。
ノート: ディレクトリは作成・コピーできるのに、ファイルの作成やコピーができない場合、Davfs#ファイルの作成やコピーができないを見てください。

Android

小額で使うことができる公式 Android アプリが Play ストア にあり、無料で使えるアプリが F-Droid にあります。

連絡先とカレンダーの同期を有効にするには:

  • Android 4 以上を使っている場合:
    1. [2] をダウンロードしてください (Play ストア, F-Droid)。
    2. httpd.conf で mod_rewrite.so を有効化してください。
    3. Account 設定で新しい DAVdroid アカウントを作成して、"短い"サーバーアドレスとログイン名/パスワードを指定してください。例: https://cloud.example.com (ウェブサーバーでリダイレクトを正しく設定していれば /remote.php/{carddav,webdav} の部分は必要ありません。DAVdroid は適切な URL を認識するはずです)。
古いバージョンが対象ですが、こちらの記事 には有用な情報が記載されています。
  • 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 暗号化を追加する場合、/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 が削除することを予防します。

オールインワンの Docker を使う

ownCloud のインストールと設定を素早く安全に行う方法として Docker を使うことができます。Docker のリポジトリ には始めから ownCloud がインストールされている完全な LAMP スタックのイメージが複数存在します。Docker コンテナは基本的に chroot 環境よりも安全でありオーバーヘッドも少なくなります。Docker 上の ownCloud はかなり古いマシンでもスムーズに動作するでしょう。普通に ownCloud をインストールするよりも大抵は Docker をインストールしてから ownCloud イメージをインストールする方が簡単で時間がかかりません。

ノート: Docker イメージは ownCloud の公式サポートがありません。

トラブルシューティング

自己署名証明書が使えない

ownCloud は cURLSabreDAV を使って 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]

CAdroid を使ってサーバーから直接証明書をインポートする方法もあります。

設定ディレクトリに書き込みができない

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

ログイン後に白いページが表示される

おそらく新しくインストールしたアプリが原因です。修正するには、こちら に書かれているように occ コマンドを使用します。アプリを全て確認するには:

# sudo -u http php /usr/share/webapps/owncloud/occ app:list

問題のアプリを無効化するには (ownCloud を標準のディレクトリにインストールした場合):

# sudo -u http php /usr/share/webapps/owncloud/occ app:disable <nameOfExtension>

もしくは 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 キャッシュを使う必要があります。redisphp-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 ユーザーからアプリディレクトリに書き込みができるようにするか、appstoreenabledfalse に設定する必要があります。

また、ドキュメントには書かれていませんが、/etc/php/php.iniopen_basedir 行にディレクトリを指定してください。

きれいな解決方法としてパッケージによってインストールされた /usr/share/webapps/owncloud/apps ディレクトリの所有者は root にしたまま、ユーザーがインストールしたアプリは http が所有者となる /var/www/owncloud/apps などに入れる方法があります。それから appstoreenabledtrue に設定してアプリのパッケージをアップグレードすれば上手く動作するはずです。/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.iniopen_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 を設定しても管理者ページの上部に警告が表示されることがあります。

考えられる原因として ownCloud 自身が設定を行っていて、uWSGI によって nginx に設定が重複して追加されてしまっている可能性があります:

$ 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

fast_cgi のサンプル設定には重複を避けるためのパラメータが存在しますが (fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice)、uwsgi と nginx を使用する場合、nginx.conf の uwsgi の部分に以下の修正を加えることで解決します:

 /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;
        }
...

パスワードが保存されない

パスワードが保存される起動するたびに要求される場合 gnome-keyring をインストールしてみてください。

参照