Cozy

提供: ArchWiki
2018年1月2日 (火) 23:59時点におけるKusakata (トーク | 投稿記録)による版 (カテゴリ変更)
ナビゲーションに移動 検索に移動

関連記事

CozyNode.js で書かれた、フリーなセルフホストの個人用クラウドプラットフォームです (次期バージョンの v3 は Go で書かれています)。

個人的なクラウドの利用を簡単にしてプライバシーをユーザーの手に取り戻すことを標榜しています。アプリケーションの基本機能としてファイルや画像を保存したり、連絡先やカレンダーをメールクライアントと共有・同期できます。

マーケットプレイスからサードパーティ製のアプリを入手することができ Cozy のデフォルト機能を拡張して、タスク管理やブログ運営、銀行口座の管理などをすることも可能です。

インストール

cozyAUR パッケージをインストールしてください。コア (cozy-controller と cozy-monitor) と設定ファイルに加えて、必要な依存ライブラリもインストールされます。

ノート: 上記のパッケージでは nodejs-lts-argon による Node.js バージョン 4.x がインストールされます。新しいバージョンの Node.js (6.x や 8.x) でも Cozy は問題なく動きますが、Cozy が公式にサポートしているのは Node.js v4.x だけです。Arch Linux の公式リポジトリに入っている最新版の Node.js を使いたい場合は、PKGBUILD の依存パッケージを変更してください。

インストール前の設定

手動でユーザーアカウントを追加する必要があります:

# useradd -MU cozy-data-system
# useradd -MU cozy-home

CouchDB の設定

次にデータベースを設定します。Cozy は全てを CouchDB データベースに保存するため、データベースを管理するための CouchDB の管理者が必要です。管理者の認証情報を /etc/cozy/couchdb.login に配置することで Cozy は管理者アカウントを使用します。

管理者を作成するには、まず (pwgen などを使って) 認証情報を生成して、保存し、CouchDB に送信してください。ファイルには適切な権限を与える必要があります:

ノート: 以下の curl コマンドは CouchDB のバージョン 2.0 をシングルノードモードでセットアップします。CouchDB を別の目的で使いたくない場合を想定しています。
# pwgen -1 > /etc/cozy/couchdb.login
# pwgen -1 >> /etc/cozy/couchdb.login
# chown cozy-data-system /etc/cozy/couchdb.login
# chmod 640 /etc/cozy/couchdb.login
# curl -X PUT 127.0.0.1:5984/_node/couchdb@localhost/_config/admins/$(head -n1 /etc/cozy/couchdb.login) -d "\"$(tail -n1 /etc/cozy/couchdb.login)\""
# curl -X PUT $(head -n1 /etc/cozy/couchdb.login):$(tail -n1 /etc/cozy/couchdb.login)@127.0.0.1:5984/_users
# curl -X PUT $(head -n1 /etc/cozy/couchdb.login):$(tail -n1 /etc/cozy/couchdb.login)@127.0.0.1:5984/_replicator
# curl -X PUT $(head -n1 /etc/cozy/couchdb.login):$(tail -n1 /etc/cozy/couchdb.login)@127.0.0.1:5984/_global_changes

コントローラの起動

Cozy を使うにはコントローラ (cozy-controller) を立ち上げる必要があります。バックグラウンドタスクとして実行するものなので、systemd で起動するのが好ましいでしょう。サービスファイルはパッケージに含まれています。cozy-controller.service起動有効化してください。

Cozy スタックのインストール

cozy-monitor を使用して Cozy のベーススタックの各コンポーネントをインストール・起動することができます:

# cozy-monitor install-cozy-stack

設定

Cozy にはユーザーがアクセスするドメインの名前やバックグラウンドなどの基本的な設定が必要です。

ドメインの設定

# coffee /var/lib/cozy/apps/home/commands.coffee setdomain <your domain>
ノート: Cozy では特定のドメイン (あるいはサブドメイン) を使用することが推奨されています (例: cozy.example.tld)。

バックグラウンドの設定

# curl -X POST http://localhost:9103/api/instance -H "Content-Type: application/json" -d '{"background":"background-07"}'
ノート: Cozy インスタンスの "Settings" ページで設定はいつでも変えられます。

リバースプロキシ

セキュリティ上、Cozy は HTTPS を使ってアクセスするべきであり、リバースプロキシを必要とします。HAproxy などのプロキシソフトウェアを使用するか Apache, nginx, Caddy などのウェブサーバーを使用してください。

さらに、自己署名証明書か、認証局から入手した SSL 証明書が必要です。

以下は一般的なウェブサーバーでの設定ファイルの例です。

Apache

/etc/httpd/conf/extra/cozy.conf
<IfModule mod_ssl.c>
 <VirtualHost *:443>
        ServerName      cozy.example.tld
        ServerAdmin     admin@server

        SSLEngine               On
        SSLCertificateFile      /etc/cozy/server.crt
        SSLCertificateKeyFile   /etc/cozy/server.key

        RewriteEngine           On
        RewriteCond             %{REQUEST_URI} ^/.*socket\.io [NC]
        RewriteCond             %{THE_REQUEST} websocket [NC]
        RewriteRule             /(.*)           ws://127.0.0.1:9104/$1 [P,L]

        ProxyPass               / http://127.0.0.1:9104/ retry=0 Keepalive=On timeout=1600
        ProxyPassReverse        / http://127.0.0.1:9104/
        setenv proxy-initial-not-pooled 1

        CustomLog               /var/log/apache2/cozy-access.log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
        ErrorLog                /var/log/apache2/cozy-error.log

 </VirtualHost>

 <VirtualHost *:80>
        ServerName      cozy.example.tld
        ServerAdmin     admin@server

	Redirect permanent / https://cozy.example.tld/

 </VirtualHost>
</IfModule>

nginx

/etc/nginx/cozy.conf
server {
    listen 443;

    server_name cozy.example.tld;

    ssl_certificate /etc/cozy/server.crt;
    ssl_certificate_key /etc/cozy/server.key;
    ssl_dhparam /etc/cozy/dh.pem;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_prefer_server_ciphers on;
    ssl on;

    gzip_vary on;
    client_max_body_size 1024M;

    add_header Strict-Transport-Security max-age=2678400;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect http:// https://;
        proxy_pass http://127.0.0.1:9104;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    access_log /var/log/nginx/cozy.log;
}

# Always redirect http:// to https://
server {
    listen 80;
    server_name cozy.example.tld;

    return 301 https://$host$request_uri;
}
ノート: /etc/nginx/nginx.conf から /etc/nginx/cozy.conf を include してください。

Caddy

/etc/caddy/Caddyfile
cozy.example.tld {
    tls admin@server
    proxy / 127.0.0.1:9104 {
        transparent
        websocket
    }
}

トラブルシューティング

古いバージョンから CouchDB 2.x にアップデート

CouchDB をバージョン 1.x から 2.x に更新すると、CouchDB のシャーディングによって Cozy が動作しなくなることがあります (Cozy はシャーディングをまだサポートしていません)。アップデートによってデフォルトのデータベースディレクトリが変わってしまうため、Cozy のデータベースが CouchDB から認識されなくなります。以下は Cozy をまた動作できるようにする手順です:

  • couchdb サービスを停止してください。/var/lib/couchdb/cozy.couch をどこかにバックアップして /var/lib/couchdb 下のファイルを全て削除してください (CouchDB を Cozy 以外のアプリケーションに使っている場合は簡単に削除しないでください。その場合、ディレクトリに含まれているファイルをチェックしてから、全てのデータベースを正しい手順で移行してください)。
  • /etc/couchdb/local.ini を編集して以下を追加:
/etc/couchdb/local.ini
[cluster]
q=1
n=1
  • couchdb サービスを起動してください。/var/lib/couchdb に再度ファイルが作成されます (例: /var/lib/couchdb/shards/00000000-ffffffff/cozy.<unix time of creation>.couch)。
  • couchdb サービスを停止して、バックアップした cozy.couch/var/lib/couchdb/shards/00000000-ffffffff/cozy.<unix time of creation>.couch にコピーしてください。
  • couchdb サービスを起動したら全てが問題なく動作するはずです。