gba server, jellyfin

This commit is contained in:
Aner Zakobar
2026-08-01 14:59:43 +03:00
parent fc457ddf7c
commit dd30a5935c
4 changed files with 463 additions and 273 deletions
+19 -6
View File
@@ -1,16 +1,21 @@
{ config, lib, pkgs, homeyConfig, ... }:
# Transmission — BitTorrent client. (Deferred — enable when ready.)
# Transmission — BitTorrent client.
#
# NOTE: Transmission's web UI also runs on port 9091. To avoid clashing
# with Authelia (also 9091), this module binds Transmission to 9092.
#
# Auth: Authelia two_factor, admins only (via forward_auth from Caddy).
#
# Volume layout:
# <dataDir>/transmission/config/ → /config
# <dataDir>/media/movies/ → /downloads/movies
# <dataDir>/media/tvshows/ → /downloads/tvshows
# <dataDir>/media/general/ → /downloads/general
# <dataDir>/media/complete/ → /downloads/complete
#
# The /downloads/* paths are the same dirs Jellyfin reads from (/data/*),
# so downloaded media is immediately visible to Jellyfin without moving files.
let
cfg = config.homey.transmission;
@@ -19,7 +24,7 @@ let
in
{
options.homey.transmission = {
enable = lib.mkEnableOption "Transmission torrent client" // { default = true; };
enable = lib.mkEnableOption "Transmission torrent client";
image = lib.mkOption {
type = lib.types.str;
@@ -43,7 +48,6 @@ in
environment = {
PUID = "1000";
PGID = "1000";
TRANSMISSION_WEB_HOME = "/usr/share/transmission/web";
};
volumes = [
@@ -66,15 +70,15 @@ in
# Authelia access control — admins only, two_factor; all others denied.
# -----------------------------------------------------------------------
homey.authelia.accessControlRules = [
{ priority = 30; domain = [ "torrent.${domain}" ]; subject = [ "group:admins" ]; policy = "two_factor"; }
{ priority = 31; domain = [ "torrent.${domain}" ]; policy = "deny"; }
{ priority = 30; domain = [ "download.${domain}" ]; subject = [ "group:admins" ]; policy = "two_factor"; }
{ priority = 31; domain = [ "download.${domain}" ]; policy = "deny"; }
];
# -----------------------------------------------------------------------
# Caddy virtual host — forward_auth, admins only
# -----------------------------------------------------------------------
homey.caddy.virtualHosts = [{
subdomain = "torrent";
subdomain = "download";
port = cfg.port;
auth = true;
}];
@@ -91,5 +95,14 @@ in
# Backup
# -----------------------------------------------------------------------
homey.backup.extraPaths = [ "${dataDir}/transmission" ];
# -----------------------------------------------------------------------
# Uptime Kuma monitor
# -----------------------------------------------------------------------
homey.monitoring.monitors = [{
name = "Transmission";
url = "https://download.${domain}";
interval = 60;
}];
};
}