containerize actual

This commit is contained in:
mjallen18
2025-04-24 13:46:03 -05:00
parent 41af361fee
commit 1af719c1e2
3 changed files with 93 additions and 31 deletions

View File

@@ -1,21 +1,84 @@
{ ... }: { ... }:
let
actualPort = 3333;
hostDataDir = "/media/nas/ssd/nix-app-data/jellyseerr";
dataDir = "/var/lib/private/actual-data";
stateDir = "/var/lib/private/actual";
hostAddress = "10.0.1.18";
localAddress = "10.0.3.18";
in
{ {
services.actual = { containers.actual = {
enable = true; autoStart = true;
openFirewall = true; privateNetwork = true;
settings = { hostAddress = hostAddress;
trustedProxies = [ "10.0.1.18" ]; localAddress = localAddress;
port = 3333;
config = { bindMounts = {
dataDir = "/media/nas/ssd/nix-app-data/actual"; ${dataDir} = {
openId = { hostPath = hostDataDir;
issuer = "https://authentik.mjallen.dev/application/o/actual-budget/"; isReadOnly = false;
client_id = "1PGCrRdndq7SoOSLuNMnXFmHpgd1NKRMOa5LSia2"; };
client_secret = "1PGCrRdndq7SoOSLuNMnXFmHpgd1NKRMOa5LSia2"; ${stateDir} = {
server_hostname = "https://actual.mjallen.dev"; hostPath = stateDir;
authMethod = "openid"; isReadOnly = false;
};
}; };
}; };
config = { lib, ... }:
{
services.actual = {
enable = true;
openFirewall = true;
settings = {
trustedProxies = [ hostAddress ];
port = actualPort;
config = {
dataDir = dataDir;
openId = {
issuer = "https://authentik.mjallen.dev/application/o/actual-budget/";
client_id = "1PGCrRdndq7SoOSLuNMnXFmHpgd1NKRMOa5LSia2";
client_secret = "1PGCrRdndq7SoOSLuNMnXFmHpgd1NKRMOa5LSia2";
server_hostname = "https://actual.mjallen.dev";
authMethod = "openid";
};
};
};
};
networking = {
firewall = {
enable = true;
allowedTCPPorts = [ actualPort ];
};
# Use systemd-resolved inside the container
# Workaround for bug https://github.com/NixOS/nixpkgs/issues/162686
useHostResolvConf = lib.mkForce false;
};
# Create and set permissions for required directories
# system.activationScripts.actual-dirs = ''
# mkdir -p /var/lib/private/actual-data
# chown -R nobody:nogroup /var/lib/private/actual-data
# chmod -R 775 /var/lib/private/actual-data
# ln -sf /var/lib/private/actual /var/lib/actual-data
# '';
services.resolved.enable = true;
system.stateVersion = "23.11";
};
};
networking.nat = {
forwardPorts = [
{
destination = "${localAddress}:${toString actualPort}";
sourcePort = actualPort;
}
];
}; };
} }

View File

@@ -13,7 +13,8 @@ let
paperlessUrl = "http://10.0.1.20:28981"; paperlessUrl = "http://10.0.1.20:28981";
cacheUrl = "http://10.0.1.18:5000"; cacheUrl = "http://10.0.1.18:5000";
giteaUrl = "http://10.0.1.18:3000"; giteaUrl = "http://10.0.1.18:3000";
actualUrl = "http://10.0.1.18:3333"; actualUrl = "http://10.0.3.18:3333";
lubeloggerUrl = "http://10.0.1.18:6754";
in in
{ {
networking.firewall = { networking.firewall = {
@@ -224,6 +225,11 @@ in
url = actualUrl; url = actualUrl;
} }
]; ];
lubelogger.loadBalancer.servers = [
{
url = lubeloggerUrl;
}
];
}; };
routers = { routers = {
@@ -292,14 +298,6 @@ in
priority = 10; priority = 10;
tls.certResolver = "letsencrypt"; tls.certResolver = "letsencrypt";
}; };
# open-webui = {
# entryPoints = [ "websecure" ];
# rule = "Host(`chat.${domain}`)";
# service = "chat";
# middlewares = [ "authentik" "whitelist-geoblock" ];
# priority = 10;
# tls.certResolver = "letsencrypt";
# };
cache = { cache = {
entryPoints = [ "websecure" ]; entryPoints = [ "websecure" ];
rule = "Host(`cache.${domain}`)"; rule = "Host(`cache.${domain}`)";
@@ -308,13 +306,13 @@ in
priority = 10; priority = 10;
tls.certResolver = "letsencrypt"; tls.certResolver = "letsencrypt";
}; };
# paperless = { lubelogger = {
# entryPoints = ["websecure"]; entryPoints = [ "websecure" ];
# rule = "Host(`paperless.${domain}`)"; rule = "Host(`lubelogger.${domain}`)";
# service = "paperless"; service = "lubelogger";
# middlewares = [ "crowdsec" "whitelist-geoblock" ]; middlewares = [ "crowdsec" "whitelist-geoblock" ];
# tls.certResolver = "letsencrypt"; tls.certResolver = "letsencrypt";
# }; };
}; };
}; };
}; };

View File

@@ -18,6 +18,7 @@ let
3000 # gitea 3000 # gitea
3300 3300
9898 9898
6754 # lubelogger
]; ];
in in
{ {