| 1 | amends "../../config/Service.pkl" |
| 2 | |
| 3 | import "../../config/site.pkl" as site |
| 4 | import "../../config/OpenID.pkl" as sso |
| 5 | |
| 6 | meta { name = "Jellyfin" } |
| 7 | // SQLite under /config requires one writer during rollout. |
| 8 | rollout = "simple" |
| 9 | healthyDeadline = "20m" |
| 10 | healthRestartGrace = "20m" |
| 11 | prepare = "prepare.py" |
| 12 | setup = "configure.py" |
| 13 | |
| 14 | secrets { ["admin_password"] {} } |
| 15 | |
| 16 | requirements { |
| 17 | new sso.Client { |
| 18 | clientId = module.id |
| 19 | name = module.meta.name |
| 20 | redirectUris { |
| 21 | "https://\(module.container.http.hostname)/sso/OID/r/snow" |
| 22 | "https://\(module.container.http.hostname)/sso/OID/redirect/snow" |
| 23 | } |
| 24 | } |
| 25 | } |
| 26 | |
| 27 | container { |
| 28 | image = "docker.io/jellyfin/jellyfin@sha256:aefb67e6a7ff1debdd154a78a7bbb780fd0c873d8639210a7f6a2016ad2b35db" |
| 29 | cpu = 500 |
| 30 | memory = 3072 |
| 31 | extraHosts { "\(sso.hostname):host-gateway" } |
| 32 | |
| 33 | http { |
| 34 | containerPort = 8096 |
| 35 | subdomain = "jelly" |
| 36 | checkPath = "/health" |
| 37 | metricsPath = "/metrics" |
| 38 | overrideFiles { |
| 39 | ["/web/extra/"] = "theme" |
| 40 | ["/web/extra/cloverfin.css"] = "theme/cloverfin.css" |
| 41 | } |
| 42 | headHtml { |
| 43 | ["/web/"] = "<link rel=\"stylesheet\" href=\"/web/extra/cloverfin.css\">" |
| 44 | ["/web/index.html"] = "<link rel=\"stylesheet\" href=\"/web/extra/cloverfin.css\">" |
| 45 | } |
| 46 | } |
| 47 | |
| 48 | volumes { |
| 49 | ["/config"] {} |
| 50 | ["/cache"] {} |
| 51 | for (name, folder in site.jellyfinFolders) { |
| 52 | ["/media/jellyfin/\(name)"] { src = "\(site.mediaRoot)/\(folder)"; readOnly = true } |
| 53 | } |
| 54 | ["/config/config/branding.xml"] { config = "branding.xml" } |
| 55 | ["/etc/ssl/certs/ca-certificates.crt"] { |
| 56 | src = "/var/lib/studio/ca-bundle.crt" |
| 57 | readOnly = true |
| 58 | } |
| 59 | } |
| 60 | |
| 61 | env { |
| 62 | ["JELLYFIN_PublishedServerUrl"] = "https://\(module.container.http.hostname)" |
| 63 | } |
| 64 | } |