Cells: working docker-compose.yml with Traefik reverse proxy

If you are familiar with Traefik, the below configuration will get you up and running with persistent volumes and letsencrypt. Be sure you:

  1. setup a valid traefik.toml
  2. create the http_network required
  3. set 2 A or CNAME records in DNS for traefik.{PYDIO_FQDN} and {PYDIO_FQDN}.

When you go through the installation process, for the database replace “localhost” with mysql. The address for php is “php-fpm:9000”.

Also, I am using a .env file in the same directory as the docker-compose.yml, which holds key variables below like the ${PYDIO_FQDN} as well as the mysql credentials.

Once you finish the installation, you must go into Settings -> Configs Backends and replace “http://cells:8888” with an external URL (i.e. https://PYDIO_FQDN). Otherwise you’ll get “Origin is not allowed” / Access-Control-Allow-Origin issues.

version: '3'

networks:
  http_network:
    external: true

services:

  traefik:
    image: traefik:1.6-alpine
    container_name: traefik
    restart: always
    ports:
      - "80:80"
      - "443:443"
    labels:
      - traefik.enable=true
      - traefik.backend=traefik
      - traefik.frontend.rule=Host:traefik.${PYDIO_FQDN}
      - traefik.port=8080
      - traefik.docker.network=http_network
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ${VOLUMES_ROOT_PATH}/traefik/traefik.toml:/traefik.toml:ro
      - ${VOLUMES_ROOT_PATH}/traefik/acme:/etc/traefik/acme
    networks:
      - http_network

  cells:
    image: pydio/cells:latest
    container_name: cells
    restart: always
    expose:
      - "8888"
    environment:
      - CELLS_BIND=0.0.0.0:8888
      - CELLS_EXTERNAL=cells:8888
      - CELLS_NO_SSL=1
    labels:
      - traefik.enable=true
      - traefik.backend=cells
      - traefik.frontend.rule=Host:${PYDIO_FQDN}
      - traefik.port=8888
      - traefik.docker.network=http_network
    volumes:
      - ${VOLUMES_ROOT_PATH}/cells:/root/.config/pydio/cells/
    links:
      - mysql
      - php-fpm
    networks:
      - http_network

  mysql:
    image: mysql:5.7
    container_name: mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci]
    expose:
      - "3306"
    volumes:
      - ${VOLUMES_ROOT_PATH}/cells/db:/var/lib/mysql
    networks:
      - http_network

  php-fpm:
    image: pydio/cells-php-fpm:latest
    container_name: php-fpm
    restart: always
    volumes:
      - ${VOLUMES_ROOT_PATH}/cells:/root/.config/pydio/cells/
    expose:
      - "9000"
    networks:
      - http_network
1 Like

I can’t enter the installation when opening the PYDIO_FQDN adress in the browser.

Logs in the cells container reads:
cells | 2018-07-05T15:33:59.820Z INFO http: TLS handshake error from xxx.xx.x.x:51612: tls: first record does not look like a TLS handshake

Has Port 8888 to be opened on the docker host?

No only 80 and 443 for this to work. 8888 is the internal port which the cells container exposes for the Traefik contain to direct traffic to.

Maybe the problem is in your Traefik config traefik.toml … try looking at your log for the traefik container?

Let me know if I can help you further. I love pydio and traefik.

I have multiple services running successfully on the host. The traefik.toml is pretty basic. http redirection to https, acme and api. I’m fairly new to all this, so any help is appreciated. :slight_smile:

Traefik logs say this:
traefik | time=“2018-07-05T15:56:10Z” level=error msg=“Undefined backend ‘backend-cells’ for frontend frontend-Host-xxx-xxx-xxx-0”

Did you copy/paste the docket compose file? If not you may have a typo.

Copy pasted and modified slightly: Removed the traefik part since it’s already running on the host, changed the network to the already existing “web” network. As you said, this might be a traefik issue so i rather research in this direction. Thanks for your compose file anyway!

Weird enough the cells backend is showing up in the traefik dashboard.

Does the port you are exposing for cells container match the traefik.port under labels? In my example I had modified it to 8888 for both. Maybe one got changed back to 8080?

Yes. You can checkout my setup here: https://gist.github.com/bschulz87/fc1f6968ea97b1c034bfa4811b35e17d

The only thing that immediately comes to mind is both web and default network being used. Your traefik is on web network for sure? “docker network inspect web” should show both traefik and cells?

Sorry if I’m pointing to things obvious to you.

Traefik is on the web network, yes. I updated the gist to show the traefik settings.

No matter what i do, i only get TLS handshake errors in the cells container. I also disabled the redirection to https and tried to access the installation on http://cells.pydio.dev - still ‘http: TLS handshake error from xxx.xx.x.x:36528: tls: first record does not look like a TLS handshake’. Traefik does not show up anything so it’s unlikely a misconfiguration there (7 other services working well)

It is working now. I was using an image which did not have the CELLS_NO_SSL feature yet.

Thanks for the config.

I’m trying to get my pydio instance on a subdirectory (i.e. www.mysite.com/pydio/) using the same config but I’m having issues with the paths being served up being a mixture from the root directory and /pydio/.

I’ve modified the following in the configuration:

Environment variable - CELLS_EXTERNAL=mysite.com/pydio
Traefik Frontend Label - “traefik.frontend.rule=PathPrefix:/pydio;PathPrefixStrip:/pydio”

Other static resources are loading up fine so I’m wondering if there’s another configuration value that needs changing which isn’t exposed as an environment variable?

For reference, I’m getting the following errors from the chrome developer console when loading up the installer.

client.js:772 GET https://mysite.com/install/agreement 404 ()
client.js:425 Uncaught (in promise) Error: Unsuccessful HTTP response
    at Request.<anonymous> (client.js:425)
    at Request.Emitter.emit (index.js:133)
    at XMLHttpRequest.xhr.onreadystatechange (client.js:705)
client.js:772 GET https://mysite.com/install 404 ()
client.js:425 Uncaught (in promise) Error: Unsuccessful HTTP response
    at Request.<anonymous> (client.js:425)
    at Request.Emitter.emit (index.js:133)
    at XMLHttpRequest.xhr.onreadystatechange (client.js:705)
client.js:772 GET https://mysite.com/install/events?timeout=60&category=install 404 ()

Has Pydio changed? I didnt get any form to insert The address for php is “php-fpm:9000”?

The installation “worked” but I am stuck in the Loading… page.

The docker logs contains this

cells_1 | 2019-09-02T14:42:48.876Z INFO pydio.gateway.proxy Restarting proxy {"caddyfile": "\n\t\thttp://0.0.0.0:8080 {\n\t\tproxy /a 192.168.16.5:45731 {\n\t\t\twithout /a\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\t\tproxy /auth/dex 192.168.16.5:38459 {\n\t\t\tinsecure_skip_verify\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\t\tproxy /io :37963 {\n\t\t\theader_upstream Host cells:8080\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\t\tproxy /data :37963 {\n\t\t\theader_upstream Host cells:8080\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\t\tproxy /ws 192.168.16.5:44699 {\n\t\t\twebsocket\n\t\t\twithout /ws\n\t\t}\n\t\tproxy /plug/ 192.168.16.5:45775 {\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t\theader_downstream Cache-Control \"public, max-age=31536000\"\n\t\t}\n\t\tproxy /dav/ 192.168.16.5:46561 {\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\n\t\tproxy /public/ 192.168.16.5:45775 {\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\n\t\tproxy /user/reset-password/ 192.168.16.5:45775 {\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\n\t\tproxy /robots.txt 192.168.16.5:45775 {\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\n\t\tproxy /login 192.168.16.5:45775/gui {\n\t\t\twithout /login\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\n\t\tredir 302 {\n\t\t if {path} is /\n\t\t / /login\n\t\t}\n\n\t\t\n\t\t\n proxy /wopi/ 192.168.16.5:34187 {\n transparent\n }\n\n proxy /loleaflet/ https://localhost:9980/loleaflet {\n transparent\n insecure_skip_verify\n without /loleaflet/\n }\n\n proxy /hosting/discovery https://localhost:9980/hosting/discovery {\n transparent\n insecure_skip_verify\n without /hosting/discovery\n }\n\n proxy /lool/ https://localhost:9980/lool/ {\n transparent\n insecure_skip_verify\n websocket\n without /lool/\n }\n \n\t\t\n\n\t\trewrite {\n\t\t\tif {path} not_starts_with \"/a/\"\n\t\t\tif {path} not_starts_with \"/auth/\"\n\t\t\tif {path} not_starts_with \"/io\"\n\t\t\tif {path} not_starts_with \"/data\"\n\t\t\tif {path} not_starts_with \"/ws/\"\n\t\t\tif {path} not_starts_with \"/plug/\"\n\t\t\tif {path} not_starts_with \"/dav/\"\n\t\t\t\n\t\t\tif {path} not_starts_with \"/wopi/\"\n\t\t\t\n\t\t\tif {path} not_starts_with \"/loleaflet/\"\n\t\t\t\n\t\t\tif {path} not_starts_with \"/hosting/discovery\"\n\t\t\t\n\t\t\tif {path} not_starts_with \"/lool/\"\n\t\t\t\n\t\t\tif {path} not_starts_with \"/public/\"\n\t\t\tif {path} not_starts_with \"/user/reset-password\"\n\t\t\tif {path} not_starts_with \"/robots.txt\"\n\t\t\tto {path} {path}/ /login\n\t\t}\n\n\t\t\n\t\terrors \"/root/.config/pydio/cells/logs/caddy_errors.log\"\n\t\t}\n\n\t\t\n\t"}

Hello @thumblessfun,

Yes we got rid of PHP.

Could tell me the following information;

  • Cells Internal_URL
  • Cells external_URL
  • are you using a reverse proxy?

Hi!

I am using traefik.

my compose looks like this now.

version: '3'
services:

    # Cells image with one named volume for the data
    cells:
        image: pydio/cells:latest
        restart: unless-stopped
        volumes: ["data:/root/.config/pydio/cells/data"]      
        environment:
            - CELLS_BIND=0.0.0.0:8080
            - CELLS_EXTERNAL=localhost:8080
            - CELLS_NO_SSL=1
        labels:
            - traefik.enable=true
            - traefik.backend=pydio-cells
            - traefik.frontend.rule=Host:pydio.localhost
            - traefik.port=8080
            - traefik.docker.network=srv
        networks:
            - srv


    # MySQL image with a default database cells and a dedicated user pydio
    mysql:
        image: mysql:5.7
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: P@ssw0rd
            MYSQL_DATABASE: cells
            MYSQL_USER: pydio
            MYSQL_PASSWORD: P@ssw0rd
        command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci]
        ports: ["3306:3306"]
        networks:
          - srv


volumes:
    data: {}


networks:
  srv:
    external: true

For now the logs looks like this.

cells_1  | 2019-09-02T15:54:55.684Z     INFO    pydio.web.auth  config storage: 
cells_1  | 2019-09-02T15:54:55.684Z     INFO    pydio.web.auth  config static client: cells-front
cells_1  | 2019-09-02T15:54:55.684Z     INFO    pydio.web.auth  config connector: pydio
cells_1  | 2019-09-02T15:54:55.684Z     INFO    pydio.web.auth  config response types accepted: [code token id_token]
cells_1  | 2019-09-02T15:54:55.684Z     INFO    pydio.web.auth  config id tokens valid for: 10m0s
cells_1  | 2019-09-02T15:54:55.686Z     INFO    pydio.web.auth  started
cells_1  | 2019-09-02T15:54:55.686Z     INFO    pydio.grpc.auth started
cells_1  | 2019-09-02T15:54:56.224Z     INFO    pydio.grpc.data.index.cellsdata started
cells_1  | 2019-09-02T15:54:56.252Z     INFO    pydio.grpc.data.index.personal  started
cells_1  | 2019-09-02T15:54:56.259Z     INFO    pydio.grpc.data.index.pydiods1  started
cells_1  | 2019-09-02T15:54:56.265Z     INFO    pydio.grpc.tasks        Run Job resync-ds-personal on timer event <nil>
cells_1  | 2019-09-02T15:54:56.290Z     INFO    pydio.gateway.dav       started
cells_1  | 2019-09-02T15:54:56.367Z     INFO    pydio.grpc.data.sync.personal   Listing all S3 objects for path {"bucket": "personal", "path": ""}
cells_1  | 2019-09-02T15:54:56.369Z     INFO    pydio.grpc.data.sync.personal   map[MissingLeft:0 MissingRight:0]
cells_1  | 2019-09-02T15:54:56.369Z     INFO    pydio.grpc.data.index.personal  Opening Indexation Session 1973b1dc-2a4d-4525-b6ea-97d41c584a11 {"OperationUuid": "resync-ds-personal-44425fbf"}
cells_1  | 2019-09-02T15:54:56.370Z     INFO    pydio.grpc.data.index.personal  Closing Indexation Session 1973b1dc-2a4d-4525-b6ea-97d41c584a11 {"OperationUuid": "resync-ds-personal-44425fbf"}
cells_1  | 2019-09-02T15:54:56.370Z     INFO    pydio.grpc.data.index.personal  Sent 0 events event on topic    {"OperationUuid": "resync-ds-personal-44425fbf"}
cells_1  | 2019-09-02T15:54:56.684Z     INFO    pydio.rest.meta started
cells_1  | 2019-09-02T15:54:56.686Z     INFO    pydio.rest.log  started
cells_1  | 2019-09-02T15:54:56.798Z     INFO    pydio.rest.activity     started
cells_1  | 2019-09-02T15:54:56.819Z     INFO    pydio.rest.auth started
cells_1  | 2019-09-02T15:54:56.898Z     INFO    pydio.rest.share        started
cells_1  | 2019-09-02T15:54:56.913Z     INFO    pydio.rest.frontend     started
cells_1  | 2019-09-02T15:54:56.929Z     INFO    pydio.rest.acl  started
cells_1  | 2019-09-02T15:54:56.944Z     INFO    pydio.rest.templates    started
cells_1  | 2019-09-02T15:54:56.946Z     INFO    pydio.rest.policy       started
cells_1  | 2019-09-02T15:54:56.976Z     INFO    pydio.rest.graph        started
cells_1  | 2019-09-02T15:54:56.985Z     INFO    pydio.rest.update       started
cells_1  | 2019-09-02T15:54:56.987Z     INFO    pydio.rest.user started
cells_1  | 2019-09-02T15:54:56.987Z     INFO    pydio.rest.role started
cells_1  | 2019-09-02T15:54:56.988Z     INFO    pydio.rest.jobs started
cells_1  | 2019-09-02T15:54:56.999Z     INFO    pydio.rest.mailer       started
cells_1  | 2019-09-02T15:54:56.999Z     INFO    pydio.rest.tree started
cells_1  | 2019-09-02T15:54:57.012Z     INFO    pydio.rest.workspace    started
cells_1  | 2019-09-02T15:54:57.012Z     INFO    pydio.rest.config       started
cells_1  | 2019-09-02T15:54:57.013Z     INFO    pydio.rest.user-meta    started
cells_1  | 2019-09-02T15:54:57.623Z     INFO    pydio.test.objects      started
cells_1  | 2019-09-02T15:54:57.680Z     INFO    pydio.gateway.data      started
cells_1  | 2019-09-02T15:54:57.905Z     INFO    pydio.gateway.wopi      started
cells_1  | 2019-09-02T15:54:59.126Z     INFO    pydio.grpc.tasks        Run Job resync-ds-cellsdata on timer event <nil>
cells_1  | 2019-09-02T15:54:59.169Z     INFO    pydio.grpc.tasks        Run Job resync-ds-pydiods1 on timer event <nil>
cells_1  | 2019-09-02T15:54:59.228Z     INFO    pydio.grpc.data.sync.cellsdata  Listing all S3 objects for path {"bucket": "cellsdata", "path": ""}
cells_1  | 2019-09-02T15:54:59.229Z     INFO    pydio.grpc.data.sync.cellsdata  map[MissingLeft:0 MissingRight:0]
cells_1  | 2019-09-02T15:54:59.230Z     INFO    pydio.grpc.data.index.cellsdata Opening Indexation Session 2a3d6740-a58c-45b9-8033-ad61763c3d13 {"OperationUuid": "resync-ds-cellsdata-787ff8b6"}
cells_1  | 2019-09-02T15:54:59.230Z     INFO    pydio.grpc.data.index.cellsdata Closing Indexation Session 2a3d6740-a58
c-45b9-8033-ad61763c3d13 {"OperationUuid": "resync-ds-cellsdata-787ff8b6"}
cells_1  | 2019-09-02T15:54:59.230Z     INFO    pydio.grpc.data.index.cellsdata Sent 0 events event on topic    {"OperationUuid": "resync-ds-cellsdata-787ff8b6"}
cells_1  | 2019-09-02T15:54:59.328Z     INFO    pydio.grpc.data.sync.pydiods1   Listing all S3 objects for path {"bucket": "pydiods1", "path": ""}
cells_1  | 2019-09-02T15:54:59.329Z     INFO    pydio.grpc.data.sync.pydiods1   map[MissingLeft:0 MissingRight:0]
cells_1  | 2019-09-02T15:54:59.330Z     INFO    pydio.grpc.data.index.pydiods1  Opening Indexation Session 71b0489a-ce0d-4a39-9e07-c0f06d623986 {"OperationUuid": "resync-ds-pydiods1-c16a00ad"}
cells_1  | 2019-09-02T15:54:59.330Z     INFO    pydio.grpc.data.index.pydiods1  Closing Indexation Session 71b0489a-ce0d-4a39-9e07-c0f06d623986 {"OperationUuid": "resync-ds-pydiods1-c16a00ad"}
cells_1  | 2019-09-02T15:54:59.331Z     INFO    pydio.grpc.data.index.pydiods1  Sent 0 events event on topic    {"OperationUuid": "resync-ds-pydiods1-c16a00ad"}
cells_1  | 2019-09-02T15:55:02.817Z     INFO    pydio.grpc.search       started
cells_1  | 2019-09-02T15:55:02.878Z     INFO    pydio.gateway.websocket started
cells_1  | 2019-09-02T15:55:02.978Z     INFO    pydio.rest.search       started
cells_1  | 2019-09-02T15:55:13.882Z     INFO    pydio.gateway.proxy     Restarting proxy        {"caddyfile": "\n\t\thttp://0.0.0.0:8080 {\n\t\tproxy /a  192.168.16.4:41691 {\n\t\t\twithout /a\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\t\tproxy /auth/dex 192.168.16.4:42221 {\n\t\t\tinsecure_skip_verify\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\t\tproxy /io   :44175 {\n\t\t\theader_upstream Host localhost:8080\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\t\tproxy /data :44175 {\n\t\t\theader_upstream Host localhost:8080\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\t\tproxy /ws   192.168.16.4:43321 {\n\t\t\twebsocket\n\t\t\twithout /ws\n\t\t}\n\t\tproxy /plug/ 192.168.16.4:42703 {\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t\theader_downstream Cache-Control \"public, max-age=31536000\"\n\t\t}\n\t\tproxy /dav/ 192.168.16.4:44883 {\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\n\t\tproxy /public/ 192.168.16.4:42703 {\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\n\t\tproxy /user/reset-password/ 192.168.16.4:42703 {\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\n\t\tproxy /robots.txt 192.168.16.4:42703 {\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\n\t\tproxy /login 192.168.16.4:42703/gui {\n\t\t\twithout /login\n\t\t\theader_upstream Host {host}\n\t\t\theader_upstream X-Real-IP {remote}\n\t\t\theader_upstream X-Forwarded-Proto {scheme}\n\t\t}\n\n\t\tredir 302 {\n\t\t  if {path} is /\n\t\t  / /login\n\t\t}\n\n\t\t\n\t\t\n        proxy /wopi/ 192.168.16.4:40751 {\n            transparent\n        }\n\n        proxy /loleaflet/ https://localhost:9980/loleaflet {\n            transparent\n            insecure_skip_verify\n            without /loleaflet/\n        }\n\n        proxy /hosting/discovery https://localhost:9980/hosting/discovery {\n            transparent\n            insecure_skip_verify\n            without /hosting/discovery\n        }\n\n        proxy /lool/ https://localhost:9980/lool/ {\n            transparent\n            insecure_skip_verify\n            websocket\n            without /lool/\n        }\n    \n\t\t\n\n\t\trewrite {\n\t\t\tif {path} not_starts_with \"/a/\"\n\t\t\tif {path} not_starts_with \"/auth/\"\n\t\t\tif {path} not_starts_with \"/io\"\n\t\t\tif {path} not_starts_with \"/data\"\n\t\t\tif {path} not_starts_with \"/ws/\"\n\t\t\tif {path} not_starts_with \"/plug/\"\n\t\t\tif {path} not_starts_with \"/dav/\"\n\t\t\t\n\t\t\tif {path} not_starts_with \"/wopi/\"\n\t\t\t\n\t\t\tif {path} not_starts_with \"/loleaflet/\"\n\t\t\t\n\t\t\tif {path} not_starts_with \"/hosting/discovery\"\n\t\t\t\n\t\t\tif {path} not_starts_with \"/lool/\"\n\t\t\t\n\t\t\tif {path} not_starts_with \"/public/\"\n\t\t\tif {path} not_starts_with \"/user/reset-password\"\n\t\t\tif {path} not_starts_with \"/robots.txt\"\n\t\t\tto {path} {path}/ /login\n\t\t}\n\n\t\t\n\t\terrors \"/root/.config/pydio/cells/logs/caddy_errors.log\"\n\t\t}\n\n\t\t\n\t"}
cells_1  | 2019-09-02T15:55:13.882Z     INFO    pydio.gateway.proxy     Restart done
cells_1  | 2019-09-02T15:55:16.829Z     INFO    pydio.grpc.tasks        Run Job users-activity-digest on timer event Iso8601Schedule:"R/2012-06-04T19:25:16.828696-07:00/PT15M" 
cells_1  | 2019-09-02T15:55:16.829Z     INFO    pydio.grpc.tasks        Run Job flush-mailer-queue on timer event Iso8601Schedule:"R/2012-06-04T19:25:16.828696-07:00/PT5M" 
cells_1  | 2019-09-02T15:55:16.829Z     INFO    pydio.grpc.tasks        Run Job prune-versions-job on timer event Iso8601Schedule:"R/2012-06-04T19:25:16.828696-07:00/PT15M" 
cells_1  | 2019-09-02T15:55:16.829Z     INFO    pydio.grpc.tasks        Run Job actions.auth.prune.tokens on timer event Iso8601Schedule:"R/2012-06-04T19:25:16.828696-07:00/PT5M" 
cells_1  | 2019-09-02T15:58:16.829Z     INFO    pydio.grpc.tasks        Run Job internal-prune-jobs on timer event Iso8601Schedule:"R/2012-06-04T19:25:16.828696-07:03/PT10M"

OOoh so my CELLS_EXTERNAL was earlier put wrong.

Now the installer went easily past. But then when I try to login I get: "could not load session store: securecookie: the value is not valid

CELLS_BIND=0.0.0.0:8080
CELLS_EXTERNAL=pydio.localhost

I am using traefik and I think

            - traefik.frontend.rule=Host:pydio.localhost
            - traefik.port=8080

Tried with another browser I get http://pydio.localhost/auth/dex/token: dial tcp: lookup pydio localhost on 127.0.0.11:53 no such host.

try to open your browser in a private session : after a full re-install, the keys used to encrypt cookies are re-generated, and your browser may hold an old cookie with the correct name but the wrong encryption. It should go away after a couple of minutes (expiration of the cookie)

Hi!

using a private session I get

Post http://pydio.localhost/auth/dex/token: dial tcp:lookup pydio.localhost on 127.0.0.11:53 no such host.