Several issues with Docker container pydio/cells

#1

Hi,
I am trying to setup a local test/development environment on ubuntu. I started out with the docker-compose.yml from the docker-hub page (for pydio/cells:latest image). I set a new uid/gid for the container.

First issue I ran into was that Cells complained not being able to create a directory /.config. So ok, I mounted a second local volume, such that both /.config/ and /root/.config/ would be permanent. Only the first seems to be written to, so far…

Next problem is setting up behind an http reverse proxy(nginx). Installation works, but I have to set the environment variables to CELLS_NO_SSL=1, set nginx to http to the container’s 8080. After installation and reloading, the page will complain about mixed content. Now I edited pydio.json to use https instead, and that gets rid of that error.

I got another error that pydio can’t resolve the hostname “dev-cells” by DNS. Since that is a host defined in my “global” /etc/hosts, that is no wonder. So I put another network IP for dev-cells into extra_hosts. Error gotten rid again.

Next problem: I can’t login, because the backend throws an error, showing this in the logs:
pydio.rest.frontend Ladon blocked POST request at /frontend/session. Ladon Response: DefaultDeny:true

Also, I was not yet able to make the configuration/installation permanent. I am guessing there are additional volumes I’m missing?

I was not able to find/confirm the source code for the Dockerfile used in pydio/cells, though that may be just me missing something obvious.

I would appreciate hints and any useful information regarding my troubles.

Thanks!

#2

Hi,

as long as your container has rights it should be able to write, are you using writeable volumes, the issue is not located inside the container.

would you mind showing me your nginx configuration.

could you tell me where did you set the hostname, internal or external url ?

yes to make it permanent, when using container volumes is the way, because it will allow you to update your cells by just pulling the next image (newer version) and starting it with your volumes.

i you want to take a look at the docker file, it’s in github, pydio/cells then look for a tools folder.

If you wish to show me your docker-compose, nginx config and also how you are setting cells, ssl or not, domain name etc… .

#3

I was trying it without the reverse proxy, with SSL, but I have the same problem with the Ladon deny.

Docker-compose:

 cells:
    image: pydio/cells:latest
    volumes:
      - ./cells_config/:/.config/pydio/cells
      - ./cells_config2/:/root/.config/pydio/cells
    environment:               
      - CELLS_NO_SSL=0         
      - CELLS_BIND=0.0.0.0:1443
      - CELLS_EXTERNAL=dev-cells:1443 
    user: "$PUID:$PGID"        
    ports:
      - 0.0.0.0:1443:1443
    extra_hosts:
      - "dev-cells:192.168.10.38"     
    networks:
      - pydio 

Before that (for nginx reverse proxy) it was more like:
cells:

image: pydio/cells:latest
volumes:
  - ./cells_config/:/.config/pydio/cells
  - ./cells_config2/:/root/.config/pydio/cells
environment:               
  - CELLS_NO_SSL=1         
  - CELLS_BIND=0.0.0.0:8080
  - CELLS_EXTERNAL=dev-cells
user: "$PUID:$PGID"        
ports:
  - 0.0.0.0:8080:8080
extra_hosts:
  - "dev-cells:192.168.10.38"     
networks:
  - pydio

I also now tried without SSL, just http, no reverse proxy and radon now works.

The page on dockerhub says to mount a volume on /root/.config/pydio/cells. But the installer only writes the configuratio to the volume mounted on /.config, even though the Dockerfile only exports /root/.config as a volume. Also, despite the volume staying the same and the contents not changing, cells is starting the installer again when it is recreated.

The issue about the http/https is just that with the environment variables alone it is not possible to proxy an http cells container for an https connection, since with CELLS_NO_SSL=0 the container only listens via https, and with CELLS_NO_SSL=1 the container serves pages which cause “http” urls, which get blocked by the Browser. I got around that by modifying the pydio.json.

Maybe Ladon complains because of the hostname in the login request or something?

#4

There seems to be an issue with the current pydio/cells image on dockerhub. I cloned the cells repo and build the docker image myself with cells 1.4.1. Without changing the docker-compose configuration, the container now writes to the /root/.config instead of the /.config volume, and the state persists between restarts.

#5

Hi,
for the config volume i think that you got it wrong,
you should have one volume for the config,

        volumes: ["./myvolume/:/root/.config/pydio/cells/"]

my example is for one volume.

The config is located here /root/.config/pydio/cells and not here

now if you want to have the data inside another volume you can split it, but you would have to that for the logs, services etc…
you would need multiple volumes for instance like this;

- mainconfig:/root/.config/pydio/cells/pydio.json
- data:/root/.config/pydio/cells/data
- logs:/root/.config/pydio/cells/logs
- services:/root/.config/pydio/cells/services
#6

Yes, the documentation says the volume should be mounted on /root/.config. And with the image I built from source this works fine. Before that, I was using the one I pulled from dockerhub as pydio/cells:latest, and that wrote the config to /.config and just recreated it on every start even if there are volumes on both points.