2023-01-25 11:48:44 +00:00
|
|
|
/*
|
|
|
|
|
|
|
|
Name: https://en.wikipedia.org/wiki/Optimus_Prime
|
|
|
|
Why: Created to sell toys so this vm is for games
|
|
|
|
Type: VM
|
|
|
|
Hardware: -
|
|
|
|
From: 2023
|
|
|
|
Role: Game host
|
|
|
|
Notes:
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
{ pkgs, lib, nodes, arion, ... }:
|
|
|
|
let
|
|
|
|
# name of the server, sets teh hostname and record for it
|
|
|
|
name = "optimus";
|
|
|
|
ip_pub = "193.1.99.112";
|
|
|
|
ip_priv = "172.20.20.7";
|
2023-04-20 13:07:26 +00:00
|
|
|
hostname = "${name}.skynet.ie";
|
2023-01-25 11:48:44 +00:00
|
|
|
|
|
|
|
in {
|
|
|
|
imports = [
|
|
|
|
# applications for this particular server
|
|
|
|
../applications/firewall.nix
|
|
|
|
../applications/dns.nix
|
|
|
|
../applications/games.nix
|
2023-05-18 20:59:23 +00:00
|
|
|
|
|
|
|
# for testing
|
|
|
|
../applications/ldap.nix
|
2023-01-25 11:48:44 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
deployment = {
|
|
|
|
targetHost = hostname;
|
|
|
|
targetPort = 22;
|
|
|
|
targetUser = "root";
|
|
|
|
};
|
|
|
|
|
|
|
|
# these two are to be able to add the rules for firewall and dns
|
|
|
|
# open the firewall for this
|
|
|
|
skynet_firewall.forward = [
|
2023-01-28 15:31:16 +00:00
|
|
|
"ip daddr ${ip_pub} tcp dport 80 counter packets 0 bytes 0 accept"
|
|
|
|
"ip daddr ${ip_pub} tcp dport 443 counter packets 0 bytes 0 accept"
|
|
|
|
"ip daddr ${ip_pub} tcp dport 25565 counter packets 0 bytes 0 accept"
|
2023-01-25 11:48:44 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
skynet_dns.records = {
|
|
|
|
external = [
|
|
|
|
"${name} A ${ip_pub}"
|
|
|
|
];
|
|
|
|
cname = [
|
|
|
|
# the games are each going to have a subdomain on this
|
|
|
|
"games CNAME ${name}"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2023-05-18 20:59:23 +00:00
|
|
|
# we use this to pass in teh relevent infomation to the
|
|
|
|
services.skynet_ldap = {
|
|
|
|
enable = true;
|
|
|
|
|
|
|
|
host = {
|
|
|
|
# pass in teh ip (used for firewall)
|
|
|
|
ip = ip_pub;
|
|
|
|
|
|
|
|
# the name is used for dns
|
|
|
|
name = name;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
services.sssd = {
|
|
|
|
enable = true;
|
|
|
|
|
|
|
|
sshAuthorizedKeysIntegration = true;
|
|
|
|
|
|
|
|
config = ''
|
|
|
|
[domain/skynet.ie]
|
2023-05-20 16:26:14 +00:00
|
|
|
debug_level = 4
|
|
|
|
|
2023-05-18 20:59:23 +00:00
|
|
|
id_provider = ldap
|
|
|
|
auth_provider = ldap
|
|
|
|
sudo_provider = ldap
|
2023-05-20 16:26:14 +00:00
|
|
|
|
2023-05-20 02:08:30 +00:00
|
|
|
ldap_uri = ldap://193.1.99.112:389
|
|
|
|
|
|
|
|
ldap_search_base = dc=skynet,dc=ie
|
2023-05-20 16:26:14 +00:00
|
|
|
# thank ye https://medium.com/techish-cloud/linux-user-ssh-authentication-with-sssd-ldap-without-joining-domain-9151396d967d
|
|
|
|
ldap_user_search_base = ou=users,dc=skynet,dc=ie?sub?(|(skMemberOf=cn=skynet-users,ou=groups,dc=skynet,dc=ie))
|
2023-05-20 02:08:30 +00:00
|
|
|
ldap_group_search_base = ou=groups,dc=skynet,dc=ie
|
|
|
|
ldap_sudo_search_base = cn=skynet-admins,ou=groups,dc=skynet,dc=ie
|
|
|
|
|
|
|
|
ldap_group_nesting_level = 5
|
|
|
|
|
2023-05-18 20:59:23 +00:00
|
|
|
cache_credentials = false
|
2023-05-20 16:26:14 +00:00
|
|
|
entry_cache_timeout = 1
|
2023-05-20 14:26:03 +00:00
|
|
|
|
|
|
|
ldap_user_member_of = skMemberOf
|
|
|
|
|
2023-05-18 20:59:23 +00:00
|
|
|
[sssd]
|
|
|
|
config_file_version = 2
|
|
|
|
services = nss, pam, sudo, ssh
|
|
|
|
domains = skynet.ie
|
|
|
|
|
|
|
|
[nss]
|
|
|
|
|
|
|
|
[pam]
|
|
|
|
|
|
|
|
[sudo]
|
|
|
|
|
|
|
|
[autofs]
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2023-01-25 11:48:44 +00:00
|
|
|
}
|