# Owncloud (日本語)

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

## インストール

owncloud は AUR で利用することができます。

1. はじめに、対応する wiki の記事を読みながら LAMP を設定します。
2. Arch User Repository (日本語)#パッケージのインストール を読んで owncloud をインストールします。
3. /etc/httpd/conf/httpd.conf に以下の設定を記述します (php5 は LAMP のセットアップ中に設定されています):

     Include /etc/httpd/conf/extra/owncloud.conf
     LoadModule php5_module modules/libphp5.so
     Include conf/extra/php5_module.conf

/etc/php/php.ini の以下のエクステンションを有効化します。

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

/etc/php/php.ini のどちらか使用するデータベースに依存したエクステンションを有効化します。

     sqlite.so
     sqlite3.so
     pdo_sqlite.so

または

     mysql.so
     mysqli.so
     pdo_mysql.so

httpd (Apache) を再起動し、http://localhost にウェブブラウザでアクセスしてください。インストールウィザードに従って、あなたのアカウントを作成することが出来るでしょう。

## カスタム設定

### ファイルサイズの制限

ownCloud のデフォルト設定では2MB以下がアップロード許可サイズとして設定されています。 /etc/php/php.ini を以下のように設定することで、これを変更することができます。 version 4.0ではこの必要はありません。現在、最大アップロードサイズは ownCloud の GUI で変更することができます

version 4.5では /usr/share/webapps/owncloud/.htaccess でアップロード制限を設定します。PHP が CGI として動作するようにセットアップされている場合、この設定が効かないので、/etc/php/php.ini で制限を変更する必要があります。それから open_basedir の変更も必要です。

     upload_max_filesize = 512M
     post_max_size = 512M
     memory_limit = 512M
     open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/

### ownCloud をサブディレクトリで実行する

httpd.conf 内に書かれている owncloud.conf を読み込んで、ownCloud はポート80とあなたの localhost ドメインをコントロールします。もし ownCloud をサブディレクトリで実行するようにしたいのなら、'Include /etc/httpd/conf/extra/owncloud.conf' 行を抜いて、以下のようなシンボリックリンクを使用してください:

    ln -s /usr/share/webapps/owncloud/ /srv/http/

## データを保管する

### 小さなファイル群

あなたの ownCloud に新しいファイルを追加する場合、WebDAV かウェブインターフェースのどちらかを常に使用します。そうしないと、正しくインデックスが作られず、ファイルがちゃんと表示されません。

WebDAVの速度向上を図るために、php-apc のインストールを熟考してください。

SABnzbd を使っているとき、あなたの sabnzdb.ini ファイルに以下の設定をすることをおすすめします。

    folder_rename 0

というのは ownCloud はアップロードされたファイルを速攻でスキャンするからです。展開された接頭辞などを SABnzbd が削除することを予防します。

### 大きなファイル群

WebDAV はCPUとメモリを食いつぶすので大きなファイルを扱うのには向いていません。

現在のバージョンでは、あなたの ownCloud に大きなデータをコピーする良い方法はないように思われます。

これの回避方法があります:

大きなファイルをあなたの ownCloud に直接コピーし、データベースを完全リスキャンします。 (例えば Re-scan filesystem アドオンを使うことができます)。

ですが、この方法は将来 ownCloud が計画している end-to-end 暗号化が実装された時に使えなくなるかもしれないので、注意してください。

## 重要なノート

- owncloud.example.xxx のようなサブドメインを使っている時に、正確な証明書で保護されているか確認してください。そうでなければ、ownCloud クライアントや wevdav からの接続は失敗するかもしれません。

- ownCloud の sync-clients を使うことを計画しているなら、NTP がインストールされ、あなたの ownCloud サーバーで実行されていることを確認してください。そうでなければ、sync-client は失敗します。

- 接続に SSL encryption を適用してください！

## Nginx + uwsgi_php を使う方法

Apache の利用を避け、wsgi_php アプリケーションサーバーを使い、ownCloud 自身のプロセスで実行することができます。uWSGI 自体はリソースを制限するための機能を豊富に含んでいて、確固たるアプリケーションセキュリティや、所有するユーザー以下でプロセスを実行し隔離することができます。

nginx の設定:

    #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;
        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;
    }

uWSGI の /etc/uwsgi/owncloud.ini (実行は uwsgi_php --ini /etc/uwsgi/owncloud.ini):

    [uwsgi]
    socket = 127.0.0.1:3001
    master = true
    chdir = /srv/http/owncloud
    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/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-set = date.timezone=Europe/Skopje
    php-set = open_basedir=/srv/http/owncloud:/tmp/:/usr/share/pear/:/usr/share/webapps/owncloud

    processes = 10
    cheaper = 2
    cron = -1 -1 -1 -1 -1 /usr/bin/curl -H https://localhost/cron.php

最後に、uWSGI を開始させるための簡素な systemd ユニットファイルを定義します (これを使うのに特権はいりません):

    [Unit]
    Description=OwnCloud service via uWSGI-PHP

    [Service]
    User=http
    ExecStart=/usr/bin/uwsgi_php --ini /etc/uwsgi/owncloud.ini
    ExecReload=/bin/kill -HUP $MAINPID
    KillSignal=SIGQUIT
    Restart=always

    [Install]
    WantedBy=multi-user.target

Category:

- Web Server (日本語)