From 66787f06e7208e9adf03cd81e110c37aa138494d Mon Sep 17 00:00:00 2001 From: wi11-holdsworth <83637728+wi11-holdsworth@users.noreply.github.com> Date: Wed, 22 Oct 2025 17:46:28 +1100 Subject: [PATCH 1/6] feat: install owntracks backend --- modules/nixos/bundles/server.nix | 1 + modules/nixos/features/owntracks.nix | 39 ++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 modules/nixos/features/owntracks.nix diff --git a/modules/nixos/bundles/server.nix b/modules/nixos/bundles/server.nix index 271c07b..8796c8d 100644 --- a/modules/nixos/bundles/server.nix +++ b/modules/nixos/bundles/server.nix @@ -15,6 +15,7 @@ "miniflux" "nginx" "ntfy-sh" + "owntracks" "paperless" "prowlarr" "qbittorrent" diff --git a/modules/nixos/features/owntracks.nix b/modules/nixos/features/owntracks.nix new file mode 100644 index 0000000..eac7cfe --- /dev/null +++ b/modules/nixos/features/owntracks.nix @@ -0,0 +1,39 @@ +{ + # keep-sorted start + lib, + pkgs, + # keep-sorted end + ... +}: +let + host = "owntracks.fi33.buzz"; + port = "5014"; +in +{ + systemd.services.owntracks = { + enable = true; + description = "owntracks recorder"; + serviceConfig = { + ExecStart = '' + ${pkgs.owntracks-recorder}/bin/ot-recorder \ + --storage /var/lib/owntracks/recorder/store \ + --port 0 + --http-port ${lib.toInt port} + --http-host https://${host} + ''; + DynamicUser = true; + StateDirectory = "owntracks"; + Restart = "always"; + }; + wantedBy = [ "multi-user.target" ]; + }; + services = { + # borgbackup.jobs = owntracks { }; + + nginx.virtualHosts.${host} = { + forceSSL = true; + useACMEHost = "fi33.buzz"; + locations."/".proxyPass = "http://localhost:${port}"; + }; + }; +} From cac7aedbbac0706588f72d2296cef0f4a842cc40 Mon Sep 17 00:00:00 2001 From: wi11-holdsworth <83637728+wi11-holdsworth@users.noreply.github.com> Date: Wed, 22 Oct 2025 18:07:43 +1100 Subject: [PATCH 2/6] fix: pass port into owntracks-recorder config as a string, not an int --- modules/nixos/features/owntracks.nix | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/modules/nixos/features/owntracks.nix b/modules/nixos/features/owntracks.nix index eac7cfe..3f20127 100644 --- a/modules/nixos/features/owntracks.nix +++ b/modules/nixos/features/owntracks.nix @@ -1,8 +1,5 @@ { - # keep-sorted start - lib, pkgs, - # keep-sorted end ... }: let @@ -18,7 +15,7 @@ in ${pkgs.owntracks-recorder}/bin/ot-recorder \ --storage /var/lib/owntracks/recorder/store \ --port 0 - --http-port ${lib.toInt port} + --http-port ${port} --http-host https://${host} ''; DynamicUser = true; @@ -30,10 +27,15 @@ in services = { # borgbackup.jobs = owntracks { }; - nginx.virtualHosts.${host} = { - forceSSL = true; - useACMEHost = "fi33.buzz"; - locations."/".proxyPass = "http://localhost:${port}"; - }; + nginx.virtualHosts.${host} = + let + owntracks-frontend = pkgs.callPackage ./owntracks-frontend.nix; + in + { + forceSSL = true; + useACMEHost = "fi33.buzz"; + root = "/var/www/html"; + locations."/owntracks/".alias = "${owntracks-frontend}"; + }; }; } From 0e059a51b3c70a54ea8415946fe03751960117f6 Mon Sep 17 00:00:00 2001 From: wi11-holdsworth <83637728+wi11-holdsworth@users.noreply.github.com> Date: Wed, 22 Oct 2025 18:07:50 +1100 Subject: [PATCH 3/6] feat: install owntracks frontend --- modules/nixos/features/owntracks-frontend.nix | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 modules/nixos/features/owntracks-frontend.nix diff --git a/modules/nixos/features/owntracks-frontend.nix b/modules/nixos/features/owntracks-frontend.nix new file mode 100644 index 0000000..613fecd --- /dev/null +++ b/modules/nixos/features/owntracks-frontend.nix @@ -0,0 +1,32 @@ +{ + stdenv, + writeText, + fetchzip, +}: +stdenv.mkDerivation { + pname = "owntracks-frontend"; + version = "v2.15.3"; + src = fetchzip { + url = "https://github.com/owntracks/frontend/releases/download/v2.15.3/v2.15.3-dist.zip"; + sha256 = "iy+yISPcOD/2lTyJUb1eI3wufLku1mKfVDm0+Dy8OKk="; + }; + + config = writeText "config.js" '' + window.owntracks = window.owntracks || {}; + window.owntracks.config = { + api: { + baseUrl: "https://owntracks.fi33.buzz:5014" + }, + router: { + basePath: "owntracks" + } + }; + ''; + + installPhase = '' + runHook preInstall + cp -r . $out + cp $config $out/config/config.js + runHook postInstall + ''; +} From 0a57515130cee17e9da6d36e34189075a279e98e Mon Sep 17 00:00:00 2001 From: wi11-holdsworth <83637728+wi11-holdsworth@users.noreply.github.com> Date: Wed, 22 Oct 2025 17:46:28 +1100 Subject: [PATCH 4/6] feat: install owntracks backend --- modules/nixos/bundles/server.nix | 1 + modules/nixos/features/owntracks.nix | 39 ++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 modules/nixos/features/owntracks.nix diff --git a/modules/nixos/bundles/server.nix b/modules/nixos/bundles/server.nix index 271c07b..8796c8d 100644 --- a/modules/nixos/bundles/server.nix +++ b/modules/nixos/bundles/server.nix @@ -15,6 +15,7 @@ "miniflux" "nginx" "ntfy-sh" + "owntracks" "paperless" "prowlarr" "qbittorrent" diff --git a/modules/nixos/features/owntracks.nix b/modules/nixos/features/owntracks.nix new file mode 100644 index 0000000..eac7cfe --- /dev/null +++ b/modules/nixos/features/owntracks.nix @@ -0,0 +1,39 @@ +{ + # keep-sorted start + lib, + pkgs, + # keep-sorted end + ... +}: +let + host = "owntracks.fi33.buzz"; + port = "5014"; +in +{ + systemd.services.owntracks = { + enable = true; + description = "owntracks recorder"; + serviceConfig = { + ExecStart = '' + ${pkgs.owntracks-recorder}/bin/ot-recorder \ + --storage /var/lib/owntracks/recorder/store \ + --port 0 + --http-port ${lib.toInt port} + --http-host https://${host} + ''; + DynamicUser = true; + StateDirectory = "owntracks"; + Restart = "always"; + }; + wantedBy = [ "multi-user.target" ]; + }; + services = { + # borgbackup.jobs = owntracks { }; + + nginx.virtualHosts.${host} = { + forceSSL = true; + useACMEHost = "fi33.buzz"; + locations."/".proxyPass = "http://localhost:${port}"; + }; + }; +} From 0b8a87e87cd8be04b710d47e8476820b32410d6e Mon Sep 17 00:00:00 2001 From: wi11-holdsworth <83637728+wi11-holdsworth@users.noreply.github.com> Date: Wed, 22 Oct 2025 18:07:43 +1100 Subject: [PATCH 5/6] fix: pass port into owntracks-recorder config as a string, not an int --- modules/nixos/features/owntracks.nix | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/modules/nixos/features/owntracks.nix b/modules/nixos/features/owntracks.nix index eac7cfe..3f20127 100644 --- a/modules/nixos/features/owntracks.nix +++ b/modules/nixos/features/owntracks.nix @@ -1,8 +1,5 @@ { - # keep-sorted start - lib, pkgs, - # keep-sorted end ... }: let @@ -18,7 +15,7 @@ in ${pkgs.owntracks-recorder}/bin/ot-recorder \ --storage /var/lib/owntracks/recorder/store \ --port 0 - --http-port ${lib.toInt port} + --http-port ${port} --http-host https://${host} ''; DynamicUser = true; @@ -30,10 +27,15 @@ in services = { # borgbackup.jobs = owntracks { }; - nginx.virtualHosts.${host} = { - forceSSL = true; - useACMEHost = "fi33.buzz"; - locations."/".proxyPass = "http://localhost:${port}"; - }; + nginx.virtualHosts.${host} = + let + owntracks-frontend = pkgs.callPackage ./owntracks-frontend.nix; + in + { + forceSSL = true; + useACMEHost = "fi33.buzz"; + root = "/var/www/html"; + locations."/owntracks/".alias = "${owntracks-frontend}"; + }; }; } From 046f47b082294ceb957b9b4b310467d9c90ad4b6 Mon Sep 17 00:00:00 2001 From: wi11-holdsworth <83637728+wi11-holdsworth@users.noreply.github.com> Date: Wed, 22 Oct 2025 18:07:50 +1100 Subject: [PATCH 6/6] feat: install owntracks frontend --- modules/nixos/features/owntracks-frontend.nix | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 modules/nixos/features/owntracks-frontend.nix diff --git a/modules/nixos/features/owntracks-frontend.nix b/modules/nixos/features/owntracks-frontend.nix new file mode 100644 index 0000000..613fecd --- /dev/null +++ b/modules/nixos/features/owntracks-frontend.nix @@ -0,0 +1,32 @@ +{ + stdenv, + writeText, + fetchzip, +}: +stdenv.mkDerivation { + pname = "owntracks-frontend"; + version = "v2.15.3"; + src = fetchzip { + url = "https://github.com/owntracks/frontend/releases/download/v2.15.3/v2.15.3-dist.zip"; + sha256 = "iy+yISPcOD/2lTyJUb1eI3wufLku1mKfVDm0+Dy8OKk="; + }; + + config = writeText "config.js" '' + window.owntracks = window.owntracks || {}; + window.owntracks.config = { + api: { + baseUrl: "https://owntracks.fi33.buzz:5014" + }, + router: { + basePath: "owntracks" + } + }; + ''; + + installPhase = '' + runHook preInstall + cp -r . $out + cp $config $out/config/config.js + runHook postInstall + ''; +}