nixos-config/modules/tandoor.nix

71 lines
1.8 KiB
Nix
Raw Normal View History

2022-07-18 00:53:09 +02:00
{ config, lib, ... }:
let
2023-01-31 16:48:31 +01:00
cfg = import ./vars.nix;
pg_user = cfg.tandoor.db;
port = cfg.tandoor.port;
domain = cfg.tandoor.domain;
2022-07-18 00:53:09 +02:00
in
{
virtualisation.oci-containers.containers.tandoor = {
2023-01-31 16:48:31 +01:00
image = "docker.io/vabene1111/recipes";
2022-07-18 00:53:09 +02:00
environment = {
DEBUG = "0";
DB_ENGINE = "django.db.backends.postgresql";
2023-01-31 16:48:31 +01:00
POSTGRES_HOST = cfg.podman.hostIP;
2022-07-18 00:53:09 +02:00
POSTGRES_PORT = "5432";
POSTGRES_USER = pg_user;
POSTGRES_DB = pg_user;
POSTGRES_PASSWORD = builtins.readFile /etc/nixos/keys/tandoor-db;
SECRET_KEY = builtins.readFile /etc/nixos/keys/tandoor-secret;
};
ports = [
2023-01-31 16:48:31 +01:00
"${port}:${port}"
2022-07-18 00:53:09 +02:00
];
2023-01-31 16:48:31 +01:00
extraOptions = cfg.podman.extraOptions;
2022-07-18 00:53:09 +02:00
volumes = [
"/var/lib/tandoor/mediafiles:/opt/recipes/mediafiles"
"/var/lib/tandoor/staticfiles:/opt/recipes/staticfiles"
];
};
services.postgresql = {
ensureDatabases = [ pg_user ];
ensureUsers = [
{
name = pg_user;
ensurePermissions = {
"DATABASE ${pg_user}" = "ALL PRIVILEGES";
};
}
];
authentication = "host tandoor tandoor 10.88.0.0/16 md5";
};
services.postgresqlBackup.databases = [ "tandoor" ];
2022-07-18 00:53:09 +02:00
networking.firewall.interfaces.cni-podman0.allowedTCPPorts = [ 5432 ];
services.nginx.virtualHosts."${domain}" = {
forceSSL = true;
enableACME = true;
locations = {
"/" = {
2023-01-31 16:48:31 +01:00
proxyPass = "http://127.0.0.1:${port}";
2022-07-18 00:53:09 +02:00
extraConfig = ''
2022-10-30 15:51:48 +01:00
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
2023-01-31 16:48:31 +01:00
proxy_redirect http://127.0.0.1:${port} https://${domain};
2022-10-30 15:51:48 +01:00
access_log /var/log/nginx/${domain}_access.log;
error_log /var/log/nginx/${domain}_error.log;
2022-07-18 00:53:09 +02:00
'';
};
};
};
}
# vim: set et ts=2 sw=2 ai: