Pydio Cellsのインストール


暑い

というわけでPydio Cellsを入れます。
Nextcloudの使い勝手にどうもなれず、Pydio使いたいなぁって思ってたんですがPHP版のPydioのエラーがわけがわからないし、他に良いサービスないかなぁと思ってたところでした。
Pydio CellsはGolangで書かれてる今時のイケイケサービスらしいのですが、PHP-FPMみたいにポンとおいて動いてくれないのでちょいと面倒です。
サーバを汚すのも嫌なのでDocker上で立てました。

しかぁし…ドキュメントが貧弱なので適当にちょいちょいといじったら動かないしエラーは不親切だし、わけわかめと言いながら一週間立てるのに苦労しました。

ということでまとめておきます。

前提条件

Docker 17.09+
Docker Compose 1.17.0+
Nginx 1.14.0+

Docker

まずdocker-compose.yml書きます。


version:            '3.5'

networks:
  external_network:
  internal_network:
    internal:       true

services:
  db:
    image:          mariadb:latest
    restart:        always
    environment:
      - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
      - MYSQL_DATABASE=cells
      - MYSQL_USER=pydio
      - MYSQL_PASSWORD=${PYDIO_PASSWORD}
    command:        [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci]
    expose:
      - "3306"
    volumes:
      - ./db:/var/lib/mysql
    networks:
      - internal_network

  cells:
    image:          pydio/cells:latest
    restart:        always
    ports:
      - "1334:8080"
    environment:
      - CELLS_BIND=${HOST_NAME}:8080
      - CELLS_EXTERNAL=${HOST_NAME}
    volumes:
      - ./static:/root/.config/pydio/cells/static/pydio
      - ./data:/root/.config/pydio/cells/data
    networks:
      - external_network
      - internal_network
    depends_on:
      - db
      - php

  php:
    image:          pydio/cells-php-fpm:latest
    restart:        always
    volumes:
      - ./static:/root/.config/pydio/cells/static/pydio
    expose:
      - "9000"
    networks:
      - internal_network
      - external_network #びっくりするほどここ重要

volumesの設定い加減ですが、いい感じに書き直してください。
ミソとなるのは

  • CELLS_BINDのホストとCELLS_EXTERNALのホストが同じ、ポートは別
  • php-fpmは外部ネットワークにつなげるようにしておく

です。

1番目は公式ドキュメントにあるのですが、二番目はまれにcurlがエラーで終わってしまう程度でgateway timeoutで死ぬだけでして、何がなんだかわかりませんでした。
次に.envを


DB_ROOT_PASSWORD=hogehogepasswd
PYDIO_PASSWORD=foobarpasswd
HOST_NAME=example.com

なんて感じで書いときます。まあ直接docker-compose.ymlに書いてもいいですが、git管理のしやすいから、こうするらしいです。

あとサブフォルダ形式(example.com/cloud/)は今の所できないみたいです。cloud.example.comみたいにサブドメインにしましょう。あとTLSも必須のような気がします。

これでdocker-compose upすれば、Port 1334をリッスンしてくれます。(なんでや!阪神関係ないやろ!)

Nginx

次にnginxの設定です。


server {
#...
#(listenやserver_name、sslの設定を書く)
#...
        location / {
                proxy_pass https://127.0.0.1:1334;
                proxy_set_header Host $host;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        }
        client_max_body_size    4G;#お好みで
}

ここでキモなのは、
proxy_passにおいて、docker-compose.ymlのportsに指定したIP(または127.0.0.1)を書くことです。
localhostなどと書いてるとIPv6でアクセスしてしまい、インストールは成功するのですが、その後Bad Gatewayで死にます。
あとWebscocket用に


proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

を忘れないことです。

これでnginxを再起動すると、インストール画面が出ます。
データベースの設定ではlocalhostをdbに書き換え、パスワードなどを入力します。

phpの設定ではphp:9000と書いときます。

うまく行けばインストール終了後ログイン画面が出るはずです。

あとWebdavにはhttps://example.com/dav/でアクセスできるはずなのですが、できなかったり、同じフォルダが数個表示されたり不安定です。
あとでコミュニティで聞いてみます。

ではでは。

投稿者:

PG_MANA

自由気ままな自称プログラマー。C,C++,Rust,C♯,HSP,JavaScript,PHP,HTML,CSS,OS自作,openSUSE,ラノベ,アニメ,鉄道 なんか色々してる人 #seccamp 2017

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です