NC + Collabora issue (no error, but nothing works)

I there,

After many tests, I am asking to you because I can’t get Collabora working with Nextcloud.

Here is my configuration :

Started container with docker-compose :

  nextcloud_office:
    restart: always
    image: collabora/code
    container_name: nextcloud_office
    ports:
      - 9980:9980
    cap_add:
      - MKNOD
    environment:
      - domain=cloud.gardelle.info

(Also tried with the command line provided with same result)

I added the following configuration in my nginx conf :

server {
        listen 443 ssl;
        server_name cloud.gardelle.info;

	#[...] cloud.gardelle.info conf
		
    ######################
    # Collabora specific #
    ######################

    # static files
    location ^~ /loleaflet {
        proxy_pass https://127.0.0.1:9980;
        proxy_set_header Host $http_host;
    }

    # WOPI discovery URL
    location ^~ /hosting/discovery {
        proxy_pass https://127.0.0.1:9980;
        proxy_set_header Host $http_host;
    }

    # websockets, download, presentation and image upload
    location ^~ /lool {
        proxy_pass https://127.0.0.1:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
    }
}

After adding the collabora connector and the url https://cloud.gardelle.info in the admin pannel (with or without ":443), I got no error while going to he “office” app, but a strange behavior.
When I click on any new document it adds a new blank square instead of a nice looking icon (one blank square per click…).And when I click on that square, I got an error :

Failed to open undefined, file not supported.

And these ones on nexcloud’s log :

Error	PHP	Undefined index: dir at /nextcloud/apps/richdocuments/controller/documentcontroller.php#289	2016-08-25T09:07:23+00:00	
Error	PHP	Undefined index: filename at /nextcloud/apps/richdocuments/controller/documentcontroller.php#288	2016-08-25T09:07:23+00:00	
Error	PHP	Undefined index: filename at /nextcloud/apps/richdocuments/controller/documentcontroller.php#288	2016-08-25T09:07:23+00:00	

I tryed a lot of things, with no result.

My setup is quite simple :

Debian 8 server with :
ngnix 1.11.3 (not dockerized)
docker 1.12.1
3 containers : 
  Nextcloud
  Mariadb
  Collabora CODE

I tried a lot of things. for instance:

  • Nextcloud not in a container
  • Specific sub-domain for colladora with full path redirect to container
  • Changing the syntaxt in nginx’s conf (played with “~” “^”, “https” / “http”…)
  • Different ports for collabora’s container
  • Collabora with Owncloud

All with the same issue… I still suspect that it’s between nginx and collabora’s container, but can’t find any solution. Any idea ?

Seems my guess was right. I was able to make a new step :

Now I can see my office documents on Collabora’s app. More : Collabora’s GUI load successfully, but… Can’t connect :frowning:

Unexpected connection error

BTW, to get this new step done, I had to :

After many other tests, I believe that my problem is related to this error from the container :

kit-00034-00 00:00:04.131440 [ loolkit ] link("/opt/collaboraoffice5.1/CREDITS.fodt","/opt/lool/child-roots/34/lo/CREDITS.fodt") failed. Exiting. (errno: Operation not permitted)

I can’t figure how to solve it. I tried on 3 different servers (2 running Debian 8, the other on Ubuntu 14.04).
And I have this error everywhere !

Any guess ?

Same issue here, Debian Jessie with kernel 4.6 from backports.
I can’t understand where to look…

I was able to fix this issue by :

  • Updating Linux kernel to 4.6 (for Debian) :
    tee -a /etc/apt/sources.list <<< "deb http://httpredir.debian.org/debian jessie-backports main contrib non-free"
    apt update
    apt install -t jessie-backports linux-image-amd64 linux-base

  • Set Docker to use overlay’s storage driver instead of aufs (wich is not supported by kernel 4.6).
    /!\ doing this REMOVES all your images and containers /!
    (Actualy, not exactly : they are stuck with aufs and won’t automatically be migrated to overlay. To be tested : moving the /var/lib/docker/aufs to /var/lib/docker/overlay.)
    service docker stop
    mv /var/lib/docker/aufs /var/lib/docker/overlay (TBT : not sure if it’s working)
    vi /etc/docker/daemon.json
    {
    “storage-driver”: “overlay”
    }
    service docker start

At this point : no more error on the container’s logs, but it doesn’t works with collabora :

Server error response [url] https://cloud.gardelle.info/hosting/discovery [status code] 502 [reason phrase] Bad Gateway
Merci de contacter l'administrateur de "https://cloud.gardelle.info".

I don’t know where to look now.
It seems like there is an issue between nginx and the container, but I can’t find where.

Here’s my nginx configuration :

# static files
    location ^~ /loleaflet {
        proxy_pass https://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # WOPI discovery URL
    location ^~ /hosting/discovery {
        proxy_pass https://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # websockets, download, presentation and image upload
    location ^~ /lool {
        proxy_pass https://localhost:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
    }

Nobody mentioned it here, but I have btrfs as docker storage backend. I have no errors, but the collabora is not working …

wsd-00022-12 10:06:31.985806 [ client_ws_0008 ] ClientRequestHandler::handleRequest: BadRequestException: Invalid URI or access denied.

I don’t think btrfs has anything to do with your error. If the fs is wrong, docker would tell it excplicitly ^^

On my side, after disabling my firewall, I managed to connect to the container. So I have to find wich rule is missing !

Firewall off, I got a new error :

wsd-00024-04 05:26:59.514229 [ client_ws_0002 ] Poco::Net::DNS::resolveOne("cloud.gardelle.info") failed: Host not found: cloud.gardelle.info
wsd-00024-04 05:26:59.514356 [ client_ws_0002 ] Poco::Net::IPAddress("cloud.gardelle.info") failed: Invalid address: cloud.gardelle.info
wsd-00024-04 05:26:59.515349 [ client_ws_0002 ] WOPI host is not on the same host as the WOPI client: "". Connection is not allowed.
wsd-00024-04 05:26:59.515402 [ client_ws_0002 ] No acceptable WOPI hosts found matching the target host [cloud.gardelle.info] in config.

I pulled the latest image this morning.

It seems like the container can’t access the Internet. DNS set up in the container are good, but impossiblel to ping them :

root@8534b47244b8:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
^C--- 8.8.8.8 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss 

I have a fresh docker install with no firewall on host.

The container is able to ping docker’s gateway and the public IP of the host server, but nothing else.

Ok, got it working 100%.
It appears that docker set some rules to get the network working and while removing my firewall I also removed dockers rules.

A restart of docker’s service created the needed rules and everything works !

Woot \o/

It has! I have no /var/lib/docker/aufs nor /var/lib/docker/overlayfs but /var/lib/docker/btrfs.
In there, I have btrfs snapshots created for each docker container.
So, If there are issues with aufs and they can be solved by using overlayfs, the same issues can be solved by using btrfs.