parent
639c7fd352
commit
77ac1db698
@ -0,0 +1,10 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.tailscale.enable = true;
|
||||||
|
networking.firewall = {
|
||||||
|
checkReversePath = "loose";
|
||||||
|
trustedInterfaces = [ "tailscale0" ];
|
||||||
|
allowedUDPPorts = [ config.services.tailscale.port ];
|
||||||
|
};
|
||||||
|
}
|
@ -1,48 +1,37 @@
|
|||||||
{ lib, user, ... }:
|
{ lib, user, ... }:
|
||||||
let keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEQNlGt62dBMojVCX7EUIia+wfSDfLzV4YCPi8SZ2xrp elnu@elnu.com"
|
|
||||||
]; in
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
# Remember to update for new instances
|
# Remember to update for new instances
|
||||||
./networking.nix # generated at runtime by nixos-infect
|
./networking.nix # generated at runtime by nixos-infect
|
||||||
|
|
||||||
|
./modules/ssh.nix
|
||||||
|
./modules/headscale.nix
|
||||||
|
./modules/tailscale.nix
|
||||||
|
|
||||||
|
./hosts/jichan.org
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.firewall = {
|
networking.firewall = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowedTCPPorts = [ 80 443 ];
|
allowedTCPPorts = [ 80 443 ];
|
||||||
};
|
};
|
||||||
|
|
||||||
security.acme = {
|
security.acme = {
|
||||||
acceptTerms = true;
|
acceptTerms = true;
|
||||||
defaults.email = "elnu@elnu.com";
|
defaults.email = "elnu@elnu.com";
|
||||||
};
|
};
|
||||||
|
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
enable = true;
|
enable = true;
|
||||||
virtualHosts = {
|
virtualHosts."default" = {
|
||||||
"default" = {
|
default = true;
|
||||||
default = true;
|
serverName = null;
|
||||||
serverName = null;
|
# https://stackoverflow.com/a/42802777
|
||||||
# https://stackoverflow.com/a/42802777
|
locations."/".return = "444";
|
||||||
locations."/".return = "444";
|
|
||||||
};
|
|
||||||
"jichan.org" = {
|
|
||||||
extraConfig = ''
|
|
||||||
error_page 502 /502.html;
|
|
||||||
'';
|
|
||||||
locations = {
|
|
||||||
"/" = {
|
|
||||||
proxyPass = "http://127.0.0.1:8000";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
"/502.html".root = "${./hosts/jichan.org}";
|
|
||||||
"/logo.svg".root = "${./hosts/jichan.org}";
|
|
||||||
"/missing.min.css".root = "${./hosts/jichan.org}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.do-agent.enable = true;
|
services.do-agent.enable = true;
|
||||||
services.openssh.enable = true;
|
|
||||||
users.users.root.openssh.authorizedKeys.keys = keys;
|
|
||||||
users.users.${user}.openssh.authorizedKeys.keys = keys;
|
|
||||||
}
|
}
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
services.nginx.virtualHosts."jichan.org" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
extraConfig = ''
|
||||||
|
error_page 502 /502.html;
|
||||||
|
'';
|
||||||
|
locations = {
|
||||||
|
"/" = {
|
||||||
|
proxyPass = with import ../../../../modules/tailscale/default.nix; "http://${elnuhub}:3334";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
"/502.html".root = "${./502}";
|
||||||
|
"/logo.svg".root = "${./502}";
|
||||||
|
"/missing.min.css".root = "${./502}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
baseDomain = "elnu.com";
|
||||||
|
domain = "headscale.${baseDomain}";
|
||||||
|
in {
|
||||||
|
services.headscale = {
|
||||||
|
enable = true;
|
||||||
|
address = "0.0.0.0";
|
||||||
|
port = 8080;
|
||||||
|
settings = {
|
||||||
|
server_url = "https://${domain}";
|
||||||
|
dns_config.base_domain = baseDomain;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
environment.systemPackages = [ config.services.headscale.package ];
|
||||||
|
services.nginx.virtualHosts.${domain} = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:${ toString config.services.headscale.port }";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
{ user, ... }:
|
||||||
|
|
||||||
|
let keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEQNlGt62dBMojVCX7EUIia+wfSDfLzV4YCPi8SZ2xrp elnu@elnu.com"
|
||||||
|
]; in
|
||||||
|
{
|
||||||
|
services.openssh.enable = true;
|
||||||
|
users.users.root.openssh.authorizedKeys.keys = keys;
|
||||||
|
users.users.${user}.openssh.authorizedKeys.keys = keys;
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.tailscale.enable = true;
|
||||||
|
networking.firewall = {
|
||||||
|
checkReversePath = "loose";
|
||||||
|
trustedInterfaces = [ "tailscale0" ];
|
||||||
|
allowedUDPPorts = [ config.services.tailscale.port ];
|
||||||
|
};
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
rec {
|
||||||
|
elnu = "100.64.0.1";
|
||||||
|
elnudrop = "100.64.0.2";
|
||||||
|
elnuhub = "100.64.0.3";
|
||||||
|
hosts = ''
|
||||||
|
elnu ${elnu}
|
||||||
|
'';
|
||||||
|
}
|
Loading…
Reference in new issue