mirror of
https://github.com/MagicBOTAlex/nixos-server.git
synced 2026-05-06 10:02:30 +02:00
129 lines
3.1 KiB
Nix
129 lines
3.1 KiB
Nix
{ pkgs, ... }:
|
|
{
|
|
environment.systemPackages = with pkgs; [ virtiofsd ];
|
|
microvm.autostart = [ "kube-daddy" ];
|
|
microvm.vms."kube-daddy" = {
|
|
config = ./kube-daddy.nix;
|
|
};
|
|
|
|
systemd.services.kube-iptable = {
|
|
after = [ "network.target" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
ExecStart = "${pkgs.iptables}/bin/iptables -t nat -I POSTROUTING 1 -s 10.0.0.0/24 -o enp8s0 -j MASQUERADE ";
|
|
RemainAfterExit = true;
|
|
User = "root";
|
|
};
|
|
|
|
stopIfChanged = true;
|
|
};
|
|
|
|
networking = {
|
|
bridges = {
|
|
"br0" = {
|
|
interfaces = [
|
|
"microvm-tap1"
|
|
"microvm-tap2"
|
|
];
|
|
};
|
|
};
|
|
|
|
interfaces.br0.ipv4.addresses = [
|
|
{
|
|
address = "10.0.0.1";
|
|
prefixLength = 24;
|
|
}
|
|
];
|
|
|
|
localCommands = ''
|
|
ip tuntap add dev microvm-tap1 mode tap user root || true
|
|
ip tuntap add dev microvm-tap2 mode tap user root || true
|
|
ip link set microvm-tap1 up
|
|
ip link set microvm-tap2 up
|
|
'';
|
|
|
|
nat = {
|
|
enable = true;
|
|
externalInterface = "enp8s0";
|
|
internalIPs = [ "10.0.0.0/24" ];
|
|
forwardPorts = [
|
|
{
|
|
sourcePort = 8877;
|
|
destination = "10.0.0.2:8888";
|
|
proto = "tcp";
|
|
}
|
|
# { # Access this directly from host by 10.0.0.2:4325
|
|
# sourcePort = 4325; # argocd
|
|
# destination = "10.0.0.2:8080";
|
|
# proto = "tcp";
|
|
# }
|
|
{
|
|
# Netbird
|
|
sourcePort = 3478;
|
|
destination = "10.0.0.2:3478";
|
|
proto = "udp";
|
|
}
|
|
{
|
|
sourcePort = 6443;
|
|
destination = "10.0.0.2:6443";
|
|
proto = "tcp";
|
|
}
|
|
{
|
|
sourcePort = 4123;
|
|
destination = "10.0.0.2:4123";
|
|
proto = "tcp";
|
|
}
|
|
{
|
|
sourcePort = 8472;
|
|
destination = "10.0.0.2:8472";
|
|
proto = "udp";
|
|
}
|
|
{
|
|
sourcePort = 2379;
|
|
destination = "10.0.0.2:2379";
|
|
proto = "udp";
|
|
}
|
|
{
|
|
sourcePort = 2380;
|
|
destination = "10.0.0.2:2380";
|
|
proto = "udp";
|
|
}
|
|
{
|
|
sourcePort = 2379;
|
|
proto = "tcp";
|
|
destination = "10.0.0.2:2379";
|
|
}
|
|
{
|
|
sourcePort = 2380;
|
|
destination = "10.0.0.2:2380";
|
|
proto = "tcp";
|
|
}
|
|
{
|
|
sourcePort = 4001;
|
|
destination = "10.0.0.2:4001";
|
|
proto = "udp";
|
|
}
|
|
{
|
|
sourcePort = 4001;
|
|
destination = "10.0.0.2:4001";
|
|
proto = "tcp";
|
|
}
|
|
# If your app uses UDP (like HTTP/3 or QUIC), add this too:
|
|
# { sourcePort = 8888; destination = "10.0.0.2:8888"; proto = "udp"; }
|
|
];
|
|
};
|
|
|
|
# 5. Update Firewall to trust the Bridge
|
|
firewall.trustedInterfaces = [ "br0" ];
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d /var/lib/microvms/shared 0755 microvm kvm -"
|
|
"d /var/lib/microvms/shared/kube 0755 microvm kvm -"
|
|
"d /var/lib/microvms/shared/docking 0755 microvm kvm -"
|
|
"d /var/lib/microvms/shared/.config 0755 microvm kvm -"
|
|
"d /var/lib/microvms/shared/.local 0755 microvm kvm -"
|
|
];
|
|
}
|