nixos/modules/ttrss-postgres/default.nix

110 lines
3.2 KiB
Nix
Raw Normal View History

2023-05-29 16:21:23 +02:00
{ domain }: { config, inputs, ... }:
2022-11-10 23:52:02 +01:00
let
ttrssEnvironment = {
TZ = "Europe/Zurich";
TTRSS_DB_USER = "ttrss";
TTRSS_DB_NAME = "ttrssdb";
TTRSS_DB_HOST = "host.docker.internal";
TTRSS_SELF_URL_PATH = "https://${domain}/tt-rss";
TTRSS_SESSION_COOKIE_LIFETIME = "604800";
TTRSS_PLUGINS = "af_comics, af_readability, auth_internal, hotkeys_swap_jk, nginx_xaccel";
2022-11-10 23:52:02 +01:00
};
2023-02-27 11:50:59 +01:00
# https://github.com/Nebucatnetzer/tt-rss-aarch64/pkgs/container/tt-rss-aarch64%2Fttrss-fpm-pgsql-static/versions
2023-05-22 15:13:27 +02:00
ttrssImage = "ghcr.io/nebucatnetzer/tt-rss-aarch64/ttrss-fpm-pgsql-static@sha256:4842ca145ad3d57b1b627fdf9ea4349aeeda9e31134deee1e6a64694f6825754";
2022-11-12 18:08:20 +01:00
ttrssService = "${config.virtualisation.oci-containers.backend}-ttrss";
2022-11-10 23:52:02 +01:00
in
2022-11-02 21:38:40 +01:00
{
imports = [
2023-05-29 16:21:23 +02:00
(import "${inputs.self}/modules/nginx-fpm" {
2022-11-10 23:35:49 +01:00
dataDir = "/var/lib/ttrss/html";
2023-05-29 16:21:23 +02:00
inherit domain;
2022-11-02 21:38:40 +01:00
})
2023-05-29 16:21:23 +02:00
"${inputs.self}/modules/postgresql"
2022-11-02 21:38:40 +01:00
];
2023-05-29 16:21:23 +02:00
age.secrets.ttrssEnv.file = "${inputs.self}/scrts/ttrss_env.age";
2022-11-02 21:38:40 +01:00
services.postgresql = {
authentication = "host ttrssdb ttrss 172.16.0.0/12 scram-sha-256";
2022-11-02 21:38:40 +01:00
ensureDatabases = [ "ttrssdb" ];
ensureUsers = [{
name = "ttrss";
ensurePermissions = {
"DATABASE ttrssdb " = "ALL PRIVILEGES";
};
}];
2022-11-02 21:38:40 +01:00
};
2023-05-29 17:10:15 +02:00
services.az-docker.enable = true;
2022-11-02 21:38:40 +01:00
virtualisation.oci-containers = {
2022-11-03 09:37:37 +01:00
backend = "docker";
2022-11-02 21:38:40 +01:00
containers."ttrss" = {
2023-02-27 11:47:31 +01:00
image = ttrssImage;
2022-11-10 23:35:49 +01:00
autoStart = true;
2022-11-10 23:52:02 +01:00
environment = ttrssEnvironment;
environmentFiles = [ config.age.secrets.ttrssEnv.path ];
ports = [
"9000:9000"
];
volumes = [
"/var/lib/ttrss/html:/var/www/html"
"/etc/localtime:/etc/localtime:ro"
2022-11-10 23:52:02 +01:00
];
2023-03-03 17:57:48 +01:00
extraOptions = [
"--add-host=host.docker.internal:host-gateway"
"--log-opt=tag='ttrss'"
];
2022-11-10 23:52:02 +01:00
};
containers."backup" = {
2023-02-27 11:47:31 +01:00
image = ttrssImage;
2022-11-10 23:52:02 +01:00
autoStart = true;
environment = ttrssEnvironment;
environmentFiles = [ config.age.secrets.ttrssEnv.path ];
volumes = [
"/var/lib/ttrss/html:/var/www/html"
"/var/lib/ttrss/backup:/backup"
"/etc/localtime:/etc/localtime:ro"
2022-11-10 23:52:02 +01:00
];
2022-11-10 23:58:19 +01:00
cmd = [ "/opt/tt-rss/dcron.sh" "-f" ];
2023-03-03 17:57:48 +01:00
extraOptions = [
"--add-host=host.docker.internal:host-gateway"
"--log-opt=tag='ttrss-backup'"
];
2022-11-10 23:52:02 +01:00
};
containers."updater" = {
2023-02-27 11:47:31 +01:00
image = ttrssImage;
2022-11-10 23:52:02 +01:00
autoStart = true;
environment = ttrssEnvironment;
2022-11-03 23:36:21 +01:00
environmentFiles = [ config.age.secrets.ttrssEnv.path ];
2022-11-02 21:38:40 +01:00
volumes = [
2022-11-10 23:35:49 +01:00
"/var/lib/ttrss/html:/var/www/html"
"/etc/localtime:/etc/localtime:ro"
2022-11-02 21:38:40 +01:00
];
2022-11-10 23:52:02 +01:00
cmd = [ "/opt/tt-rss/updater.sh" ];
dependsOn = [ "ttrss" ];
2023-03-03 17:57:48 +01:00
extraOptions = [
"--add-host=host.docker.internal:host-gateway"
"--log-opt=tag='ttrss-updater'"
];
2022-11-02 21:38:40 +01:00
};
};
services.nginx.virtualHosts."${domain}".locations = {
"/".extraConfig = ''
try_files $uri $uri/ = 404;
'';
"/tt-rss/cache".extraConfig = ''
aio threads;
internal;
'';
"/tt-rss/backups".extraConfig = ''
internal;
'';
};
systemd.services.${ttrssService}.after = [ "nginx.service" ];
systemd.services.postgresql.after = [ "${ttrssService}.service" ];
2022-11-02 21:38:40 +01:00
}
2022-11-13 14:04:30 +01:00