architect from giupi
This commit is contained in:
parent
9a9b4c6cfa
commit
80a4af7d3d
@ -8,7 +8,7 @@ with import ./network.nix;
|
|||||||
let
|
let
|
||||||
unstable = import <nixos-unstable> {};
|
unstable = import <nixos-unstable> {};
|
||||||
pubkeys = ["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC1we38/N+t8Ah5yrLof8QUwhrob7/VXFKIddaJeOVBLuDVnW7ljiAtdtEiL69D/DV4Ohmt5wMvkAAjfuHmim6FD9A6lzPbSU4KH9W2dcckszKbbI636kuDwem/xui6BW3wJa6P+0xW5ksygEAkzcK2PXuC2b4B9uwhuUdKahiGMKDxISG/WianqAe72cGMfNkYvion3Y1VsMLUdm48d2ABnxNpr7NI9B5iJ8dziOft9gpgfz13CCQRlReo75gk/4xI+vSNrQp7eR+wzJy2/dZg/T8jtyA9Q6jVxrxBpqQ1LNXkAKaJkGo9OabF6Wgpzp+YTAurL4nwR2NaJxwFuyoKvACQy0ai4jrS3206gC6JXZv8ktZMZrwUN+jPqCwfgh5qObFkAqKCxbp52ioDek2MQLdOvzQBX//DBhGEp5rzHGLZ3vhRIiiQiaof5sF5zWiYDW5mqezSPNxJPX/BrTP/Wbs/jpwTLBh3wytiia0S1WXQmya89bqzTPFiDWvTRA62EVKB/JaQtPQQOFAxWwg799DMycPeZ81xttZOyMtI/MZSddyqx2S8fWGwvToZQvuZ38mSIpFseLM1IkgabRIrAmat5SBNGGy9Dqa0eMEa7bwIY/4CMB1y6HMTnaoMXA6cnQfHMoB/zyTZ6oTXIeqeOyiZsK+RN0Mvahj8mXi7dw== giulio@giulio-X230"];
|
pubkeys = ["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC1we38/N+t8Ah5yrLof8QUwhrob7/VXFKIddaJeOVBLuDVnW7ljiAtdtEiL69D/DV4Ohmt5wMvkAAjfuHmim6FD9A6lzPbSU4KH9W2dcckszKbbI636kuDwem/xui6BW3wJa6P+0xW5ksygEAkzcK2PXuC2b4B9uwhuUdKahiGMKDxISG/WianqAe72cGMfNkYvion3Y1VsMLUdm48d2ABnxNpr7NI9B5iJ8dziOft9gpgfz13CCQRlReo75gk/4xI+vSNrQp7eR+wzJy2/dZg/T8jtyA9Q6jVxrxBpqQ1LNXkAKaJkGo9OabF6Wgpzp+YTAurL4nwR2NaJxwFuyoKvACQy0ai4jrS3206gC6JXZv8ktZMZrwUN+jPqCwfgh5qObFkAqKCxbp52ioDek2MQLdOvzQBX//DBhGEp5rzHGLZ3vhRIiiQiaof5sF5zWiYDW5mqezSPNxJPX/BrTP/Wbs/jpwTLBh3wytiia0S1WXQmya89bqzTPFiDWvTRA62EVKB/JaQtPQQOFAxWwg799DMycPeZ81xttZOyMtI/MZSddyqx2S8fWGwvToZQvuZ38mSIpFseLM1IkgabRIrAmat5SBNGGy9Dqa0eMEa7bwIY/4CMB1y6HMTnaoMXA6cnQfHMoB/zyTZ6oTXIeqeOyiZsK+RN0Mvahj8mXi7dw== giulio@giulio-X230"];
|
||||||
hostname = "giupi";
|
hostname = "architect";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports =
|
imports =
|
||||||
@ -18,6 +18,7 @@ in
|
|||||||
../../common.nix
|
../../common.nix
|
||||||
../../users.nix
|
../../users.nix
|
||||||
./firewall.nix
|
./firewall.nix
|
||||||
|
./nginx.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
variables.hostname = hostname;
|
variables.hostname = hostname;
|
||||||
@ -71,20 +72,20 @@ in
|
|||||||
extraHosts = ''
|
extraHosts = ''
|
||||||
127.0.0.1 ${hostname}.devs.giugl.io jf.giugl.io yt.giugl.io s3.giugl.io synclounge.giugl.io giugl.io htson.giugl.io htrad.giugl.io htnzb.giugl.io httra.giugl.io giupyter.giugl.io irc.giugl.io localhost
|
127.0.0.1 ${hostname}.devs.giugl.io jf.giugl.io yt.giugl.io s3.giugl.io synclounge.giugl.io giugl.io htson.giugl.io htrad.giugl.io htnzb.giugl.io httra.giugl.io giupyter.giugl.io irc.giugl.io localhost
|
||||||
|
|
||||||
# LAN
|
# LAN
|
||||||
${giupi_lan_ip} ${hostname}.devs.giugl.io giugl.io jf.giugl.io yt.giugl.io s3.giugl.io synclounge.giugl.io htson.giugl.io htrad.giugl.io htnzb.giugl.io httra.giugl.io todo.giugl.io giupyter.giugl.io collabora.giugl.io htjak.giugl.io irc.giugl.io
|
${giupi_lan_ip} ${hostname}.devs.giugl.io media.giugl.io giugl.io jf.giugl.io yt.giugl.io s3.giugl.io synclounge.giugl.io htson.giugl.io htrad.giugl.io htnzb.giugl.io httra.giugl.io todo.giugl.io giupyter.giugl.io collabora.giugl.io htjak.giugl.io irc.giugl.io
|
||||||
|
|
||||||
10.0.0.1 router.devs.giugl.io
|
10.0.0.1 router.devs.giugl.io
|
||||||
${dvr_ip} dvr.devs.giugl.io
|
${dvr_ip} dvr.devs.giugl.io
|
||||||
${nas_ip} nas.devs.giugl.io
|
${nas_ip} nas.devs.giugl.io
|
||||||
|
|
||||||
# Wireguard hosts
|
# Wireguard hosts
|
||||||
${giupi_wg_ip} ${hostname}.devs.giugl.io jf.giugl.io giugl.io yt.giugl.io s3.giugl.io synclounge.giugl.io htson.giugl.io htrad.giugl.io htnzb.giugl.io httra.giugl.io todo.giugl.io giupyter.giugl.io collabora.giugl.io htjak.giugl.io irc.giugl.io
|
${giupi_wg_ip} ${hostname}.devs.giugl.io media.giugl.io jf.giugl.io giugl.io yt.giugl.io s0.giugl.io synclounge.giugl.io htson.giugl.io htrad.giugl.io htnzb.giugl.io httra.giugl.io todo.giugl.io giupyter.giugl.io collabora.giugl.io htjak.giugl.io irc.giugl.io
|
||||||
${galuminum-wg} galuminum.devs.giugl.io
|
${galuminum-wg} galuminum.devs.giugl.io
|
||||||
${oneplus-wg} oneplus.devs.giugl.io
|
${oneplus-wg} oneplus.devs.giugl.io
|
||||||
${ipad-wg} ipad.devs.giugl.io
|
${ipad-wg} ipad.devs.giugl.io
|
||||||
${manduria-wg} manduria.devs.giugl.io
|
${manduria-wg} manduria.devs.giugl.io
|
||||||
${antonio-wg} antonio.devs.giugl.io
|
${antonio-wg} antonio.devs.giugl.io
|
||||||
${gbeast-wg} gbeast.devs.giugl.io
|
${gbeast-wg} gbeast.devs.giugl.io
|
||||||
${parisaphone-wg} parisa-phone.devs.giugl.io
|
${parisaphone-wg} parisa-phone.devs.giugl.io
|
||||||
${parisapc-wg} parisa-pc.devs.giugl.io
|
${parisapc-wg} parisa-pc.devs.giugl.io
|
||||||
@ -98,7 +99,7 @@ ${giupi_lan_ip} ${hostname}.devs.giugl.io giugl.io jf.giugl.io yt.giugl.i
|
|||||||
${broccolino-wg} broccolino.devs.giugl.io
|
${broccolino-wg} broccolino.devs.giugl.io
|
||||||
${hotpottino-wg} hotpottino.devs.giugl.io
|
${hotpottino-wg} hotpottino.devs.giugl.io
|
||||||
|
|
||||||
# Blacklist
|
# Blacklist
|
||||||
0.0.0.0 metrics.plex.tv
|
0.0.0.0 metrics.plex.tv
|
||||||
0.0.0.0 analytics.plex.tv
|
0.0.0.0 analytics.plex.tv
|
||||||
0.0.0.0 cdn.luckyorange.com
|
0.0.0.0 cdn.luckyorange.com
|
||||||
@ -125,7 +126,6 @@ ${giupi_lan_ip} ${hostname}.devs.giugl.io giugl.io jf.giugl.io yt.giugl.i
|
|||||||
|
|
||||||
environment.systemPackages = with pkgs;
|
environment.systemPackages = with pkgs;
|
||||||
[
|
[
|
||||||
docker
|
|
||||||
openiscsi
|
openiscsi
|
||||||
wireguard
|
wireguard
|
||||||
cudatoolkit
|
cudatoolkit
|
||||||
@ -147,6 +147,8 @@ ${giupi_lan_ip} ${hostname}.devs.giugl.io giugl.io jf.giugl.io yt.giugl.i
|
|||||||
sonarr.enable = true;
|
sonarr.enable = true;
|
||||||
nzbget.enable = true;
|
nzbget.enable = true;
|
||||||
thelounge.enable = true;
|
thelounge.enable = true;
|
||||||
|
mysql.enable = false;
|
||||||
|
mysql.package = with pkgs; mysql80;
|
||||||
|
|
||||||
dnsmasq = {
|
dnsmasq = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -179,66 +181,14 @@ ${giupi_lan_ip} ${hostname}.devs.giugl.io giugl.io jf.giugl.io yt.giugl.i
|
|||||||
passwordAuthentication = true;
|
passwordAuthentication = true;
|
||||||
permitRootLogin = "yes";
|
permitRootLogin = "yes";
|
||||||
};
|
};
|
||||||
|
|
||||||
postgresql = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
# Ensure the database, user, and permissions always exist
|
|
||||||
ensureDatabases = [ "nextcloud" ];
|
|
||||||
ensureUsers = [
|
|
||||||
{ name = "nextcloud";
|
|
||||||
ensurePermissions."DATABASE nextcloud" = "ALL PRIVILEGES";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
nginx = {
|
|
||||||
enable = true;
|
|
||||||
recommendedGzipSettings = true;
|
|
||||||
recommendedOptimisation = true;
|
|
||||||
recommendedProxySettings = true;
|
|
||||||
recommendedTlsSettings = true;
|
|
||||||
|
|
||||||
virtualHosts."media.giugl.io" = {
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://localhost:8096";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
virtualHosts."htbaz.giugl.io" = {
|
environment.variables = {
|
||||||
locations."/" = {
|
LIBVA_DRIVER_NAME="vdpau";
|
||||||
proxyPass = "http://localhost:6767";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
virtualHosts."htrad.giugl.io" = {
|
users.groups.media.members = ["radarr" "sonarr" "nzbget" "bazarr" "transmission" "jellyfin" "jellyfin"];
|
||||||
locations."/" = {
|
users.groups.video.members = ["jellyfin"];
|
||||||
proxyPass = "http://localhost:7878";
|
users.groups.render.members = ["jellyfin"];
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualHosts."htson.giugl.io" = {
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://localhost:8989";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualHosts."htnzb.giugl.io" = {
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://localhost:6789";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.variables = {
|
|
||||||
LIBVA_DRIVER_NAME="vdpau";
|
|
||||||
};
|
|
||||||
users.groups.media.members = ["radarr" "sonarr" "nzbget" "bazarr" "transmission" "jellyfin" "jellyfin"];
|
|
||||||
users.groups.video.members = ["jellyfin"];
|
|
||||||
users.groups.render.members = ["jellyfin"];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -28,10 +28,10 @@
|
|||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/docker" =
|
# fileSystems."/docker" =
|
||||||
{ device = "backedpool/docker";
|
# { device = "backedpool/docker";
|
||||||
fsType = "zfs";
|
# fsType = "zfs";
|
||||||
};
|
# };
|
||||||
|
|
||||||
fileSystems."/var/lib" =
|
fileSystems."/var/lib" =
|
||||||
{ device = "backedpool/services";
|
{ device = "backedpool/services";
|
@ -9,7 +9,7 @@ rec {
|
|||||||
external_lan_net = "192.168.1.0/24";
|
external_lan_net = "192.168.1.0/24";
|
||||||
|
|
||||||
# ips
|
# ips
|
||||||
giupi_lan_ip = "10.0.0.8";
|
giupi_lan_ip = "10.0.0.250";
|
||||||
dvr_ip = "10.0.0.2";
|
dvr_ip = "10.0.0.2";
|
||||||
nas_ip = "10.0.0.3";
|
nas_ip = "10.0.0.3";
|
||||||
|
|
||||||
@ -37,4 +37,9 @@ rec {
|
|||||||
routers-wg = [ hotpottino-wg broccolino-wg ];
|
routers-wg = [ hotpottino-wg broccolino-wg ];
|
||||||
c2c-wg = [ ] ++ gdevices-wg;
|
c2c-wg = [ ] ++ gdevices-wg;
|
||||||
towan-wg = [ shield-wg parisaphone-wg parisapc-wg ] ++ gdevices-wg ++ routers-wg;
|
towan-wg = [ shield-wg parisaphone-wg parisapc-wg ] ++ gdevices-wg ++ routers-wg;
|
||||||
|
|
||||||
|
# domains
|
||||||
|
domain = "giugl.io";
|
||||||
|
dom_media = "media.${domain}";
|
||||||
|
dom_cloud = "cloud.${domain}";
|
||||||
}
|
}
|
79
hosts/architect/nginx.nix
Normal file
79
hosts/architect/nginx.nix
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
{services, ...}:
|
||||||
|
|
||||||
|
{
|
||||||
|
security.acme.acceptTerms = true;
|
||||||
|
security.acme.email = "giupi@giugl.io";
|
||||||
|
|
||||||
|
services.nginx = {
|
||||||
|
enable = true;
|
||||||
|
recommendedGzipSettings = true;
|
||||||
|
recommendedOptimisation = true;
|
||||||
|
recommendedProxySettings = true;
|
||||||
|
recommendedTlsSettings = true;
|
||||||
|
|
||||||
|
virtualHosts."media.giugl.io" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:8096";
|
||||||
|
extraConfig = ''
|
||||||
|
allow 10.0.0.0/24;
|
||||||
|
allow 10.3.0.0/24;
|
||||||
|
deny all;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualHosts."htbaz.giugl.io" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:6767";
|
||||||
|
extraConfig = ''
|
||||||
|
allow 10.0.0.0/24;
|
||||||
|
allow 10.3.0.0/24;
|
||||||
|
deny all;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualHosts."htrad.giugl.io" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:7878";
|
||||||
|
extraConfig = ''
|
||||||
|
allow 10.0.0.0/24;
|
||||||
|
allow 10.3.0.0/24;
|
||||||
|
deny all;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualHosts."htson.giugl.io" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:8989";
|
||||||
|
extraConfig = ''
|
||||||
|
allow 10.0.0.0/24;
|
||||||
|
allow 10.3.0.0/24;
|
||||||
|
deny all;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualHosts."htnzb.giugl.io" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:6789";
|
||||||
|
extraConfig = ''
|
||||||
|
allow 10.0.0.0/24;
|
||||||
|
allow 10.3.0.0/24;
|
||||||
|
deny all;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user