fucking goodnight (template done, network diagram prepped)
This commit is contained in:
@@ -88,40 +88,37 @@
|
|||||||
|
|
||||||
# Open ports in the firewall.
|
# Open ports in the firewall.
|
||||||
networking.firewall.allowedTCPPorts = [
|
networking.firewall.allowedTCPPorts = [
|
||||||
80 # http
|
80 # set - http
|
||||||
111 # portmapper for nfs
|
111 # set - portmapper for nfs
|
||||||
139 # smb
|
139 # set - smb
|
||||||
443 # https
|
443 # set - https
|
||||||
445 # cifs
|
445 # set - cifs
|
||||||
1883
|
1883 # set - mqtt
|
||||||
2049 # nfs
|
2049 # set - nfs
|
||||||
2222 # syncthing
|
2222 # srv - syncthing
|
||||||
3030 # jellyfin
|
7100 # srv - jellyfin
|
||||||
3131 # audiobookshelf
|
7101 # srv - audiobookshelf
|
||||||
3232 #
|
7102 # srv - yacreader
|
||||||
3333 # qbittorrent
|
7103 # srv - qbittorrent
|
||||||
3434 # yacreader
|
7104 # srv - prowlarr
|
||||||
3535 # prowlarr
|
7105 # srv - sonarr
|
||||||
3636 # sonarr
|
7106 # srv - radarr
|
||||||
3737 # radarr
|
7107 # srv - bazarr
|
||||||
3838 # bazarr
|
7108 # srv - flaresolverr
|
||||||
3939 # flaresolverr
|
5701 # srv - archivebox
|
||||||
3923 # copyparty
|
7502 # srv - kiwix
|
||||||
4141 # hass
|
7567 # srv - gitea ssh
|
||||||
4142 # mqtt
|
7700 # srv - glance
|
||||||
4242 # immich
|
7701 # srv - vaultwarden
|
||||||
4444 # gitea
|
7702 # srv - immich
|
||||||
5050 # kiwix
|
7703 # srv - gitea
|
||||||
5656 # archivebox
|
7704 # srv - hass
|
||||||
7070 # vaultwarden
|
7705 # srv - zigbee2mqtt
|
||||||
7567 # gitea ssh
|
7901 # srv - uptime kuma
|
||||||
7777 # glance
|
25777 # srv - minecraft
|
||||||
8080 # nginx webui
|
25565 # ^ ^ ^
|
||||||
8181 # uptime kuma
|
25566 # | | |
|
||||||
25777 # minecraft
|
25567 # | | |
|
||||||
25565
|
|
||||||
25566
|
|
||||||
25567
|
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.firewall.allowedUDPPorts = [ 51820 ];
|
networking.firewall.allowedUDPPorts = [ 51820 ];
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
{ pkgs, config, lib, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.services.<name>;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.system.docker = {
|
|
||||||
enable = lib.mkEnableOption "enables <name>";
|
|
||||||
# extra options
|
|
||||||
# mode = lib.mkOption {
|
|
||||||
# type = lib.types.enum [ "server" "client" ];
|
|
||||||
# default = "client";
|
|
||||||
# description = "whether syncthing should run as a client (user) or server (system-wide).";
|
|
||||||
# };
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
61
modules/homelab/services/default.nix.template
Normal file
61
modules/homelab/services/default.nix.template
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
{ pkgs, config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.modules.services.<service_name>;
|
||||||
|
ids = <gid_and_uid_number>;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.services.<service_name> = {
|
||||||
|
enable = lib.mkEnableOption "enables <service_name>";
|
||||||
|
# extra options
|
||||||
|
# mode = lib.mkOption {
|
||||||
|
# type = lib.types.enum [ "server" "client" ];
|
||||||
|
# default = "client";
|
||||||
|
# description = "whether syncthing should run as a client (user) or server (system-wide).";
|
||||||
|
# };
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
# declare <service_name> group
|
||||||
|
users.groups.<service_name> = { gid = ids; };
|
||||||
|
|
||||||
|
# declare <service_name> user
|
||||||
|
users.users.<service_name> = {
|
||||||
|
description = "<service_name> media server user";
|
||||||
|
uid = ids;
|
||||||
|
isSystemUser = true;
|
||||||
|
home = "/var/lib/<service_name>";
|
||||||
|
createHome = true;
|
||||||
|
group = "<service_name>";
|
||||||
|
extraGroups = [ "media" "video" "render" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# enable the <service_name> service
|
||||||
|
services.<service_name> = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true; # Opens 8096/8920 automatically
|
||||||
|
user = "<service_name>"; # Default: <service_name>
|
||||||
|
group = "<service_name>"; # Default: <service_name>
|
||||||
|
dataDir = "/var/lib/<service_name>"; # Config + metadata storage
|
||||||
|
};
|
||||||
|
|
||||||
|
# override umask to make permissions work out
|
||||||
|
systemd.services.<service_name>.serviceConfig = { UMask = lib.mkForce "0007"; };
|
||||||
|
|
||||||
|
# open firewall
|
||||||
|
#networking.firewall.allowedTCPPorts = [ 8096 ];
|
||||||
|
|
||||||
|
# reverse proxy entryo
|
||||||
|
services.nginx.virtualHosts."media.blakedheld.xyz" = {
|
||||||
|
enableACME = false;
|
||||||
|
forceSSL = true;
|
||||||
|
sslCertificate = config.sops.secrets."ssl_blakedheld_crt".path;
|
||||||
|
sslCertificateKey = config.sops.secrets."ssl_blakedheld_key".path;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://127.0.0.1:8096";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.modules.services.jellyfin;
|
cfg = config.modules.services.jellyfin;
|
||||||
|
ids = 701;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.modules.services.jellyfin = {
|
options.modules.services.jellyfin = {
|
||||||
@@ -18,12 +19,12 @@ in
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
# declare jellyfin group
|
# declare jellyfin group
|
||||||
users.groups.jellyfin = { gid = 701; };
|
users.groups.jellyfin = { gid = ids; };
|
||||||
|
|
||||||
# declare jellyfin user
|
# declare jellyfin user
|
||||||
users.users.jellyfin = {
|
users.users.jellyfin = {
|
||||||
description = "jellyfin media server user";
|
description = "jellyfin media server user";
|
||||||
uid = 701;
|
uid = ids;
|
||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
home = "/var/lib/jellyfin";
|
home = "/var/lib/jellyfin";
|
||||||
createHome = true;
|
createHome = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user