blob: e76613bcea9490eaa86b3ae363b6f6ad33d78ab3 [file] [log] [blame]
{ 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;
}
'';
};
}