jitsi: add caddy reverse proxy option

+38
+38
nixos/modules/services/web-apps/jitsi-meet.nix
··· 144 ''; 145 }; 146 147 prosody.enable = mkOption { 148 type = bool; 149 default = true; ··· 319 locations."=/interface_config.js" = mkDefault { 320 alias = overrideJs "${pkgs.jitsi-meet}/interface_config.js" "interfaceConfig" cfg.interfaceConfig ""; 321 }; 322 }; 323 }; 324
··· 144 ''; 145 }; 146 147 + caddy.enable = mkEnableOption "Whether to enablle caddy reverse proxy to expose jitsi-meet"; 148 + 149 prosody.enable = mkOption { 150 type = bool; 151 default = true; ··· 321 locations."=/interface_config.js" = mkDefault { 322 alias = overrideJs "${pkgs.jitsi-meet}/interface_config.js" "interfaceConfig" cfg.interfaceConfig ""; 323 }; 324 + }; 325 + }; 326 + 327 + services.caddy = mkIf cfg.caddy.enable { 328 + enable = mkDefault true; 329 + virtualHosts.${cfg.hostName} = { 330 + extraConfig = 331 + let 332 + templatedJitsiMeet = pkgs.runCommand "templated-jitsi-meet" {} '' 333 + cp -R ${pkgs.jitsi-meet}/* . 334 + for file in *.html **/*.html ; do 335 + ${pkgs.sd}/bin/sd '<!--#include virtual="(.*)" -->' '{{ include "$1" }}' $file 336 + done 337 + rm config.js 338 + rm interface_config.js 339 + cp -R . $out 340 + cp ${overrideJs "${pkgs.jitsi-meet}/config.js" "config" (recursiveUpdate defaultCfg cfg.config) cfg.extraConfig} $out/config.js 341 + cp ${overrideJs "${pkgs.jitsi-meet}/interface_config.js" "interfaceConfig" cfg.interfaceConfig ""} $out/interface_config.js 342 + cp ./libs/external_api.min.js $out/external_api.js 343 + ''; 344 + in '' 345 + handle /http-bind { 346 + header Host ${cfg.hostName} 347 + reverse_proxy 127.0.0.1:5280 348 + } 349 + handle /xmpp-websocket { 350 + reverse_proxy 127.0.0.1:5280 351 + } 352 + handle { 353 + templates 354 + root * ${templatedJitsiMeet} 355 + try_files {path} {path} 356 + try_files {path} /index.html 357 + file_server 358 + } 359 + ''; 360 }; 361 }; 362