1amends "../../config/Service.pkl"
2
3import "../../config/site.pkl" as site
4import "../../config/OpenID.pkl" as sso
5
6meta { name = "Jellyfin" }
7// SQLite under /config requires one writer during rollout.
8rollout = "simple"
9healthyDeadline = "20m"
10healthRestartGrace = "20m"
11prepare = "prepare.py"
12setup = "configure.py"
13
14secrets { ["admin_password"] {} }
15
16requirements {
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
27container {
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}