Nextcloud and Collabora on docker gives blank page when trying to edit file

#1

Hi everyone,

I’ve been trying for quite some time to make Collabora and Nextcloud work on my local machine, with docker.

When I start collabora and go to http://127.0.0.1:9980/, I get the ‘OK’ message.

However, when I install the Collabora app on nextcloud and try to edit a file, nothing comes up. Just a blank page under the nextcloud header …

I have disabled ssl as for the moment I’m only testing on my computer.

Here is my docker-compose file:

version: '3.1'

services:
  db:
    image: mariadb
    restart: unless-stopped
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=_redacted_
    env_file:
      - db.env

  nextcloud:  
    image: nextcloud:apache
    restart: unless-stopped
    volumes:
      - nextcloud:/var/www/html
    environment:
      - VIRTUAL_HOST=
      - LETSENCRYPT_HOST=
      - LETSENCRYPT_EMAIL=
      - MYSQL_HOST=db
    env_file:
      - db.env
    depends_on:
      - db

  nginx:
    image: nginx:latest
    volumes: 
      - ./nginx.conf:/etc/nginx/nginx.conf
    ports:
      - 443:443
      - 80:80

  collabora:
    image: collabora/code
    container_name: collabora
    ports:
      - 9980:9980
    cap_add:
      - MKNOD

volumes:
  db:
  nextcloud:
  certs:
  vhost.d:
  html:

And here is my nginx.conf:

events{
  
}
http{
  server {
    listen 80 default_server;
    server_name  cloud.example.com;
    # You can set a dedicated domain like:
    # server_name  office.example.com;

    #ssl_certificate /path/to/your/certficate;
    #ssl_certificate_key /path/to/your/key;

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

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

    # Main websocket
    location ~ /lool/(.*)/ws$ {
      proxy_pass http://localhost:9980;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "Upgrade";
      proxy_set_header Host $http_host;
      proxy_read_timeout 36000s;
    }

    # Admin Console websocket
    location ^~ /lool/adminws {
      proxy_pass http://localhost:9980;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "Upgrade";
      proxy_set_header Host $http_host;
      proxy_read_timeout 36000s;
    }

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

I get the following errors in the nextcloud log:

[Sun Nov 18 17:22:10.553920 2018] [php7:error] [pid 336] [client 172.23.0.1:48504] PHP Fatal error:  Cannot declare class GuzzleHttp\\Handler\\CurlFactory, because the name is already in use in /var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 16
172.23.0.1 - - [18/Nov/2018:17:22:10 +0000] "GET /apps/richdocuments/index?fileId=177&requesttoken=TvaehoAkAaLkoV75Qm6S5%2FvGwvC3mluTl%2B2dnHsWlKY%3D%3ADcLmyudvRdComQevKRbfrqulmL%2BYtSqm9NXa%2BAl3zZU%3D HTTP/1.1" 500 870 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0"
172.23.0.1 - - [18/Nov/2018:17:22:13 +0000] "GET /ocs/v2.php/apps/notifications/api/v2/notifications HTTP/1.1" 200 3095 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0"

Has anyone ever had the same problem ?
Please tell me if you need anything else

Thanks !

0 Likes

#2

Same here. I am using docker as well. Nginx as reverse proxy. As I have currently issues with letsencrypt, I thought the blank page is related to SSL. But I have shared a txt file by link and its content is empty as well. I guess the display of txt files is not done by collabora. But yeah, this is just a guess.

0 Likes

#3

same for me.

I get the following in the log:
nextcloud_1_17d689a54ece | 172.19.0.4 - - [23/Jan/2019:21:28:27 +0000] “GET /apps/richdocuments/index?fileId=19&requesttoken=R[…]%3D HTTP/1.1” 500 900 “-” “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.2 Safari/605.1.15”

0 Likes

#4

Do you see anything interesting with?

docker logs --tail 20 -f <container>

By the way @Quentin_Lebastard I’m not 100% sure that a proxy setup to localhost can work. In Nextcloud you need to configure a subdomain for collabora (e.g. office.your-nextcloud-domain.com)

0 Likes

#5

Is there a solution to this. because i have the same setup on a server

version: ‘3’

services:

proxy:
image: jwilder/nginx-proxy:alpine
labels:
- “com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true”
container_name: nextcloud-proxy
networks:
- nextcloud_network
ports:
- 80:80
- 443:443
volumes:
- ./proxy/conf.d:/etc/nginx/conf.d:rw
- ./proxy/vhost.d:/etc/nginx/vhost.d:rw
- ./proxy/html:/usr/share/nginx/html:rw
- ./proxy/certs:/etc/nginx/certs:ro
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: unless-stopped

letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: nextcloud-letsencrypt
depends_on:
- proxy
networks:
- nextcloud_network
volumes:
- ./proxy/certs:/etc/nginx/certs:rw
- ./proxy/vhost.d:/etc/nginx/vhost.d:rw
- ./proxy/html:/usr/share/nginx/html:rw
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped
db:
image: mariadb
container_name: nextcloud-mariadb
networks:
- nextcloud_network
volumes:
- db:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
environment:
# Create a root password for the maraiadb instance.
- MYSQL_ROOT_PASSWORD=CREATE-A-SECURE-ROOT-PASSWORD-HERE
# Create a password for the nextcloud users. If you have to manually connect your database you would use the nextcloud user and this password.
- MYSQL_PASSWORD=CREATE-A-SECURE-NEXTCLOUD-USER-PASSWORD-HERE
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
restart: unless-stopped

app:
image: nextcloud:latest
container_name: nextcloud-app
networks:
- nextcloud_network
depends_on:
- letsencrypt
- proxy
- db
volumes:
- nextcloud:/var/www/html
- ./app/config:/var/www/html/config
- ./app/custom_apps:/var/www/html/custom_apps
- ./app/data:/var/www/html/data
- ./app/themes:/var/www/html/themes
- /etc/localtime:/etc/localtime:ro
environment:
# The VIRTUAL_HOST and LETSENCRYPT_HOST should use the same publically reachable domain for your nextlcloud instance.
- VIRTUAL_HOST=cloud.DOMAIN.TLD
- LETSENCRYPT_HOST=cloud.DOMAIN.TLD
# This needs to be a real email as it will be used by let’s encrypt for your cert and is used to warn you about renewals.
- LETSENCRYPT_EMAIL=YOUR-EMAIL@DOMAIN.TDL
restart: unless-stopped
collab:
image: collabora/code
container_name: nextcloud-collab
networks:
- nextcloud_network
depends_on:
- proxy
- letsencrypt
cap_add:
- MKNOD
ports:
- 9980:9980
environment:
# This nees to be the same as what you set your app domain too (ex: cloud.domain.tld).
- domain=cloud\.DOMAIN\.TDL
- username=admin
# Create a passoword for the collabora office admin page.
- password=CREATE-A-SECURE-PASSWORD-HERE
- VIRTUAL_PROTO=https
- VIRTUAL_PORT=443
# The VIRTUAL_HOST and LETSENCRYPT_HOST should use the same publically reachable domain for your collabora instance (ex: office.domain.tld).
- VIRTUAL_HOST=office.DOMAIN.TLD
- LETSENCRYPT_HOST=office.DOMAIN.TLD
# This needs to be a real email as it will be used by let’s encrypt for your cert and is used to warn you about renewals.
- LETSENCRYPT_EMAIL=YOUR-EMAIL@DOMAIN.TDL
restart: unless-stopped
volumes:
nextcloud:
db:

networks:
nextcloud_network:

my setup is based on this and i just filled the variables i needed to change nginx is okay and proxy working well. both sites are working okay but the documents cannot open . just blank space and reloads.

same error logged

0 Likes

#6

I am not very technical to analyze log files…but in my case I had to disable the default text editor if you have it enabled.

0 Likes