From 20334be668c2ad0930ac3b8fcbc970489e268fab Mon Sep 17 00:00:00 2001 From: Tom Hubrecht Date: Sat, 1 Mar 2025 16:42:07 +0100 Subject: [PATCH] feat(compute01): Deploy a copy of netbox --- machines/nixos/compute01/_configuration.nix | 1 + machines/nixos/compute01/kanidm/default.nix | 5 +- machines/nixos/compute01/netbox.nix | 74 ++++++++++++++++++ .../compute01/secrets/netbox-environment_file | Bin 0 -> 1713 bytes machines/nixos/compute01/secrets/secrets.nix | 1 + 5 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 machines/nixos/compute01/netbox.nix create mode 100644 machines/nixos/compute01/secrets/netbox-environment_file diff --git a/machines/nixos/compute01/_configuration.nix b/machines/nixos/compute01/_configuration.nix index c252089..f456e0b 100644 --- a/machines/nixos/compute01/_configuration.nix +++ b/machines/nixos/compute01/_configuration.nix @@ -25,6 +25,7 @@ lib.extra.mkConfig { "kanidm" "librenms" "mastodon" + # "netbox" "nextcloud" "ollama-proxy" "outline" diff --git a/machines/nixos/compute01/kanidm/default.nix b/machines/nixos/compute01/kanidm/default.nix index 228cd76..a9ec827 100644 --- a/machines/nixos/compute01/kanidm/default.nix +++ b/machines/nixos/compute01/kanidm/default.nix @@ -144,7 +144,10 @@ in displayName = "Netbox [Inventory]"; enableLegacyCrypto = true; originLanding = "https://netbox.dgnum.eu"; - originUrl = "https://netbox.dgnum.eu/oauth/complete/oidc/"; + originUrl = [ + "https://netbox.dgnum.eu/oauth/complete/oidc/" + "https://netbox-v2.dgnum.eu/oauth/complete/oidc/" + ]; preferShortUsername = true; scopeMaps.grp_active = [ diff --git a/machines/nixos/compute01/netbox.nix b/machines/nixos/compute01/netbox.nix new file mode 100644 index 0000000..50b358d --- /dev/null +++ b/machines/nixos/compute01/netbox.nix @@ -0,0 +1,74 @@ +# SPDX-FileCopyrightText: 2024 Maurice Debray +# +# SPDX-License-Identifier: EUPL-1.2 + +{ + config, + lib, + nixpkgs, + ... +}: + +let + EnvironmentFile = [ config.age.secrets."netbox-environment_file".path ]; +in + +{ + services = { + netbox = { + enable = true; + package = nixpkgs.nixos.unstable.netbox_4_1; + secretKeyFile = "/dev/null"; + listenAddress = "127.0.0.1"; + plugins = p: [ p.netbox-qrcode ]; + settings = { + ALLOWED_HOSTS = [ "netbox-v2.dgnum.eu" ]; + REMOTE_AUTH_BACKEND = "social_core.backends.open_id_connect.OpenIdConnectAuth"; + PLUGINS = [ "netbox_qrcode" ]; + PLUGINS_CONFIG = { + netbox_qrcode = { + custom_text = "DGNum. contact@dgnum.eu"; + font = "Tahoma"; + }; + }; + }; + + extraConfig = lib.mkForce '' + from os import environ as env + + SECRET_KEY = env["SECRET_KEY"] + + SOCIAL_AUTH_OIDC_OIDC_ENDPOINT = env["NETBOX_OIDC_URL"] + SOCIAL_AUTH_OIDC_KEY = env["NETBOX_OIDC_KEY"] + SOCIAL_AUTH_OIDC_SECRET = env["NETBOX_OIDC_SECRET"] + ''; + }; + }; + + systemd.services = { + netbox.serviceConfig = { + inherit EnvironmentFile; + + TimeoutStartSec = 600; + }; + + netbox-housekeeping.serviceConfig = { + inherit EnvironmentFile; + }; + + netbox-rq.serviceConfig = { + inherit EnvironmentFile; + }; + }; + + users.users.nginx.extraGroups = [ "netbox" ]; + + dgn-web.simpleProxies.netbox = { + inherit (config.services.netbox) port; + host = "netbox-v2.dgnum.eu"; + vhostConfig.locations."/static/".alias = "${config.services.netbox.dataDir}/static/"; + }; + + # dgn-backups.jobs.netbox.settings.paths = [ "/var/lib/netbox" ]; + # dgn-backups.postgresDatabases = [ "netbox" ]; +} diff --git a/machines/nixos/compute01/secrets/netbox-environment_file b/machines/nixos/compute01/secrets/netbox-environment_file new file mode 100644 index 0000000000000000000000000000000000000000..47b09f65b9cacbdc62b7dc9c1c927a84021f39d0 GIT binary patch literal 1713 zcmZY8&+FuN9mjE%MN4!ky(m2hqpYCB?On;<)b=2&wc7=;;Pz51rDCZEwLL6ItxClrYAyAm+l8)J5G=x8wtvBcH_!LW z4*U~8cguEHMce%RwhWMCA38bh?f2n{?_tAXpX$Y;v6+v1yLDv_kh+aSA>AS3$ej{d zHD(5caGY?wF-cJ7I18!(jZkPrupMnwk>HGw#v7>%B0lz`JW1v?Hd&3;?J6Eh6{-91 z_)ZO^8cl)Tq?8q8LL3nw(YpZ7?M$=w1>XhfmO}|JY#oB!9TQH{6Ud0yb+|7Ufpf@g zwipsjBz4|emesYmYQ~O8eVb zl5u%O0kd$|-C(fBA*!!diwrpNn4IYu1q-cGwYk;pw)HF-NGRTTESp$?#gn(Sa&PyN za?Qv9vYP`7%c+1+{h_*4c6l-**jekzjHq{dxOPc>I|B#X~L^YOf3hsM{ev20e#j_S7RcETEJyENy{ie2FzZ>z+p zkI*8dsYHBesZCh13&9#PQK^pl0NWH{CW{p| zb4RzGZ6tG&3=Zy6j5^zLLeg`B6nUp51&fS?%WU|)Q z_bO;KRrAUjUYmDn65kNBpl9r(Ly1Y#g8{NIZ)6ZiVppIZLDvnrBcqXcIJDeoMq&ws z;aN$n71I@P&zy#9b0j)L4%6VMoke4rm!xo~qz;nD_??=wjN>Ti4G|>ibeyMzS(GiP zDGOWFl4*vrlq8Jbx5zyPl5LU-3l?$_KQwthMa#?#cN5H5FzZUEmIA{%flJo{y`NK4 z6KmCX-BwKsNeg;#M4M3nQ;T`whx3u$cuZ*4t*7t;sR_9nWP#LdV>quBXl>?&%Wc}R zMSGPi(Da6&tIn@&C-WP#MhZ8OopG_J{uJI+jt%>aykg@Cb6W z;nqiJ7$lVtVU+G>*1_{E!8nGZZ{Tj<1XH0)(A4u;K7dY6PI`0Q<}9*X`OA)W`nx2Q zg|1{-4@Vkga!dwFp$C1w!FMSRoqg4={MdH?L7w2Di?)vJ#+OyC9 z{K41H37`D@SO0qL&ClF4Zawu6=3@BdH$GiH(p~!5*Y9SZJ^dE