From 9a53151fdd5b85ccb4e82b4682cc330ad034af60 Mon Sep 17 00:00:00 2001 From: oddlama Date: Fri, 26 Jan 2024 00:31:54 +0100 Subject: [PATCH] feat: add ollama ai server --- hosts/sire/default.nix | 1 + hosts/sire/guests/ai.nix | 18 ++++++++++++++++++ hosts/sire/secrets/ai/host.pub | 1 + .../sentinel/loki-basic-auth-hashes.age | Bin 2119 -> 2237 bytes .../promtail-loki-basic-auth-password.age | Bin 0 -> 487 bytes .../sire-ai/telegraf-influxdb-token.age | 9 +++++++++ .../wireguard/proxy-sentinel/keys/sire-ai.age | 10 ++++++++++ .../wireguard/proxy-sentinel/keys/sire-ai.pub | 1 + .../proxy-sentinel/psks/sentinel+sire-ai.age | 9 +++++++++ 9 files changed, 49 insertions(+) create mode 100644 hosts/sire/guests/ai.nix create mode 100644 hosts/sire/secrets/ai/host.pub create mode 100644 secrets/generated/sire-ai/promtail-loki-basic-auth-password.age create mode 100644 secrets/generated/sire-ai/telegraf-influxdb-token.age create mode 100644 secrets/wireguard/proxy-sentinel/keys/sire-ai.age create mode 100644 secrets/wireguard/proxy-sentinel/keys/sire-ai.pub create mode 100644 secrets/wireguard/proxy-sentinel/psks/sentinel+sire-ai.age diff --git a/hosts/sire/default.nix b/hosts/sire/default.nix index 51af57a..5cd4236 100644 --- a/hosts/sire/default.nix +++ b/hosts/sire/default.nix @@ -132,6 +132,7 @@ // mkMicrovm "immich" { enableStorageDataset = true; } + // mkMicrovm "ai" {} #// mkMicrovm "minecraft" #// mkMicrovm "firefly" #// mkMicrovm "fasten-health" diff --git a/hosts/sire/guests/ai.nix b/hosts/sire/guests/ai.nix new file mode 100644 index 0000000..bd71d1b --- /dev/null +++ b/hosts/sire/guests/ai.nix @@ -0,0 +1,18 @@ +{ + microvm.mem = 1024 * 16; + microvm.vcpu = 20; + + networking.firewall.allowedTCPPorts = [11434]; + + environment.persistence."/state".directories = [ + { + directory = "/var/lib/private/ollama"; + mode = "0700"; + } + ]; + + services.ollama = { + enable = true; + listenAddress = "0.0.0.0:11434"; + }; +} diff --git a/hosts/sire/secrets/ai/host.pub b/hosts/sire/secrets/ai/host.pub new file mode 100644 index 0000000..e4074cd --- /dev/null +++ b/hosts/sire/secrets/ai/host.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGD35UWbMDS/Asz1xNAf23XUqbAYsCxJFMuujfcFSENA diff --git a/secrets/generated/sentinel/loki-basic-auth-hashes.age b/secrets/generated/sentinel/loki-basic-auth-hashes.age index d641be9f9105d275fa59e88224f56d2f386693f9..3846e0c7f5fe55f81fd0944fa8c6d8ed54fe3ad8 100644 GIT binary patch delta 2229 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 diff --git a/secrets/generated/sire-ai/promtail-loki-basic-auth-password.age b/secrets/generated/sire-ai/promtail-loki-basic-auth-password.age new file mode 100644 index 0000000000000000000000000000000000000000..7e6476deb489084bedfb3913a8000ebb9839f279 GIT binary patch literal 487 zcmWm7yNlCc003~21HFKVA{=f}aq)<09&H+xJK8k8rcL@v+B`T8lJxtUq>rRu9!>fO z2yW`;=&XWrbaZhN!BHGtL^t6EaZ!-_{R2OH3J9=tQ4uA6xV#^tDVb3iaey0ixlHkR zq*Fj!#4x1xOZ~xIYQmbu`89~N5pQKd6K+;~Y)J{ru-JgNEl~?wM{Lq@=T$~-Xfe>) z&B{%s4(CmjE;3ZH-JmG(e2Dyvi0E;pd&seg!ogw`367WPVq0)Klw?-I^|-4T1*7FE>Pn5mp5=jy5d?t)nU$P+ zeWJ2GElM0s4LzBrK|c);IS!Bt`#IT$^f07ZY_a#3`m&v$&959>it49NZa)5fLf(10 zvm-vZ@%G{5*WU5nlTRPw%gOicAN2Catw$HW?tXj2y}x>$jX!QLet!1)#kI5b>H1yo L-*e&TD{S{aWaOvr literal 0 HcmV?d00001 diff --git a/secrets/generated/sire-ai/telegraf-influxdb-token.age b/secrets/generated/sire-ai/telegraf-influxdb-token.age new file mode 100644 index 0000000..c309ced --- /dev/null +++ b/secrets/generated/sire-ai/telegraf-influxdb-token.age @@ -0,0 +1,9 @@ +age-encryption.org/v1 +-> X25519 e09chuumAr9YIQr2FfMksKQ6fuynCRG48q3MFUpZMy0 +tdk5i7W1B3jHBQtpu0GNKhbRSCwAGdANJ++XTvcJsUc +-> piv-p256 xqSe8Q AlCSRpF/mmCbRdgeJmgRfjYGv3UXsiDUXNd1ycXL/VYP +flgemElH9cDwS13GFK0yhXEFMtae7mu6cigrtdEqwD4 +-> $#F(3&-grease + +--- oiRai0AKyVi3x1Ca4kvxWTsB+9iNGc1ns/dwhWKQ5Bk +fNbl΢Mur7{de\Fx"6= GZw$ M|ȅ`f5~ a@k8amA$A=Y \ No newline at end of file diff --git a/secrets/wireguard/proxy-sentinel/keys/sire-ai.age b/secrets/wireguard/proxy-sentinel/keys/sire-ai.age new file mode 100644 index 0000000..6a9535a --- /dev/null +++ b/secrets/wireguard/proxy-sentinel/keys/sire-ai.age @@ -0,0 +1,10 @@ +age-encryption.org/v1 +-> X25519 TH0kjq49QgHVMxiKN/A7GwtqwdQw9DAikE+5EjCvBh4 ++vYyoJa5I2PTH+v+kwj5NyFwY+ZM9taFsC7r9uVn6nU +-> piv-p256 xqSe8Q At6UZoFAzsYlT0QDcGGSWKxCsv4Iw/fOctV+d1EL3kMl +Nf0ueYrxTsPPO/TsEHaNSV5jHFZkbDi0vQBd0wNfduE +-> i-grease u.xSTA x'~zLGA_ e GE# +ST6gex/P7Tl+iuVMtoP892ZiSqxNBKPcPu8mZqFMnuWOmY1sgaGWqo8uANrENf4S +AWdV9+b9NrRHzwp+s5ZglVEZCj8uY/yNjr+5/sPqwyVGWqRh24kwWPg +--- ihZIFb7aU1VLXXfmQCMhpC0YwTMyCu7mV8wRBaSIaXo +3nk&H<=oeAd+)Y  \5P j!yE>E8ki \ No newline at end of file diff --git a/secrets/wireguard/proxy-sentinel/keys/sire-ai.pub b/secrets/wireguard/proxy-sentinel/keys/sire-ai.pub new file mode 100644 index 0000000..c3792bd --- /dev/null +++ b/secrets/wireguard/proxy-sentinel/keys/sire-ai.pub @@ -0,0 +1 @@ +ygcBHVWOJfuMpLjaP8wmTlOxaKtLdfnOpkSnSI1yK0E= diff --git a/secrets/wireguard/proxy-sentinel/psks/sentinel+sire-ai.age b/secrets/wireguard/proxy-sentinel/psks/sentinel+sire-ai.age new file mode 100644 index 0000000..43ce934 --- /dev/null +++ b/secrets/wireguard/proxy-sentinel/psks/sentinel+sire-ai.age @@ -0,0 +1,9 @@ +age-encryption.org/v1 +-> X25519 T95WvKmKcGXdvR9je/tOyisM9IFKYMAY/3GuHZwD+zo +7kmXql4Ti7orkYWf3RGNW2fJ1GBL7X95TzPHzWmlTGc +-> piv-p256 xqSe8Q A+L9ytWGceDG0o8dto7/Q35AGAKc4geqNq0/U46xMvfU +RFiabxIUqn1eehP5Dy4aWQbTVqVFG1uXUkGmys5wuA4 +-> 9-grease B?'f1 +y9r8TgPo/KFoIkJ7svBEwQsRwSdENuvKbZUX +--- INSbhj2g2kORf8xCpIWnCdbCh/kHh1RoiDhMdPvDLuk +s_Y;߶Ts)-uM6*O}^b /]R nFo0~2)/ \ No newline at end of file