| { config, ... }: { |
| #Collabora Containers |
| virtualisation.oci-containers.containers.collabora = { |
| image = "collabora/code:latest"; |
| ports = [ "9980:9980/tcp" ]; |
| environment = { |
| server_name = "collabora.clicks.codes"; |
| aliasgroup1 = "https://nextcloud.clicks.codes:443"; |
| aliasgroup2 = "https://cloud.clicks.codes:443"; |
| aliasgroup3 = "https://docs.clicks.codes:443"; |
| dictionaries = "en_US"; |
| extra_params = "--o:ssl.enable=false --o:ssl.termination=true"; |
| }; |
| extraOptions = [ |
| "--pull=always" |
| "--privileged" # needed for fast jail creation via bind mounts |
| ]; |
| }; |
| virtualisation.oci-containers.backend = "docker"; |
| |
| #Collabora Virtual Hosts |
| services.nginx.virtualHosts.${config.virtualisation.oci-containers.containers.collabora.environment.server_name} = { |
| serverAliases = [ "www.${config.virtualisation.oci-containers.containers.collabora.environment.server_name}" "docs.clicks.codes" "www.clicks.codes" ]; |
| enableACME = true; |
| forceSSL = true; |
| addSSL = false; |
| listenAddresses = [ "0.0.0.0" ]; |
| |
| extraConfig = '' |
| location = / { |
| proxy_pass http://standard:9980; |
| proxy_set_header Host $host; |
| } |
| |
| # static files |
| location ^~ /browser { |
| proxy_pass http://standard:9980; |
| proxy_set_header Host $host; |
| } |
| |
| # WOPI discovery URL |
| location ^~ /hosting/discovery { |
| proxy_pass http://standard:9980; |
| proxy_set_header Host $host; |
| } |
| |
| # Capabilities |
| location ^~ /hosting/capabilities { |
| proxy_pass http://standard:9980; |
| proxy_set_header Host $host; |
| } |
| |
| # main websocket |
| location ~ ^/cool/(.*)/ws$ { |
| proxy_pass http://standard:9980; |
| proxy_set_header Upgrade $http_upgrade; |
| proxy_set_header Connection "Upgrade"; |
| proxy_set_header Host $host; |
| proxy_read_timeout 36000s; |
| } |
| |
| # download, presentation and image upload |
| location ~ ^/(c|l)ool { |
| proxy_pass http://standard:9980; |
| proxy_set_header Host $host; |
| } |
| |
| # Admin Console websocket |
| location ^~ /cool/adminws { |
| proxy_pass http://standard:9980; |
| proxy_set_header Upgrade $http_upgrade; |
| proxy_set_header Connection "Upgrade"; |
| proxy_set_header Host $host; |
| proxy_read_timeout 36000s; |
| } |
| ''; |
| }; |
| } |