Merge branch 'secrets' into 'main'
Reorganize secrets See merge request cy/infra!1
This commit is contained in:
commit
696471d777
26 changed files with 471 additions and 90 deletions
|
@ -1,4 +1,8 @@
|
|||
{pkgs, ...}: {
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
services.borgbackup.jobs = {
|
||||
crashRsync = {
|
||||
paths = ["/root" "/home" "/var/backup" "/var/lib" "/var/log" "/opt" "/etc" "/vw-data"];
|
||||
|
@ -6,7 +10,7 @@
|
|||
repo = "de3911@de3911.rsync.net:borg/crash";
|
||||
encryption = {
|
||||
mode = "repokey-blake2";
|
||||
passCommand = "cat /run/secrets/borg/crash";
|
||||
passCommand = "cat ${config.sops.secrets."borg/rsyncnet".path}";
|
||||
};
|
||||
environment = {
|
||||
BORG_RSH = "ssh -i /home/yt/.ssh/id_ed25519";
|
||||
|
@ -18,7 +22,7 @@
|
|||
# warnings are often not that serious
|
||||
failOnWarnings = false;
|
||||
postHook = ''
|
||||
${pkgs.curl}/bin/curl -u $(cat /run/secrets/ntfy) -d "chunk: backup completed with exit code: $exitStatus
|
||||
${pkgs.curl}/bin/curl -u $(cat ${config.sops.secrets."services/ntfy".path}) -d "chunk: backup completed with exit code: $exitStatus
|
||||
$(journalctl -u borgbackup-job-crashRsync.service|tail -n 5)" \
|
||||
https://ntfy.cything.io/chunk
|
||||
'';
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
|
@ -24,38 +23,57 @@
|
|||
./tor.nix
|
||||
];
|
||||
|
||||
sops.defaultSopsFile = ./secrets.yaml;
|
||||
sops.age.keyFile = "/root/.config/sops/age/keys.txt";
|
||||
sops.secrets = {
|
||||
"borg/crash" = {};
|
||||
"ntfy" = {};
|
||||
"rclone" = {};
|
||||
"vaultwarden" = {};
|
||||
"caddy" = {};
|
||||
"hedgedoc" = {};
|
||||
"wireguard/private" = {};
|
||||
"wireguard/psk" = {};
|
||||
"wireguard/pskphone" = {};
|
||||
"miniflux" = {};
|
||||
"borg/rsyncnet" = {
|
||||
sopsFile = ../../secrets/borg/chunk.yaml;
|
||||
};
|
||||
"services/ntfy" = {
|
||||
sopsFile = ../../secrets/services/ntfy.yaml;
|
||||
};
|
||||
"rclone/env" = {
|
||||
sopsFile = ../../secrets/rclone/chunk.yaml;
|
||||
};
|
||||
"vaultwarden/env" = {
|
||||
sopsFile = ../../secrets/services/vaultwarden.yaml;
|
||||
};
|
||||
"caddy/env" = {
|
||||
sopsFile = ../../secrets/services/caddy.yaml;
|
||||
};
|
||||
"hedgedoc/env" = {
|
||||
sopsFile = ../../secrets/services/hedgedoc.yaml;
|
||||
};
|
||||
"wireguard/private" = {
|
||||
sopsFile = ../../secrets/wireguard/chunk.yaml;
|
||||
};
|
||||
"wireguard/psk-yt" = {
|
||||
sopsFile = ../../secrets/wireguard/chunk.yaml;
|
||||
};
|
||||
"wireguard/psk-phone" = {
|
||||
sopsFile = ../../secrets/wireguard/chunk.yaml;
|
||||
};
|
||||
"miniflux/env" = {
|
||||
sopsFile = ../../secrets/services/miniflux.yaml;
|
||||
};
|
||||
"gitlab/root" = {
|
||||
sopsFile = ../../secrets/services/gitlab.yaml;
|
||||
owner = config.users.users.git.name;
|
||||
group = config.users.users.git.group;
|
||||
};
|
||||
"gitlab/secret" = {
|
||||
sopsFile = ../../secrets/services/gitlab.yaml;
|
||||
owner = config.users.users.git.name;
|
||||
group = config.users.users.git.group;
|
||||
};
|
||||
"gitlab/jws" = {
|
||||
sopsFile = ../../secrets/services/gitlab.yaml;
|
||||
owner = config.users.users.git.name;
|
||||
group = config.users.users.git.group;
|
||||
};
|
||||
"gitlab/db" = {
|
||||
sopsFile = ../../secrets/services/gitlab.yaml;
|
||||
owner = config.users.users.git.name;
|
||||
group = config.users.users.git.group;
|
||||
};
|
||||
"gitlab/otp" = {
|
||||
sopsFile = ../../secrets/services/gitlab.yaml;
|
||||
owner = config.users.users.git.name;
|
||||
group = config.users.users.git.group;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -148,7 +166,7 @@
|
|||
services.caddy = {
|
||||
enable = true;
|
||||
configFile = ./Caddyfile;
|
||||
environmentFile = "/run/secrets/caddy";
|
||||
environmentFile = config.sops.secrets."caddy/env".path;
|
||||
logFormat = lib.mkForce "level INFO";
|
||||
};
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{...}: {
|
||||
{config, ...}: {
|
||||
services.gitlab = {
|
||||
enable = true;
|
||||
https = true;
|
||||
|
@ -10,12 +10,12 @@
|
|||
sidekiq.concurrency = 10;
|
||||
databaseUsername = "git"; # needs to be same as user
|
||||
initialRootEmail = "hi@cything.io";
|
||||
initialRootPasswordFile = "/run/secrets/gitlab/root";
|
||||
initialRootPasswordFile = config.sops.secrets."gitlab/root".path;
|
||||
secrets = {
|
||||
secretFile = "/run/secrets/gitlab/secret";
|
||||
otpFile = "/run/secrets/gitlab/otp";
|
||||
jwsFile = "/run/secrets/gitlab/jws";
|
||||
dbFile = "/run/secrets/gitlab/db";
|
||||
secretFile = config.sops.secrets."gitlab/secret".path;
|
||||
otpFile = config.sops.secrets."gitlab/otp".path;
|
||||
jwsFile = config.sops.secrets."gitlab/jws".path;
|
||||
dbFile = config.sops.secrets."gitlab/db".path;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{...}: {
|
||||
{config, ...}: {
|
||||
services.hedgedoc = {
|
||||
enable = true;
|
||||
environmentFile = "/run/secrets/hedgedoc";
|
||||
environmentFile = config.sops.secrets."hedgedoc/env".path;
|
||||
settings = {
|
||||
db = {
|
||||
username = "hedgedoc";
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{...}: {
|
||||
{config, ...}: {
|
||||
services.miniflux = {
|
||||
enable = true;
|
||||
adminCredentialsFile = "/run/secrets/miniflux";
|
||||
adminCredentialsFile = config.sops.secrets."miniflux/env".path;
|
||||
config = {
|
||||
PORT = 8080;
|
||||
BASE_URL = "https://rss.cything.io";
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
{pkgs, ...}: {
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
systemd.services.immich-mount = {
|
||||
enable = true;
|
||||
description = "Mount the immich data remote";
|
||||
|
@ -10,7 +14,7 @@
|
|||
ExecStartPre = "/usr/bin/env mkdir -p /mnt/photos";
|
||||
ExecStart = "${pkgs.rclone}/bin/rclone mount --config /home/yt/.config/rclone/rclone.conf --transfers=32 --dir-cache-time 720h --poll-interval 0 --vfs-cache-mode writes photos: /mnt/photos ";
|
||||
ExecStop = "/bin/fusermount -u /mnt/photos";
|
||||
EnvironmentFile = "/run/secrets/rclone";
|
||||
EnvironmentFile = config.sops.secrets."rclone/env".path;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -24,7 +28,7 @@
|
|||
Type = "notify";
|
||||
ExecStart = "${pkgs.rclone}/bin/rclone mount --config /home/yt/.config/rclone/rclone.conf --uid 33 --gid 0 --allow-other --file-perms 0770 --dir-perms 0770 --transfers=32 rsyncnet:nextcloud /mnt/nextcloud";
|
||||
ExecStop = "/bin/fusermount -u /mnt/nextcloud";
|
||||
EnvironmentFile = "/run/secrets/rclone";
|
||||
EnvironmentFile = config.sops.secrets."rclone/env".path;
|
||||
};
|
||||
};
|
||||
programs.fuse.userAllowOther = true;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{...}: {
|
||||
{config, ...}: {
|
||||
services.vaultwarden = {
|
||||
enable = true;
|
||||
dbBackend = "postgresql";
|
||||
environmentFile = "/run/secrets/vaultwarden";
|
||||
environmentFile = config.sops.secrets."vaultwarden/env".path;
|
||||
config = {
|
||||
ROCKET_ADDRESS = "127.0.0.1";
|
||||
ROCKET_PORT = "8081";
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
{pkgs, ...}: {
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
networking.nat = {
|
||||
enable = true;
|
||||
enableIPv6 = true;
|
||||
|
@ -9,7 +13,7 @@
|
|||
networking.wg-quick.interfaces.wg0 = {
|
||||
address = ["10.0.0.1/24" "fdc9:281f:04d7:9ee9::1/64"];
|
||||
listenPort = 51820;
|
||||
privateKeyFile = "/run/secrets/wireguard/private";
|
||||
privateKeyFile = config.sops.secrets."wireguard/private".path;
|
||||
postUp = ''
|
||||
${pkgs.iptables}/bin/iptables -A FORWARD -i wg0 -j ACCEPT
|
||||
${pkgs.iptables}/bin/iptables -A FORWARD -o wg0 -j ACCEPT
|
||||
|
@ -30,12 +34,12 @@
|
|||
{
|
||||
publicKey = "qUhWoTPVC7jJdDEJLYY92OeiwPkaf8I5pv5kkMcSW3g=";
|
||||
allowedIPs = ["10.0.0.2/32" "fdc9:281f:04d7:9ee9::2/128"];
|
||||
presharedKeyFile = "/run/secrets/wireguard/psk";
|
||||
presharedKeyFile = config.sops.secrets."wireguard/psk-yt".path;
|
||||
}
|
||||
{
|
||||
publicKey = "JIGi60wzLw717Cim1dSFoLCdJz5rePa5AIFfuisJI0k=";
|
||||
allowedIPs = ["10.0.0.3/32" "fdc9:281f:04d7:9ee9::3/128"];
|
||||
presharedKeyFile = "/run/secrets/wireguard/pskphone";
|
||||
presharedKeyFile = config.sops.secrets."wireguard/psk-phone".path;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
keys:
|
||||
- &primary age1sy0at69err83qyml2vqu8xvwjccfws447aaadfvacj2qluw3p45s2mtrw8
|
||||
creation_rules:
|
||||
- path_regex: secrets.yaml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *primary
|
|
@ -1,7 +1,4 @@
|
|||
{
|
||||
inputs,
|
||||
outputs,
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
|
@ -11,15 +8,20 @@
|
|||
../common.nix
|
||||
];
|
||||
|
||||
sops.defaultSopsFile = ./secrets.yaml;
|
||||
sops.defaultSopsFormat = "yaml";
|
||||
sops.age.keyFile = "/root/.config/sops/age/keys.txt";
|
||||
sops.secrets = {
|
||||
"borg/yt" = {};
|
||||
"azure" = {};
|
||||
"ntfy" = {};
|
||||
"wireguard/private" = {};
|
||||
"wireguard/psk" = {};
|
||||
"borg/rsyncnet" = {
|
||||
sopsFile = ../../secrets/borg/yt.yaml;
|
||||
};
|
||||
"services/ntfy" = {
|
||||
sopsFile = ../../secrets/services/ntfy.yaml;
|
||||
};
|
||||
"wireguard/private" = {
|
||||
sopsFile = ../../secrets/wireguard/yt.yaml;
|
||||
};
|
||||
"wireguard/psk" = {
|
||||
sopsFile = ../../secrets/wireguard/yt.yaml;
|
||||
};
|
||||
};
|
||||
|
||||
boot = {
|
||||
|
@ -183,7 +185,7 @@
|
|||
repo = "de3911@de3911.rsync.net:borg/yt";
|
||||
encryption = {
|
||||
mode = "repokey-blake2";
|
||||
passCommand = "cat /run/secrets/borg/yt";
|
||||
passCommand = ''cat ${config.sops.secrets."borg/rsyncnet".path}'';
|
||||
};
|
||||
environment = {
|
||||
BORG_RSH = "ssh -i /home/yt/.ssh/id_ed25519";
|
||||
|
@ -195,7 +197,7 @@
|
|||
# warnings are often not that serious
|
||||
failOnWarnings = false;
|
||||
postHook = ''
|
||||
${pkgs.curl}/bin/curl -u $(cat /run/secrets/ntfy) -d "ytnixRsync: backup completed with exit code: $exitStatus
|
||||
${pkgs.curl}/bin/curl -u $(cat ${config.sops.secrets."services/ntfy".path}) -d "ytnixRsync: backup completed with exit code: $exitStatus
|
||||
$(journalctl -u borgbackup-job-ytnixRsync.service|tail -n 5)" \
|
||||
https://ntfy.cything.io/chunk
|
||||
'';
|
||||
|
@ -284,14 +286,14 @@
|
|||
# wireguard setup
|
||||
networking.wg-quick.interfaces.wg0 = {
|
||||
address = ["10.0.0.2/24" "fdc9:281f:04d7:9ee9::2/64"];
|
||||
privateKeyFile = "/run/secrets/wireguard/private";
|
||||
privateKeyFile = config.sops.secrets."wireguard/private".path;
|
||||
peers = [
|
||||
{
|
||||
publicKey = "a16/F/wP7HQIUtFywebqPSXQAktPsLgsMLH9ZfevMy0=";
|
||||
allowedIPs = ["0.0.0.0/0" "::/0"];
|
||||
endpoint = "31.59.129.225:51820";
|
||||
persistentKeepalive = 25;
|
||||
presharedKeyFile = "/run/secrets/wireguard/psk";
|
||||
presharedKeyFile = config.sops.secrets."wireguard/psk".path;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
|
|
@ -1,29 +0,0 @@
|
|||
borg:
|
||||
yt: ENC[AES256_GCM,data:CGcdcA9LnDDlTYJwsT25uY9h70yJtKhxgA==,iv:F25VTezkd4RQd7BZ3DD39hPiPj+Z3H01IgPhCGUQ5aM=,tag:mxLPXR/ffBXkByk1R1PYvQ==,type:str]
|
||||
restic:
|
||||
azure-yt: ENC[AES256_GCM,data:s8TJ5cNVW2Jr7kyul8mrBGwdLoTlNTb2MfpZgPU=,iv:sC0DbgFbFl6vvLqwOFDwRa3nabrIWxOTuz7GXn17IHk=,tag:2MYprYgNhh1aFlzuyw5eGQ==,type:str]
|
||||
azure: ENC[AES256_GCM,data:UdHmasRElCFC66dxnnGTOw6vgOzrOIMiSLsczK0Qew2WBdZUKVnRTfSCxQrB7P8k+j3N2CDt5Y4GXvf9GVFrWCMOInOqYXcyycGXsdli2DbqpXTa3f13ykvc/aoKyw3YuFQdrNci3Kae9PYZ4v5f7fH8n4WgOKuYj3mO9k7WHxM1JBzYRRZP41Jghnb9SqVhl9UXVPI5ONBd6JI/FiezSMZPYC2FxNgQ7zHUQJ7qQ6aJTgRljslJK9I=,iv:bRoYEA1hbEXRG7PoU7Dfba9uRu3cAqfeuvSIfavZZ8M=,tag:cHXUe/njZNoG6EuHYYz0Yg==,type:str]
|
||||
ntfy: ENC[AES256_GCM,data:ZfTVhdzA1+L3B+g7tw==,iv:1dXDqYi5/zBQ9iphzjn/GHGDcl90J1NYHvHQpTsVPlg=,tag:RfB1/Zz9ITJQV89cuk9OcQ==,type:str]
|
||||
wireguard:
|
||||
private: ENC[AES256_GCM,data:hPfJis6gbPPguuhNBViiZDmeFSaUXsgRrCGrhTFzbySIytVuaieU0BJSJQo=,iv:tYU41JTeB7Y50RQr1b+zGCgB5voZec2Vfmd350J1Tgc=,tag:aFMZoJhMToJDuuV8dc5Acg==,type:str]
|
||||
psk: ENC[AES256_GCM,data:NhQ1lYFpjTpqbkhYyEpEcBTf6vewSeGevUnvCmruoZMSGA2ZWs+le8a0tAA=,iv:aBeVhzUwzBgochk4vtdqnUv61dZ5jELh28amx8XqyFI=,tag:9TvGx+sJaicX52FitOpOdA==,type:str]
|
||||
sops:
|
||||
kms: []
|
||||
gcp_kms: []
|
||||
azure_kv: []
|
||||
hc_vault: []
|
||||
age:
|
||||
- recipient: age1sy0at69err83qyml2vqu8xvwjccfws447aaadfvacj2qluw3p45s2mtrw8
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhUmhsRDljYWJLS2tzUC90
|
||||
a1oxZGZBUy9LaFpJeTF2MmZWQnl1NU0vQkc0CklnTGszaHRCRW5GYUU1OU9NVjVH
|
||||
SW02OWVXNDNSMTFyV2NUU2xTV1dlTGMKLS0tIGpKT3lQd3I0T0xEMWo2ekd1MmM3
|
||||
a1MwYjB0Tm03bzJnWTdoZ01KbXBPUkUKUr6hOsdZDJK6bFyEnBf4Vkms8EJsIvZY
|
||||
ML481g9d9Vlm5x7X74nUcWemFSzttSdWEM3Y/IOHpXDbvC/Tbw+z7Q==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2024-12-14T23:07:47Z"
|
||||
mac: ENC[AES256_GCM,data:GQUbR/ApVo6E5jqkGo79GDkRv7nj7Sa16ROCTg0uYO0xDmv9h/bPWBTUOfsU0G/0g3OvohLkBbmYA+hMx24xlLQzQkh8Z3dyAn9CcAJ2j9JLY7qHtSBpvafyPptvKzmPU0mnQpShgqYPCUhF6A2B2YAAvW+TknBih7eiKKeidkc=,iv:XLKIad/LZWuWUrrcXtF0UyNccLhoB0VSWXYCGDq/7Uc=,tag:lNyMV8Ses28gOj+KINem5A==,type:str]
|
||||
pgp: []
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.9.2
|
Loading…
Add table
Add a link
Reference in a new issue