nixos-config/patches/onlyoffice.patch
2024-07-16 15:21:05 +03:00

119 lines
5.1 KiB
Diff

diff --git a/nixos/modules/services/web-apps/onlyoffice.nix b/nixos/modules/services/web-apps/onlyoffice.nix
index 0d0e01d4f..9a403285e 100644
--- a/nixos/modules/services/web-apps/onlyoffice.nix
+++ b/nixos/modules/services/web-apps/onlyoffice.nix
@@ -77,113 +77,6 @@ in
config = lib.mkIf cfg.enable {
services = {
- nginx = {
- enable = lib.mkDefault true;
- # misses text/csv, font/ttf, application/x-font-ttf, application/rtf, application/wasm
- recommendedGzipSettings = lib.mkDefault true;
- recommendedProxySettings = lib.mkDefault true;
-
- upstreams = {
- # /etc/nginx/includes/http-common.conf
- onlyoffice-docservice = {
- servers = { "localhost:${toString cfg.port}" = { }; };
- };
- onlyoffice-example = lib.mkIf cfg.enableExampleServer {
- servers = { "localhost:${toString cfg.examplePort}" = { }; };
- };
- };
-
- virtualHosts.${cfg.hostname} = {
- locations = {
- # /etc/nginx/includes/ds-docservice.conf
- "~ ^(\/[\d]+\.[\d]+\.[\d]+[\.|-][\d]+)?\/(web-apps\/apps\/api\/documents\/api\.js)$".extraConfig = ''
- expires -1;
- alias ${cfg.package}/var/www/onlyoffice/documentserver/$2;
- '';
- "~ ^(\/[\d]+\.[\d]+\.[\d]+[\.|-][\d]+)?\/(web-apps)(\/.*\.json)$".extraConfig = ''
- expires 365d;
- error_log /dev/null crit;
- alias ${cfg.package}/var/www/onlyoffice/documentserver/$2$3;
- '';
- "~ ^(\/[\d]+\.[\d]+\.[\d]+[\.|-][\d]+)?\/(sdkjs-plugins)(\/.*\.json)$".extraConfig = ''
- expires 365d;
- error_log /dev/null crit;
- alias ${cfg.package}/var/www/onlyoffice/documentserver/$2$3;
- '';
- "~ ^(\/[\d]+\.[\d]+\.[\d]+[\.|-][\d]+)?\/(web-apps|sdkjs|sdkjs-plugins|fonts)(\/.*)$".extraConfig = ''
- expires 365d;
- alias ${cfg.package}/var/www/onlyoffice/documentserver/$2$3;
- '';
- "~* ^(\/cache\/files.*)(\/.*)".extraConfig = ''
- alias /var/lib/onlyoffice/documentserver/App_Data$1;
- add_header Content-Disposition "attachment; filename*=UTF-8''$arg_filename";
-
- set $secret_string verysecretstring;
- secure_link $arg_md5,$arg_expires;
- secure_link_md5 "$secure_link_expires$uri$secret_string";
-
- if ($secure_link = "") {
- return 403;
- }
-
- if ($secure_link = "0") {
- return 410;
- }
- '';
- "~* ^(\/[\d]+\.[\d]+\.[\d]+[\.|-][\d]+)?\/(internal)(\/.*)$".extraConfig = ''
- allow 127.0.0.1;
- deny all;
- proxy_pass http://onlyoffice-docservice/$2$3;
- '';
- "~* ^(\/[\d]+\.[\d]+\.[\d]+[\.|-][\d]+)?\/(info)(\/.*)$".extraConfig = ''
- allow 127.0.0.1;
- deny all;
- proxy_pass http://onlyoffice-docservice/$2$3;
- '';
- "/".extraConfig = ''
- proxy_pass http://onlyoffice-docservice;
- '';
- "~ ^(\/[\d]+\.[\d]+\.[\d]+[\.|-][\d]+)?(\/doc\/.*)".extraConfig = ''
- proxy_pass http://onlyoffice-docservice$2;
- proxy_http_version 1.1;
- '';
- "/${cfg.package.version}/".extraConfig = ''
- proxy_pass http://onlyoffice-docservice/;
- '';
- "~ ^(\/[\d]+\.[\d]+\.[\d]+[\.|-][\d]+)?\/(dictionaries)(\/.*)$".extraConfig = ''
- expires 365d;
- alias ${cfg.package}/var/www/onlyoffice/documentserver/$2$3;
- '';
- # /etc/nginx/includes/ds-example.conf
- "~ ^(\/welcome\/.*)$".extraConfig = ''
- expires 365d;
- alias ${cfg.package}/var/www/onlyoffice/documentserver-example$1;
- index docker.html;
- '';
- "/example/".extraConfig = lib.mkIf cfg.enableExampleServer ''
- proxy_pass http://onlyoffice-example/;
- proxy_set_header X-Forwarded-Path /example;
- '';
- };
- extraConfig = ''
- rewrite ^/$ /welcome/ redirect;
- rewrite ^\/OfficeWeb(\/apps\/.*)$ /${cfg.package.version}/web-apps$1 redirect;
- rewrite ^(\/web-apps\/apps\/(?!api\/).*)$ /${cfg.package.version}$1 redirect;
-
- # based on https://github.com/ONLYOFFICE/document-server-package/blob/master/common/documentserver/nginx/includes/http-common.conf.m4#L29-L34
- # without variable indirection and correct variable names
- proxy_set_header Host $host;
- proxy_set_header X-Forwarded-Host $host;
- proxy_set_header X-Forwarded-Proto $scheme;
- # required for CSP to take effect
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- # required for websocket
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection $connection_upgrade;
- '';
- };
- };
-
rabbitmq.enable = lib.mkDefault true;
postgresql = {