From f053c677e88113df82c2cad97c46bf9b72053e7b Mon Sep 17 00:00:00 2001 From: Zuckerberg Date: Sat, 10 Jan 2026 23:00:10 -0800 Subject: [PATCH] Set up openwebui + ollama --- machines/fry/default.nix | 56 +++++++++++++++++++++++ machines/fry/properties.nix | 1 + machines/storage/s0/properties.nix | 1 + secrets/digitalocean-dns-credentials.age | Bin 958 -> 738 bytes secrets/secrets.nix | 2 +- 5 files changed, 59 insertions(+), 1 deletion(-) diff --git a/machines/fry/default.nix b/machines/fry/default.nix index eae09fa..7c4b447 100644 --- a/machines/fry/default.nix +++ b/machines/fry/default.nix @@ -9,4 +9,60 @@ nix.distributedBuilds = lib.mkForce false; nix.gc.automatic = lib.mkForce false; + + nixpkgs.config.rocmSupport = true; + services.ollama = { + enable = true; + acceleration = "rocm"; + rocmOverrideGfx = "11.0.2"; + host = "127.0.0.1"; + }; + + services.open-webui = { + enable = true; + host = "127.0.0.1"; # nginx proxy + port = 12831; + environment = { + ANONYMIZED_TELEMETRY = "False"; + DO_NOT_TRACK = "True"; + SCARF_NO_ANALYTICS = "True"; + OLLAMA_API_BASE_URL = "http://localhost:${toString config.services.ollama.port}"; + }; + }; + + # nginx + services.nginx = { + enable = true; + openFirewall = false; # All nginx services are internal + virtualHosts = + let + mkHost = external: config: + { + ${external} = { + useACMEHost = "fry.neet.dev"; # Use wildcard cert + forceSSL = true; + locations."/" = config; + }; + }; + mkVirtualHost = external: internal: + mkHost external { + proxyPass = internal; + proxyWebsockets = true; + }; + in + lib.mkMerge [ + (mkVirtualHost "chat.fry.neet.dev" "http://localhost:${toString config.services.open-webui.port}") + ]; + }; + + # Get wildcard cert + security.acme.certs."fry.neet.dev" = { + dnsProvider = "digitalocean"; + credentialsFile = "/run/agenix/digitalocean-dns-credentials"; + extraDomainNames = [ "*.fry.neet.dev" ]; + group = "nginx"; + dnsResolver = "1.1.1.1:53"; + dnsPropagationCheck = false; # sadly this erroneously fails + }; + age.secrets.digitalocean-dns-credentials.file = ../../secrets/digitalocean-dns-credentials.age; } diff --git a/machines/fry/properties.nix b/machines/fry/properties.nix index 18734c8..c5eef13 100644 --- a/machines/fry/properties.nix +++ b/machines/fry/properties.nix @@ -7,6 +7,7 @@ systemRoles = [ "personal" + "dns-challenge" ]; hostKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID/Df5lG07Il7fizEgZR/T9bMlR0joESRJ7cqM9BkOyP"; diff --git a/machines/storage/s0/properties.nix b/machines/storage/s0/properties.nix index 9d133c8..dc857da 100644 --- a/machines/storage/s0/properties.nix +++ b/machines/storage/s0/properties.nix @@ -17,6 +17,7 @@ "media-server" "linkwarden" "outline" + "dns-challenge" ]; hostKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAwiXcUFtAvZCayhu4+AIcF+Ktrdgv9ee/mXSIhJbp4q"; diff --git a/secrets/digitalocean-dns-credentials.age b/secrets/digitalocean-dns-credentials.age index 5b83ebdea4cb33e1edca170488d24aa5e0b790fc..af1a992148d4e18f909e793c856f6c491b5df0a0 100644 GIT binary patch delta 674 zcmdnT{)lygYFwdfQl@XZg0G`Xu6txvqFZWaRc?4yK}2SnxxapHfmv0BuVJBOl9_LY zbGT1Yc4&4om$7SlMzTq6d48Hjj=O7AkcoScWs;F$V2W|5X|iQ#K#9Ita8PbUj=N># zfoIQ$w;m^K!l1v;&h}{Yx@kGb;*>!+p83yfO>2(_JzG zqoRz%GTn2`e6w?md~?F9!t+up4P4wZT*JdH^3yz1g38gYOD!ubOG{TMOw28DPRT3K zH_ngJ&&v-i4D>N}cXbW3EH}+hN%73jil`3?GBC(2Pt7*qD)RQNbP7!=sx0%=F4A{& z39rfwFVFVyjP&*@b~6b}^-f9ga|%pO)y_!f($&>fFwb!;Ei3gXu1wL-E^-SC%q@#F z$OtwI&MZhw@zKt%s0t_u*3ZgK^2sUYx{&_1&pz)3OQXAL(51#ppLcOzS^D%*qGCd< zM3#i%8LswO49hhx@h?z57$)wx=J!=qdrsAEY2l2JM-LbNKmGY;3A5mtr+f1l-fY1F>YjH$QjZJsZn%nJbf1oL+Q delta 877 zcmaFFx{rN=YJIpa9B}Tn5DTR zm#&>cadC!jYKoDmsiCEUnPZ5Ne!4fpb1rsClJRo@1^_s;i}=v%6(#X-;-fcto&&roL&ZN3d~KQgWt& zhi^oBenvXFbww5?7TW0wx#dZoMQ&!Mm45CSIr@H{LGD2n5tXjy0jB!($*D=+*%iL- zejYACuG!_;ToI8LWq!q>g+;kup{a(R>6RAZDOt`=B~?W^er{P#DXCfR?*1VuVL3j& z=+!prxt`4gm@L@qz8w4mM6Lt zb7`9-Tb5UN6lG=R24$G1m8NKWdHO_{ha~Ig2LM z85ZD_X6$WVWtI_SQC{Y3>0#>YUr=1&9v13s?3+|pJ~^IIJiIhGAf>pV&?m4eD|N#~{z$B-Pa?(XGNcAfq_4syxUbnajMilDw+SQ1?9lz+xY_!cuSNq-0-{ zG?Sumuh4Q!Bg=rOpv<81Y_7Ztx4hK+yr}SS56_5l{czuGqa0`79Mi;*{FGwfsJu|; z$a3=_{m}fBY%X10U4`WAsC-8k(+uZqSO4;~D$fGns8Vms$dE|OBwz1j_Xy*P