You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
1.7 KiB

{ config, lib, ... }:
let
derpPort = 3478;
in
{
services = {
headscale = {
enable = true;
port = 8085;
address = "127.0.0.1";
settings = {
dns_config = {
override_local_dns = true;
base_domain = "m7.rs";
magic_dns = true;
domains = [ "ts.m7.rs" ];
nameservers = [
"9.9.9.9"
];
};
server_url = "https://tailscale.m7.rs";
metrics_listen_addr = "127.0.0.1:8095";
logtail = {
enabled = false;
};
log = {
level = "warn";
};
ip_prefixes = [
"100.64.0.0/10"
"fdef:6567:bd7a::/48"
];
derp.server = {
enable = true;
region_id = 999;
stun_listen_addr = "0.0.0.0:${toString derpPort}";
};
};
};
nginx.virtualHosts = {
"tailscale.m7.rs" = {
forceSSL = true;
enableACME = true;
locations = {
"/" = {
proxyPass = "http://localhost:${toString config.services.headscale.port}";
proxyWebsockets = true;
};
"/metrics" = {
proxyPass = "http://${config.services.headscale.settings.metrics_listen_addr}/metrics";
};
};
};
"tailscale.misterio.me" = {
forceSSL = true;
enableACME = true;
locations."/".return = "302 https://tailscale.m7.rs$request_uri";
};
};
};
# Derp server
networking.firewall.allowedUDPPorts = [ derpPort ];
environment.systemPackages = [ config.services.headscale.package ];
environment.persistence = {
"/persist".directories = [ "/var/lib/headscale" ];
};
}