I am trying to make OCIS work with Collabora, in my case I am trying on ubuntu 24.04 the standalone OCIS(using S3 as storage) + Nginx + Collabora in Docker + AWS ELB for SSL termination
I can make work OCIS + Nginx without any problem (both using docker-compose or standalone), just I am not able to find (or maybe I am blind :D) some proper documentation of how to make work WOPI + Collabora… I checked in documentation and sometimes there are missing links or some kind of contradictory information… (I cannot yet send links in this forum I guess, so it the forum does not allow me yet to post my configs and or the links to specific documentation)…
So if I understood well, for the WOPIServer to work I need to have configured the app-registry in OCIS, but I saw that in the docker version we need to start two OCIS instances, so the normal app server but also one for starting the app-registry ?? But in stand-alone OCIS version is not needed?
Also in some documentation, I saw that there is some kind of OCIS service called “Collaboration” which needs to be configured, and it will work once we have the Collabora running (didn’t work for me), but also not clear in that documentation if we need still the the wopiserver from cs3org …
It is quite confusing what I read in the documentation…
Basically what I wanted to ask??
Can I make work OCIS stand alone + Collabora (for example in docker )? or do I need to do everything in docker…
Also I saw that in all documentation it is normally used Traefik? but I feel much more comfortable with nginx… would it work using NGINX? (Again I cannot send config I have tried)
It is there some kind of full tutorial with updated documentation, meaning for OCIS 6.1.0?? Can please somebody point me there ?
Thanks very much in advance
Edit1: Some clarification why I cannot post the configs.
There are 2 different implementations available for the WOPI server:
The cs3org one, which needs the app-registry and the cs3org WOPI server
The ocis one, which is the collaboration service.
You can think the collaboration service to be a cs3org WOPI server + app-registry.
The implementations are kind of incompatible between each other, so you should make sure there is only one of them running in your system.
As far as I know, the collaboration service isn’t started up by default when you run the ocis server command. Since you’ll need an external server (collabora in your case), it might be better to run the collaboration service in a different container.
At least in theory, this is a matter of preference.
Can I make work OCIS stand alone + Collabora (for example in docker )? or do I need to do everything in docker…
I’d recommend you to set up everything in docker. It should be easier to have all the setup in the same file, and it also provide some network isolation as well as easier tear down of resources. The network isolation might be important because all the services will be within the docker’s network and only the exposed port will be accessible from the outside.
Also I saw that in all documentation it is normally used Traefik? but I feel much more comfortable with nginx… would it work using NGINX? (Again I cannot send config I have tried)
I don’t think we have docs for NGINX so you’ll be on your own. As long as you can “translate” the Traefik configuration to NGINX, I think it should be fine.
It is there some kind of full tutorial with updated documentation, meaning for OCIS 6.1.0?? Can please somebody point me there ?
Hi @carlinhos ,
any progress on this?
Trying the same like you, but on podman.
Took me some days with try-error to get ocis theming in container to work, now I try to get Collabora up in a secure environment…
Since I use haproxy as a L3 proxy, I dont need traefik or caddy or some other Proxy+ACME helper.
I can put nginx between, so our setups are equal.
Maybe some users should team up for some better documentation.
I think a helpful documentation would be an example with
ocis yaml
wopi yaml
collabora yaml
For sake of simplicity, certs should bei /somepath/ocis.cert wopi.cert collabora.cert
All 3 on same host, inter container communication over localhost and publish only ports needed for collabora over ocis and for ocis.
IT means that I will need to use for example the Collaboration service running in a different instance (container) than the OCIS as application server? Like in total will be the following containers???
OCIS (as application server)
Collabora
OCIS (for the Collaboration application)
Nginx (in my case) some others I guess will be using Traefik
Yes then I will try also everything in Docker, as you said I think it will be more clear and secure to do.
Still I did not have time to play with this I am also quite busy with normal work, I guess later during evening night I will try with the “Collaboration” service …
But yes, I agree with you 100%, maybe after we can put together some kind of manual for this so people don’t struggle as we are doing now
Also, I am doing SSL termination with the AWS ELB, so I Am not taking into consideration any of the steps related with the certificates
Today I had a look again to the documentation, and from what I read in the Collaboration service manual it is not so clear once more if needed or not WOPI server …
If I understood well, it says that it needs the APP PROVIDER service … So now I am not sure if one should also add another docker for the APP Provider, or how it would be?
Also I found a bit confusing when we start more than one OCIS instance, because unless I am not including the same ocis.yaml, the OCIS for APP Provider won’t start (since it would need to be reinitialized) … So I guess the ocis.yam should be common for all the other OCIS instances + the special service in the other OCIS instances to be started… IF I understood it properly…
@ Collaboration
go to Environment Variables, cause WOPI Configuration is outdated. …I think
from the examples, ocis and wopi can share the config volume, but here I have a config volume for each.
I did everything with https with certs for each domain over environment variables…
atm I have published 9200 9980 and 9300, not sure if they are all needed. Some more try and error. Since it is all in a pod, they can communicate over localhost to each other.
And even if the service ocis, collabora and nginx are running properly and I can log into the web app, somehow the ocis-collaboration doesn’t want to start,… It 's complaining with the following:
{"level":"info","service":"collaboration","time":"2024-07-29T23:45:44Z","line":"github.com/owncloud/ocis/v2/ocis-pkg/registry/register.go:17","message":"registering external service com.owncloud.api.collaboration.Collabora-42d1fbb2-93e6-44e2-a4cf-a0d05a8f6bf0@127.0.0.1:9301"}
{"level":"fatal","service":"collaboration","error":"Failed to connect to NATS Server: nats: no servers available for connection","time":"2024-07-29T23:45:44Z","line":"github.com/owncloud/ocis/v2/ocis-pkg/registry/register.go:21","message":"Registration error for external service com.owncloud.api.collaboration.Collabora"}
maybe some missing variables to setup there… but not sure which…
podman version 5.1.2, rootless container, rootless & passwordless user with fedora 40 certs auto-created/renewed with docker.io/goacme/lego:latest (4.17.4) over DNS Challenge
here in…
collaboraETC/proof_key
collaboraETC/proof_key.pub
test each container, use https and the domain and port should work for each container, try-error till collabora works, then wopi. no curl -k needed, if an error, chache config. -v for cert debug. curl -4 and curl -6 should give the return
curl https://collabora.example.net:9980/hosting/discovery
→ return lots of xml with proof key at the end
running coolconfig generate-proof-key in the collabora container might be a better option, in case the command does more things (unlikely, but you never know).
You might want to run it as part of the container startup:
Ports 9200 (for ocis) and 9980 (for collabora) are needed. Port 9300 (for wopi) shouldn’t need to be exposed, although it must be accessible from collabora.
You might want to expose port 9300 to easily test the collaboration service is running, but ideally all access to the WOPI server should be done through the internal docker network.
Only one exec possible in podman, as far as i know. Else I have to create an startup script. Didnt care…
Yes, the problem is, if I leave the container/pod (I do with connection to https://wopi.example.net:…) I cant connect from ocis and collabora to wopi. So I think removing all the wopi.example.net secure stuff and stay with wopi inside the container will be the best. Dont need any https or wopi.example.net domain stuff when staying inside the pod.
ATM the firewall does need port 9200 & 9980 /tcp open. Or haproxy forward to the container… But on the host atm I need to expose 9300 too, but its only on localhost. No connection from outside possible.
The other thing, I want to try is starting Collaboration on the ocis container, then there will be only collabora & ocis (with added collaboration server)