2022-07-19 06:34:33 +02:00
|
|
|
{ config, lib, pkgs, pkgs-unstable, ... }:
|
2021-11-26 00:14:44 +01:00
|
|
|
{
|
|
|
|
|
imports = [
|
|
|
|
|
../environment.nix
|
|
|
|
|
../hardware/hetzner-dedicated-storage1.nix
|
2022-09-16 01:29:46 +02:00
|
|
|
../modules
|
2021-11-26 00:14:44 +01:00
|
|
|
../modules/openssh.nix
|
2021-11-29 02:04:29 +01:00
|
|
|
../modules/mailserver.nix
|
2021-12-07 00:44:36 +01:00
|
|
|
../modules/nginx.nix
|
2021-12-07 01:55:01 +01:00
|
|
|
../modules/jellyfin.nix
|
2021-12-08 01:03:24 +01:00
|
|
|
../modules/stb.nix
|
2021-12-09 09:28:28 +01:00
|
|
|
../modules/monero.nix
|
2021-12-10 03:02:34 +01:00
|
|
|
../modules/torrents.nix
|
2021-12-27 17:17:02 +01:00
|
|
|
../modules/jitsi.nix
|
2022-09-15 03:40:09 +02:00
|
|
|
../modules/binary-cache.nix
|
2022-09-15 21:42:58 +02:00
|
|
|
../modules/grafana.nix
|
|
|
|
|
../modules/monitoring-exporters.nix
|
2021-11-26 00:14:44 +01:00
|
|
|
];
|
2021-12-07 01:55:01 +01:00
|
|
|
|
2021-12-27 04:03:07 +01:00
|
|
|
sops.secrets = {
|
|
|
|
|
borgSshKey = {
|
|
|
|
|
owner = config.services.borgbackup.jobs.data.user;
|
|
|
|
|
key = "borg/client_keys/storage1/private";
|
|
|
|
|
};
|
2022-09-16 01:29:46 +02:00
|
|
|
nixCacheKey = {
|
|
|
|
|
key = "nix/cache_secret_key";
|
|
|
|
|
};
|
2022-11-07 17:32:20 +01:00
|
|
|
dmarcExporterPassword = {
|
|
|
|
|
key = "dmarc_exporter/password";
|
|
|
|
|
};
|
2022-09-16 01:29:46 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
custom = {
|
|
|
|
|
services.binary-cache = {
|
|
|
|
|
enable = true;
|
|
|
|
|
secretKeyFile = config.sops.secrets.nixCacheKey.path;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
services.backup-job = {
|
|
|
|
|
enable = true;
|
|
|
|
|
readWritePaths = [ "/nix/var/data/backup" ];
|
|
|
|
|
preHook = "${pkgs.docker}/bin/docker exec stb-mariadb sh -c 'mysqldump -u stb -pstb stb' > /nix/var/data/backup/stb_mariadb.sql";
|
|
|
|
|
startAt = "04:00";
|
|
|
|
|
sshKey = config.sops.secrets.borgSshKey.path;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
services.monit = {
|
|
|
|
|
enable = true;
|
|
|
|
|
additionalConfig = ''
|
|
|
|
|
check host nextcloud with address cloud.banditlair.com
|
|
|
|
|
if failed port 443 protocol https with timeout 20 seconds then alert
|
|
|
|
|
check host anderia-wiki with address anderia.banditlair.com
|
|
|
|
|
if failed port 443 protocol https with timeout 20 seconds then alert
|
|
|
|
|
check host arkadia-wiki with address arkadia.banditlair.com
|
|
|
|
|
if failed port 443 protocol https with timeout 20 seconds then alert
|
|
|
|
|
check host website-marie with address osteopathie.froidmont.org
|
|
|
|
|
if failed port 443 protocol https with timeout 20 seconds then alert
|
|
|
|
|
check host webmail with address webmail.banditlair.com
|
|
|
|
|
if failed port 443 protocol https with timeout 20 seconds then alert
|
|
|
|
|
|
|
|
|
|
check program raid-md127 with path "${pkgs.mdadm}/bin/mdadm --misc --detail --test /dev/md127"
|
|
|
|
|
if status != 0 then alert
|
2022-10-30 01:05:16 +02:00
|
|
|
|
|
|
|
|
check host osteoview with address osteoview.app
|
2022-10-30 01:53:58 +02:00
|
|
|
if failed
|
|
|
|
|
port 443
|
|
|
|
|
protocol https
|
|
|
|
|
status = 200
|
|
|
|
|
request "/api/_health"
|
|
|
|
|
with timeout 5 seconds
|
2022-10-30 02:47:29 +02:00
|
|
|
content = '[{"]Healthy["]:[{}}]'
|
2022-10-30 01:53:58 +02:00
|
|
|
then alert
|
2022-09-16 01:29:46 +02:00
|
|
|
'';
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
services.gitlab-runner.enable = true;
|
|
|
|
|
services.openssh.enable = true;
|
2021-12-27 04:03:07 +01:00
|
|
|
};
|
|
|
|
|
|
2022-11-07 17:32:20 +01:00
|
|
|
services.prometheus.exporters.dmarc = {
|
|
|
|
|
enable = true;
|
|
|
|
|
debug = true;
|
|
|
|
|
imap = {
|
|
|
|
|
host = "mail.banditlair.com";
|
|
|
|
|
username = "paultrial@banditlair.com";
|
|
|
|
|
passwordFile = "/run/credentials/prometheus-dmarc-exporter.service/password";
|
|
|
|
|
};
|
|
|
|
|
folders = {
|
|
|
|
|
inbox = "dmarc_reports";
|
|
|
|
|
done = "Archives.dmarc_report_processed";
|
|
|
|
|
error = "Archives.dmarc_report_error";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
systemd.services.prometheus-dmarc-exporter.serviceConfig.LoadCredential =
|
|
|
|
|
"password:${config.sops.secrets.dmarcExporterPassword.path}";
|
|
|
|
|
|
2021-12-09 09:28:28 +01:00
|
|
|
networking.firewall.allowedTCPPorts = [ 80 443 18080 ];
|
2022-09-15 21:42:58 +02:00
|
|
|
networking.firewall.interfaces.vlan4001.allowedTCPPorts = [ config.services.loki.configuration.server.http_listen_port ];
|
2021-12-10 03:02:34 +01:00
|
|
|
|
|
|
|
|
networking.nat.enable = true;
|
|
|
|
|
networking.nat.internalInterfaces = [ "ve-+" ];
|
|
|
|
|
networking.nat.externalInterface = "enp2s0";
|
|
|
|
|
|
|
|
|
|
users.users.www-data = {
|
|
|
|
|
uid = 993;
|
2021-12-26 23:01:12 +01:00
|
|
|
isNormalUser = true;
|
2021-12-10 03:02:34 +01:00
|
|
|
group = config.users.groups.www-data.name;
|
2021-12-26 23:01:12 +01:00
|
|
|
openssh.authorizedKeys.keys = [
|
|
|
|
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDc7kX8riTSxRNwqIwZ/XwTKHzl1C786TbeU5qx2gTidR4H56+GxA5jrpWLZrcu0MRBu11/URzyGrJGxdBps6Hu/Arp482Y5OxZeDUzD+tZJa79NylG9GQFMTmGLjH3IqBbmgx91WdYsLmgXjz0f+NxANzmgvzRt2IolHc4hxIkrDickfT2dT3uVtaJOGBsLC2BxVT0rCHFmvjB7+qnJ4jvC8b/V+F6+hijom1kUq9zhZzWEg8H5imR0UoXrXLetxY+PGAqKkDLm/pNQ/cUSX4FaKZ5bpGYed7ioSeRHW3xIh4zHhWbiyBPsrjyOmEnxNL5f4o4KgHfUDY0DpVrhs+6JPJTsMfsyb0GciqSYR5PCL73zY+IEo+ZHdGubib4G5+t1UqaK+ZZGqW+a7DLHMFR6tr3I/b/Jz8KHjYztdx/ZHS3CA2+17JgLG/ycq+a3ETBkIGSta5I4BUfcbVvkxKq7A99aODDyYc+jMp7gbQlwKhdHcAoVcWRKqck/sL0Qnb4e+BoUm+ajxRo6DNcpGL5LLtD/i1NuWjFugh6q1KcgXP/Bc11Owhqg3nlIUMUoVc2/h/9Er9Eaplv27rw180ItGR1UEQ4gQHCGQB6vCF5NRPjAS5y515UcDu+rceFIr1W15IZvhMrcphb8clu8E2us68ghas7ZgXKU2xypsaGPw== sshfs-2021-07-16"
|
|
|
|
|
];
|
2021-12-10 03:02:34 +01:00
|
|
|
};
|
|
|
|
|
users.groups.www-data = { gid = 991; };
|
2021-12-26 19:42:23 +01:00
|
|
|
|
|
|
|
|
users.users.steam = {
|
|
|
|
|
isNormalUser = true;
|
|
|
|
|
group = config.users.groups.steam.name;
|
|
|
|
|
};
|
|
|
|
|
users.groups.steam = { };
|
2021-12-27 04:03:07 +01:00
|
|
|
|
2022-02-22 18:47:38 +01:00
|
|
|
services.minecraft-server = {
|
2023-03-30 12:48:06 +02:00
|
|
|
enable = false;
|
2022-07-19 06:34:33 +02:00
|
|
|
package = pkgs-unstable.minecraft-server;
|
2022-02-22 18:47:38 +01:00
|
|
|
eula = true;
|
|
|
|
|
openFirewall = true;
|
|
|
|
|
declarative = true;
|
|
|
|
|
serverProperties = {
|
2022-06-09 10:11:32 +02:00
|
|
|
online-mode = true;
|
2022-02-22 18:47:38 +01:00
|
|
|
force-gamemode = true;
|
2022-08-07 23:03:54 +02:00
|
|
|
white-list = true;
|
2022-02-22 18:47:38 +01:00
|
|
|
};
|
2022-06-09 10:11:32 +02:00
|
|
|
whitelist = {
|
|
|
|
|
paulplay15 = "1d5abc95-2fdb-4dcb-98e8-4fb5a0fba953";
|
|
|
|
|
Nixo = "ec79d755-c3c9-4307-bb66-b58b7c74422c";
|
|
|
|
|
Xavier1258 = "e9059cf3-00ef-47a3-92ee-4e4a3fea0e6d";
|
|
|
|
|
denisjulien3333 = "3c93e1a2-42d8-4a51-9fe3-924c8e8d5b07";
|
|
|
|
|
};
|
2022-08-07 23:03:54 +02:00
|
|
|
dataDir = "/nix/var/data/minecraft";
|
2022-02-22 18:47:38 +01:00
|
|
|
};
|
2023-03-30 12:48:06 +02:00
|
|
|
|
|
|
|
|
# virtualisation.oci-containers.containers = {
|
|
|
|
|
# "minecraft" = {
|
|
|
|
|
# image = "itzg/minecraft-server";
|
|
|
|
|
# environment = {
|
|
|
|
|
# EULA = "TRUE";
|
|
|
|
|
# VERSION = "1.18.2";
|
|
|
|
|
# TYPE = "AUTO_CURSEFORGE";
|
|
|
|
|
# MEMORY = "4G";
|
|
|
|
|
# CF_SLUG = "modecube"; # https://www.curseforge.com/minecraft/modpacks/modecube/files
|
|
|
|
|
# };
|
|
|
|
|
# ports = [ "25565:25565" ];
|
|
|
|
|
# volumes = [ "/nix/var/data/minecraft-modded:/data" ];
|
|
|
|
|
# autoStart = true;
|
|
|
|
|
# };
|
|
|
|
|
# };
|
2021-11-26 00:14:44 +01:00
|
|
|
}
|