elrond update

This commit is contained in:
Adrian Gunnar Lauterer 2024-10-30 14:51:42 +01:00
parent 663c21495b
commit 2c00b7b718
4 changed files with 50 additions and 3 deletions

View File

@ -10,7 +10,7 @@
../../profiles/webhost.nix ../../profiles/webhost.nix
../../profiles/base.nix ../../profiles/base.nix
../../services/gate.nix ../../services/gate.nix
../../services/ozai.nix #../../services/ozai.nix
./routes.nix ./routes.nix
]; ];

View File

@ -0,0 +1,46 @@
{ config, pkgs, lib, ... }:
let
cfg = config.services.domeneshop-dyndns;
in {
options.services.domeneshop-dyndns = {
enable = lib.mkEnableOption "Domeneshop DynDNS";
domain = lib.mkOption {
type = lib.types.str;
description = "Domain name to configure";
};
netrcFile = lib.mkOption {
type = lib.types.path;
description = "Path to the file that contains `machine api.domeneshop.no login <DDNS_TOKEN> password <DDNS_SECRET>` from https://domene.shop/admin?view=api";
};
startAt = lib.mkOption {
type = lib.types.str;
default = "*:0/10"; # Every 10 minutes
description = "Systemd onCalendar expression for when to run the timer";
};
};
config = lib.mkIf cfg.enable {
systemd.services.domeneshop-dyndns = {
serviceConfig.LoadCredential = "netrc:${cfg.netrcFile}";
startAt = cfg.startAt;
script = ''
DNSNAME="${cfg.domain}"
NEW_IP="$(${lib.getExe pkgs.curl} --silent https://ipinfo.io/ip)"
OLD_IP="$(${lib.getExe pkgs.getent} hosts "$DNSNAME" | ${lib.getExe pkgs.gawk} '{ print $1 }')"
if [[ "$NEW_IP" != "$OLD_IP" ]]; then
echo "Old IP ($OLD_IP) does not match new IP ($NEW_IP), updating..."
${lib.getExe pkgs.curl} --silent --netrc-file "$CREDENTIALS_DIRECTORY/netrc" "https://api.domeneshop.no/v0/dyndns/update?hostname=$DNSNAME&myip=$NEW_IP"
else
echo "Old IP ($OLD_IP) matches new IP ($NEW_IP), exiting..."
fi
'';
};
};
}

View File

@ -94,7 +94,7 @@
useACMEHost = config.networking.domain; useACMEHost = config.networking.domain;
locations."/" = { locations."/" = {
proxyWebsockets = true; proxyWebsockets = true;
proxyPass = "http://localhost:8085"; proxyPass = "http://localhost:8095";
}; };
#basicAuthFile = config.sops.secrets."nginx/defaultpass".path; #basicAuthFile = config.sops.secrets."nginx/defaultpass".path;
}; };

View File

@ -7,8 +7,9 @@
services.ozai-webui = { services.ozai-webui = {
enable = true; enable = true;
port = 8085; port = 8095;
host = "0.0.0.0"; host = "0.0.0.0";
}; };
} }