feat: we now have a sso/oauth server ther we can use to connect services to
Some checks failed
Build_Deploy / linter (push) Successful in 11s
Build_Deploy / build (push) Successful in 47s
Build_Deploy / deploy_dns (push) Successful in 1m29s
Build_Deploy / deploy_active (active) (push) Successful in 1m36s
Build_Deploy / deploy_active (active-ext) (push) Failing after 44s
Build_Deploy / deploy_active (active-core) (push) Successful in 6m43s
Some checks failed
Build_Deploy / linter (push) Successful in 11s
Build_Deploy / build (push) Successful in 47s
Build_Deploy / deploy_dns (push) Successful in 1m29s
Build_Deploy / deploy_active (active) (push) Successful in 1m36s
Build_Deploy / deploy_active (active-ext) (push) Failing after 44s
Build_Deploy / deploy_active (active-core) (push) Successful in 6m43s
Currently works with Proxmox (VE and MG) and Forgejo
This commit is contained in:
parent
70263f4b1f
commit
69ec3abb3b
4 changed files with 107 additions and 0 deletions
77
applications/sso.nix
Normal file
77
applications/sso.nix
Normal file
|
@ -0,0 +1,77 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
name = "sso";
|
||||
cfg = config.services.skynet."${name}";
|
||||
in {
|
||||
imports = [
|
||||
];
|
||||
|
||||
options.services.skynet."${name}" = {
|
||||
enable = mkEnableOption "Keycloak server";
|
||||
|
||||
datasource = {
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
url = mkOption {
|
||||
type = types.str;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.skynet.dns.records = [
|
||||
{
|
||||
record = "${name}";
|
||||
r_type = "CNAME";
|
||||
value = config.services.skynet.host.name;
|
||||
}
|
||||
];
|
||||
|
||||
services.skynet.acme.domains = [
|
||||
"${name}.skynet.ie"
|
||||
];
|
||||
|
||||
age.secrets.keycloak_pw.file = ../secrets/keycloak/pw.age;
|
||||
|
||||
services.nginx.virtualHosts = {
|
||||
"${name}.skynet.ie" = {
|
||||
forceSSL = true;
|
||||
useACMEHost = "skynet";
|
||||
locations = {
|
||||
"/" = {
|
||||
proxyPass = "http://localhost:${toString config.services.keycloak.settings.http-port}/";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.postgresql.enable = true;
|
||||
|
||||
services.keycloak = {
|
||||
enable = true;
|
||||
|
||||
initialAdminPassword = "sharky_loves_sso";
|
||||
|
||||
database = {
|
||||
type = "postgresql";
|
||||
createLocally = true;
|
||||
|
||||
username = "keycloak";
|
||||
passwordFile = config.age.secrets.keycloak_pw.path;
|
||||
};
|
||||
|
||||
settings = {
|
||||
hostname = "${name}.skynet.ie";
|
||||
http-port = 38080;
|
||||
proxy-headers = "xforwarded";
|
||||
http-enabled = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -31,6 +31,7 @@ in {
|
|||
../applications/discord.nix
|
||||
../applications/bitwarden/vaultwarden.nix
|
||||
../applications/bitwarden/bitwarden_sync.nix
|
||||
../applications/sso.nix
|
||||
];
|
||||
|
||||
deployment = {
|
||||
|
@ -54,5 +55,7 @@ in {
|
|||
|
||||
# committee/admin services
|
||||
vaultwarden.enable = true;
|
||||
|
||||
sso.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
20
secrets/keycloak/pw.age
Normal file
20
secrets/keycloak/pw.age
Normal file
|
@ -0,0 +1,20 @@
|
|||
age-encryption.org/v1
|
||||
-> ssh-ed25519 V1pwNA /0giXND9iXet45Qdm45LbVQlIN1JYDiIJ1EFpMn+QgM
|
||||
qxCesmTuF6auI9upI0V9rJSiSfzENLLHXIMrDewjvf4
|
||||
-> ssh-ed25519 4PzZog iSvze8+tKCozFbiXcc8BGfQ0qrlVUHNEPc0E13505wY
|
||||
+queuxWzkBHBR7q1pHhBahdSqgKYmpOZ2avC+S4u2tk
|
||||
-> ssh-ed25519 dA0vRg MAQ9mfNn3wwB0hFaV/Wg6nxM1vafopAeJynREcbSvAA
|
||||
VjD1Sy41PEy1TQ5Wc/R9gh1gN/T8y/bUAdItWRz64GQ
|
||||
-> ssh-ed25519 5Nd93w RAh3fYyjUmldiUFkw59/JZDTgZ+jrVd31akiV1UgYGM
|
||||
HvoJTTxM+sCkXIDv0+FtN4ACkTy7tqr/BNeTrR8Jumo
|
||||
-> ssh-ed25519 q8eJgg c4+/61Jhm+/QyV0s3ikemMqhWBRb+ous4kl7Psx5/WU
|
||||
GUqakK0Rrsgg48U9QkcpV20zvQAswk/anoACzORuxiU
|
||||
-> ssh-ed25519 KVr8rw /mBl8ejPUBEwVsDVFcwWfW1i0tIG5JH/OWlRSrRk+TM
|
||||
K3SJpjAm6VDtsBk6HyDdLgbImh4If5Od2qu+sL8Dj9Y
|
||||
-> ssh-ed25519 fia1eQ khFHXNgPUQ39oTpd1lWycrMUin8Ii2pawwFY1vIhRSs
|
||||
2XhIsPrtN+XOBlTR/sEaaG5XCLlsIroYspOaEz+cM2U
|
||||
-> ssh-ed25519 IzAMqA u6W5klKqqGx22yCJx0yGgwPs3vs+iAeH5z36isWL8Co
|
||||
Ij4ncciynno2m9ZKtAegFy5mjAGS86jM7NrCL73LROc
|
||||
--- mINzTQYjXCu318AiJxgsF7az4LUGc9iVS7hcyfFNTQs
|
||||
m½Ö.ØÝ>iõ~‡ 8$§pB†ÀÑ<C380>zhœä:´Ôq“'S£:„LdðšÿÚ
|
||||
¡”
ñŸQQøLÙŠ<0E>Ï{,;ѵÙä~©#
|
|
@ -99,6 +99,10 @@ let
|
|||
bitwarden = [
|
||||
kitt
|
||||
];
|
||||
|
||||
sso = [
|
||||
kitt
|
||||
];
|
||||
in {
|
||||
# nix run github:ryantm/agenix -- -e secret1.age
|
||||
|
||||
|
@ -148,6 +152,9 @@ in {
|
|||
"bitwarden/secret.age".publicKeys = users ++ bitwarden;
|
||||
"bitwarden/details.age".publicKeys = users ++ bitwarden;
|
||||
|
||||
# Keycloak/sso
|
||||
"keycloak/pw.age".publicKeys = users ++ sso;
|
||||
|
||||
# grafana
|
||||
"grafana/pw.age".publicKeys = users ++ grafana;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue