Settings reference
Every setting Loombre's settings screen lets you change, grouped the way the screen groups them, generated directly from the same source the settings screen itself reads — so this page can never drift from what you actually see there.
How to read this page
- Applies immediately means the change takes effect right away.
- Applies after a restart means Loombre saves your change now but keeps using the old value until the server restarts — you'll see a reminder banner in the meantime, and Settings → Server → Power has a restart button that applies it. Nothing currently playing is ever interrupted just by saving.
- Can be locked means whoever installed Loombre can fix a setting to one value from outside the settings screen. When that's done, this screen shows the setting as controlled by the environment and you can't change it here — ask them if you need it changed.
Video conversion & playback quality
How Loombre converts video for playback, and how much of it happens at once.
Maximum simultaneous conversions
Setting key: transcode.maxSimultaneousTranscodes
How many videos this server will convert at the same time. Lowering it never interrupts anything already playing — it only makes the next person wait for a free slot.
- Default: 2 (Tier 0) / 2 (Tier 1) / 4 (Tier 2) (varies by hardware tier — see Install: system requirements for what Tier 0/1/2 mean)
- Applies: immediately — no restart needed.
- Note: Setting this too high can overload the server if several videos convert at once — raise it gradually and keep an eye on how the machine handles it.
- Can be locked: if
LOOMBRE_MAX_TRANSCODESis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference.
Prefer efficient video format when converting
Setting key: transcode.hevcEncodePreferred
When converting, prefer the newer, more efficient video format (HEVC) over the older, more compatible one (H.264). Only used when your hardware supports it.
- Technical details: Preference half only. The capability half is resolved per request in apps/server (resolve-policy.ts): HEVC is used when a HARDWARE encoder verifies hevc, or — on tier 1/2 only — when the box has no hardware encode route at all and the software encoder verifies hevc. A tier-0 box never software-encodes HEVC (libx265 is 2–4× slower than libx264), and a box with an h264-only hardware encoder keeps its hardware H.264 route (SPF-10). AV1 preference is separate (transcode.av1EncodePreferred).
- Default: On
- Applies: immediately — no restart needed.
Allow software HDR color adjustment
Setting key: transcode.allowToneMapCpu
Advanced: whether Loombre may convert high-dynamic-range (HDR) video to standard range using the processor when the video hardware can't do it directly. Processor conversion is slower and uses more of the server's resources. 'tier-gated' (the default) allows it only on more capable servers, 'always' allows it everywhere, 'never' turns it off entirely.
- Technical details: CPU tone-mapping via zscale. 'tier-gated' = allowed on Tier 1/2 hardware, refused on Tier 0 for sources >= 1080p; a refused HDR conversion surfaces as media-unplayable rather than a washed-out picture.
- Default:
tier-gated - Applies: immediately — no restart needed.
Av1 Encode Preferred
Setting key: transcode.av1EncodePreferred
When converting, prefer AV1 — the newest and most efficient video format, giving similar quality at a noticeably lower bitrate. Loombre only uses it when your server has AV1 encoding hardware, or on more capable servers where converting it in software is realistic; otherwise it quietly converts to HEVC or H.264 instead. Not every device can play AV1, and Loombre checks that too.
- Technical details: Passed to the playback engine as a preference only — never pre-resolved against hardware. A rung becomes AV1 when this is on AND the client declares AV1 decode support AND it can take fMP4 segments (AV1 has no MPEG-TS stream type) AND the capability snapshot verifies an AV1 encoder: any non-software backend qualifies at every tier, while the software encoder (libsvtav1) qualifies only on Tier 1 and above. AV1 rungs take 60% of the equivalent H.264 bitrate and never replace a 2160p rung. Rungs that cannot be delivered as AV1 are converted to HEVC/H.264 at their configured bitrate rather than dropped, and each one reports why.
- Default: Off
- Applies: immediately — no restart needed.
- Note: Converting to AV1 in software is very demanding. On a small or low-power server Loombre will decline to do it and fall back automatically, so turning this on there simply has no effect.
Quality levels used when converting
Setting key: transcode.ladderRungs
The set of quality levels Loombre can switch between while converting, best first. Loombre picks the highest one your connection can keep up with.
- Technical details: JSON array, best rung first. Each rung: { heightPx: positive integer, videoBitrateBps and audioBitrateBps: integers between 100,000 (100 kbps) and 100,000,000 (100 Mbps), codec: 'h264', 'hevc' or 'av1' }. At least one rung is required. An 'av1' rung is an explicit request for that quality point and is honoured wherever the client and the server's verified encoders allow it — including at 2160p, which the automatic AV1 preference never touches; where they do not, the rung is converted to HEVC/H.264 at the bitrate you set rather than dropped.
- Default: the standard quality ladder (6 levels, highest first)
- Applies: immediately — no restart needed.
Pause conversion when far ahead of playback
Setting key: transcode.segmentAheadSuspendThreshold
Advanced: how far ahead of what's currently playing Loombre is allowed to convert before it pauses conversion to save resources, measured in 2-second chunks of video at a time. Applies for the rest of the current viewing session — a change takes effect the next time someone starts watching something that needs converting.
- Technical details: Measured in HLS segments ahead of the playhead, each segment 2 seconds of video (SPF-1). Coupled to transcode.segmentAheadResumeThreshold: the resume value must stay BELOW this one, or saving is rejected.
- Default: 30
- Applies: immediately — no restart needed.
Resume conversion after pausing
Setting key: transcode.segmentAheadResumeThreshold
Advanced: how far the paused conversion (see 'Segment ahead suspend threshold') has to catch back down to before Loombre resumes it, measured in 2-second chunks of video at a time. Applies the same way — the next time someone starts watching something that needs converting.
- Technical details: Measured in HLS segments ahead of the playhead, each segment 2 seconds of video (SPF-1). Must stay BELOW transcode.segmentAheadSuspendThreshold, or saving is rejected.
- Default: 15
- Applies: immediately — no restart needed.
Library scanning
How Loombre watches and scans your library folders.
Library scan speed
Setting key: scanner.concurrency
How many files Loombre examines at once while scanning. Higher is faster but works the machine harder; takes effect on the next scan. When you haven't changed it, Loombre uses half your processor cores (minimum 2).
- Default: 2
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_SCAN_CONCURRENCYis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference.
Grace period for missing files
Setting key: scanner.missingFileGraceHours
How long a file can be missing before Loombre removes it from your library, in hours (the default 72 = three days). The delay protects your watch history when a network drive drops out briefly.
- Technical details: Hours. Evaluated during scans: a media_files row past the grace window since it was first marked missing is deleted on the next scan of its library.
- Default: 72
- Applies: immediately — no restart needed.
Background jobs
How much background work — image processing, file inspection, subtitle extraction, conversion supervision — runs at once. Each default is chosen for this machine from its performance tier and processor cores; the settings screen shows that number, and Reset returns to it.
Image processing at once
Setting key: jobs.imageConcurrency
How many poster, backdrop and portrait images Loombre processes at the same time. When you haven't changed it, the default is chosen for this machine from its performance tier and processor cores (a quarter of the cores on tier 0, half on tiers 1 and 2, never below 2 — or 4 on tier 2). Higher fills a new library faster but works the machine harder.
- Technical details: pg-boss local concurrency of the 'image' consumer; each job renders WebP (+ AVIF when enabled) at three sizes plus blurhash and dominant colour inside worker_threads. Default = max(floor, cores ÷ divisor) with floor/divisor 2/4 (tier 0), 2/2 (tier 1), 4/2 (tier 2). Fixed at consumer registration, hence the restart.
- Default: 2
- Applies: after a restart. Saving this shows a reminder banner until the server restarts — Settings → Server → Power has the restart button.
- Can be locked: if
LOOMBRE_JOBS_IMAGE_CONCURRENCYis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference.
File inspections at once
Setting key: jobs.probeConcurrency
How many newly found media files Loombre inspects (probes) at the same time after a scan. Defaults to a number chosen for this machine from its performance tier and processor cores, the same way as image processing.
- Technical details: pg-boss local concurrency of the 'probe' consumer (one bounded ffprobe run, plus the open-GOP trace scan for hevc/h264, per job). Default = max(floor, cores ÷ divisor) with floor/divisor 2/4 (tier 0), 2/2 (tier 1), 4/2 (tier 2). Fixed at consumer registration, hence the restart.
- Default: 2
- Applies: after a restart. Saving this shows a reminder banner until the server restarts — Settings → Server → Power has the restart button.
- Can be locked: if
LOOMBRE_JOBS_PROBE_CONCURRENCYis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference.
Subtitle extractions at once
Setting key: jobs.subtitleExtractConcurrency
How many subtitle tracks Loombre extracts for playback at the same time. Defaults to a number chosen for this machine from its performance tier and processor cores, the same way as image processing.
- Technical details: pg-boss local concurrency of the 'subtitle-extract' consumer (short ffmpeg runs producing segmented WebVTT). Default = max(floor, cores ÷ divisor) with floor/divisor 2/4 (tier 0), 2/2 (tier 1), 4/2 (tier 2). Fixed at consumer registration, hence the restart.
- Default: 2
- Applies: after a restart. Saving this shows a reminder banner until the server restarts — Settings → Server → Power has the restart button.
- Can be locked: if
LOOMBRE_JOBS_SUBTITLE_EXTRACT_CONCURRENCYis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference.
Conversion sessions per worker
Setting key: jobs.transcodeConcurrency
How many video conversion sessions this worker process supervises at the same time. This is not the conversion limit — that is 'maximum simultaneous conversions' under Video conversion — it only bounds one worker process. Defaults to a number chosen for this machine from its performance tier and processor cores.
- Technical details: pg-boss local concurrency of the 'transcode' consumer; admission (transcode.maxSimultaneousTranscodes) is the real cap and this must not be below it. Default = max(floor, cores ÷ divisor) with floor/divisor 4/4 (tier 0), 8/2 (tier 1), 8/2 (tier 2). Fixed at consumer registration, hence the restart.
- Default: 4
- Applies: after a restart. Saving this shows a reminder banner until the server restarts — Settings → Server → Power has the restart button.
- Can be locked: if
LOOMBRE_TRANSCODE_WORKER_CONCURRENCYis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference.
Image quality
Quality and format settings for poster/thumbnail images Loombre generates.
Generate modern image format (AVIF)
Setting key: images.avifEnabled
Also save each poster and thumbnail in a newer, smaller image format (AVIF) alongside the standard one, when this server is able to create it. Turning this off only stops new AVIF copies from being made — images already created are untouched. Takes effect the next time an image is generated or a scan re-processes one.
- Default: On
- Applies: immediately — no restart needed.
Image quality (WebP)
Setting key: images.webpQuality
Image quality for posters and thumbnails, from 1 (smallest file, lowest quality) to 100 (largest file, highest quality). Already-created images are untouched — this only affects new images and ones a future scan re-creates.
- Default: 80
- Applies: immediately — no restart needed.
Image quality (AVIF)
Setting key: images.avifQuality
Image quality for the smaller AVIF copies of posters and thumbnails, from 1 to 100 — used when 'Create AVIF copies' (images.avifEnabled) is turned on and this server can create them. Already-created images are untouched — this only affects new images and ones a future scan re-creates.
- Default: 50
- Applies: immediately — no restart needed.
Restricted content
Server-wide restricted-content settings — see the User Guide's Restricted content page for what this looks like for someone using the account.
Enable restricted content
Setting key: restricted.enabled
Turns the restricted-content feature on for this server. Off by default. While off, no restricted libraries or restricted content can be created.
- Default: Off
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RESTRICTED_ENABLEDis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference.
Minimum age for restricted content
Setting key: restricted.majorityAgeYears
The minimum age required to view restricted content. You can raise this number, but Loombre never allows it below 18 — that floor is enforced no matter what you set here.
- Technical details: The >=18 floor is enforced in more than one place server-side (schema validation and the settings-update path, not just this one field), so it can't be bypassed by a single validation gap.
- Default: 18
- Applies: immediately — no restart needed.
How long restricted content stays unlocked
Setting key: restricted.defaultUnlockDurationMs
How long restricted content stays unlocked after someone enters their PIN, before it locks itself again. Enter the time in milliseconds (60000 = one minute; the default 1800000 = 30 minutes).
- Technical details: Milliseconds. Bounded 60,000 (1 min) to 86,400,000 (24 h).
- Default: 30 minutes
- Applies: immediately — no restart needed.
- Note: Longer times mean the PIN is asked for less often — on a shared device that means restricted content stays available to whoever picks it up.
Playback sessions
When an inactive playback session is treated as ended or paused.
End inactive playback sessions after
Setting key: sessions.staleCutoffMs
How long Loombre waits after a device stops responding before treating that person's playback as finished and freeing up the resources. Enter the time in milliseconds (60000 = one minute; the default 900000 = 15 minutes).
- Technical details: Milliseconds, bounded 60,000 to 86,400,000. Coupled to sessions.heartbeatSuspendCutoffMs: this value must stay ABOVE it (a session must suspend before it can be considered stale), or saving is rejected.
- Default: 15 minutes
- Applies: immediately — no restart needed.
Pause conversion for inactive sessions after
Setting key: sessions.heartbeatSuspendCutoffMs
How long Loombre waits after a device goes quiet before pausing its conversion. Playback isn't ended — it resumes when the device comes back. Enter the time in milliseconds (the default 90000 = 90 seconds).
- Technical details: Milliseconds, bounded 30,000 to 3,600,000. Coupled to sessions.staleCutoffMs: this value must stay BELOW it, or saving is rejected.
- Default: 90 seconds
- Applies: immediately — no restart needed.
Paused Slot Hold Ms
Setting key: sessions.pausedSlotHoldMs
How long a paused video keeps its conversion slot before someone else may take it. Someone who pauses and comes back within this time continues where they were; after it, a new viewer who needs a slot gets this one and the paused video restarts when played. Enter the time in milliseconds (the default 300000 = 5 minutes).
- Technical details: Milliseconds, bounded 60,000 to 3,600,000. The player stops heartbeating on pause, so this is measured from the last heartbeat; admission reclaims the longest-silent suspended transcode session (any suspension cause) once it exceeds max(this, sessions.heartbeatSuspendCutoffMs). Only transcode-decision sessions occupy slots; copies (direct-stream/remux) never do.
- Default: 5 minutes
- Applies: immediately — no restart needed.
Update checking
Whether Loombre checks for newer versions. Never installs anything automatically.
Check for updates
Setting key: updateCheck.mode
Whether Loombre checks for a newer version. 'daily' checks at startup and once a day; 'manual' only when you ask; 'off' never. Nothing identifying is ever sent, in any mode. Loombre never installs an update by itself.
- Default:
daily - Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_UPDATE_CHECKis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_UPDATE_CHECKisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Security & sign-in logging
Local logging of suspicious sign-in activity.
Log suspicious sign-in activity
Setting key: security.loginAnomalyLogEnabled
Record suspicious sign-in activity — failed passwords, wrong PINs, too many attempts — to a log file on this machine. Nothing is ever sent anywhere.
- Default: On
- Applies: immediately — no restart needed.
Sign-in & request limits
How many attempts or requests are allowed in a given time window, per person or device — protects against automated guessing without locking anyone out under normal use.
Sign-in attempt limit
Setting key: rateLimit.login
How many sign-in attempts may come from one network address per minute before Loombre starts turning them away. Guards against password guessing. Several devices sharing one connection (a household router) share this allowance.
- Technical details: Keyed per source IP, not per device — the per-account companion is rateLimit.loginByIdentifier.
- Default: 10
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RATE_LOGINis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_RATE_LOGINisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Session refresh limit
Setting key: rateLimit.refresh
How many session-refresh requests may come from one network address per minute. Guards against flooding the server with requests for new sign-in tokens. Several devices sharing one connection share this allowance.
- Technical details: Keyed per source IP, not per device — the per-device companion is rateLimit.refreshByDevice.
- Default: 30
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RATE_REFRESHis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_RATE_REFRESHisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Restricted-content PIN attempt limit
Setting key: rateLimit.unlock
How many PIN attempts one person may make per minute when unlocking restricted content. Guards against someone guessing the PIN.
- Default: 5
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RATE_UNLOCKis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_RATE_UNLOCKisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Current-password re-authentication attempt limit
Setting key: rateLimit.currentPassword
How many current-password re-authentication attempts one person may make per minute when changing their password, email, or restricted-content PIN. Guards against someone guessing the account password.
- Default: 10
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RATE_CURRENT_PASSWORDis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_RATE_CURRENT_PASSWORDisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Setup wizard request limit
Setting key: rateLimit.setup
How many requests one device may make per minute to the first-time setup screen, before any account exists. Guards against abuse of that screen.
- Default: 20
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RATE_SETUPis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_RATE_SETUPisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Capability check request limit
Setting key: rateLimit.capabilities
How many times one device may ask the server what it supports, per minute. This is checked often during normal use, so the limit is set high.
- Default: 120
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RATE_CAPABILITIESis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_RATE_CAPABILITIESisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Data export request limit
Setting key: rateLimit.export
How many full library exports one person may download per hour (not per minute — exports are heavy).
- Default: 5
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RATE_EXPORTis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_RATE_EXPORTisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Media playback request limit
Setting key: rateLimit.mediaToken
How many media requests one person may make per minute — posters, video, and subtitles combined. Set this high: normal viewing makes many small requests.
- Default: 600
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RATE_MEDIA_TOKENis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_RATE_MEDIA_TOKENisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Claim
Setting key: rateLimit.claim
How many invite-claim attempts one device may make per minute, before any account exists for it. Guards the claim link against brute-force guessing.
- Default: 10
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RATE_CLAIMis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_RATE_CLAIMisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Password Reset
Setting key: rateLimit.passwordReset
How many password-recovery requests (forgot-password or reset-password) one device may make per minute. Guards against email-bombing an account and against guessing a reset token.
- Default: 5
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RATE_PASSWORD_RESETis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_RATE_PASSWORD_RESETisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Reachability-proof attempt limit
Setting key: rateLimit.probe
How many reachability-check attempts one device may make per minute while proving it can reach this server from outside your network (part of Remote Access setup). Guards that check against brute-force guessing.
- Default: 10
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RATE_PROBEis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_RATE_PROBEisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Login By Identifier
Setting key: rateLimit.loginByIdentifier
How many sign-in attempts one ACCOUNT may receive per minute, combined across every source address — separate from the per-device limit above. Guards against a distributed attempt to guess one person's password.
- Default: 20
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RATE_LOGIN_BY_IDENTIFIERis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_RATE_LOGIN_BY_IDENTIFIERisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Refresh By Device
Setting key: rateLimit.refreshByDevice
How many session-refresh requests one signed-in device may receive per minute, combined across every source address — separate from the per-device limit above. Guards against a distributed attempt to overwhelm one device's session renewal.
- Default: 40
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RATE_REFRESH_BY_DEVICEis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_RATE_REFRESH_BY_DEVICEisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Search
Setting key: rateLimit.search
How many search requests one person may make per minute — this covers both regular search and restricted-content search. Each search does some extra work behind the scenes, so this keeps that from being abused while staying generous enough for normal typing.
- Technical details: Shared by GET /search and GET /restricted/search, one bucket across both routes (the same sharing pattern rateLimit.mediaToken uses for its own route family). The generous ceiling exists because each request does an extra per-result detail lookup, so ordinary typeahead-style bursts must not trip it.
- Default: 60
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_RATE_SEARCHis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_RATE_SEARCHisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Network
The web address people use to reach this server from outside your own network.
Public web address
Setting key: network.publicUrl
The web address people use to reach this server from outside your own network (for example, https://myserver.example.com). Any link Loombre sends by email — invitations, password resets — is built only from this address, so it's never guessed from wherever a request happened to come from. Leave this blank and Loombre will not send mail that contains a link.
- Technical details: Must be empty, or an absolute http:// or https:// URL. This is the sole source for every security-sensitive link a piece of outgoing mail can ever contain — never derived from an incoming request's Host header.
- Default: (empty — not set)
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_PUBLIC_URLis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference.
Trust proxy
Setting key: network.trustProxy
Tells Loombre it's running behind a reverse proxy you control, so it can trust that proxy's information about which address a request really came from — used for rate-limiting and the sign-in log. Leave this blank unless you are running Loombre behind your own reverse proxy.
- Technical details: Accepts a hop count (e.g. "1"), a trusted IP address or CIDR range, or a comma-separated list of them.
- Default: (empty — not set)
- Applies: after a restart. Saving this shows a reminder banner until the server restarts — Settings → Server → Power has the restart button.
- Note: Only enable behind a reverse proxy you control — enabling this trusts client-supplied forwarded-address information for rate-limit and sign-in-log keying.
- Can be locked: if
LOOMBRE_TRUST_PROXYis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference.
HTTPS / TLS
How this server handles HTTPS for people connecting to it directly (not through a reverse proxy). The Direct path in the Remote-access wizard fills most of this in for you and tests it before turning it on.
TLS mode
Setting key: tls.mode
How Loombre handles HTTPS: 'off' serves plain HTTP (the right choice when a reverse proxy in front of Loombre handles HTTPS itself), 'manual' uses a certificate and key file you provide yourself, and 'acme' has Loombre request and automatically renew its own certificate from Let's Encrypt (or another compatible certificate authority) using the domain and verification settings below.
- Technical details: ACME issuance uses the domain(s) in tls.acmeDomains, the challenge method in tls.acmeChallengeType, and requires tls.acmeTosAgreed to be true. Resolved once at server boot, not re-read from a live process — that's why a mode change needs a restart to take effect.
- Default:
off - Applies: after a restart. Saving this shows a reminder banner until the server restarts — Settings → Server → Power has the restart button.
- Can be locked: if
LOOMBRE_TLS_MODEis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker?
LOOMBRE_TLS_MODEis deliberately not passed into the containers: the Docker distribution handles HTTPS with a reverse proxy in front of Loombre, never in-process — see the Docker install guide. Setting it inloombre.envhas no effect there.
Certificate domain name(s)
Setting key: tls.acmeDomains
The domain name(s) this server requests an HTTPS certificate for when TLS mode is 'acme' — the address people use to reach it from outside your network (for example media.example.com). The first one becomes the certificate's primary name.
- Technical details: Must be real domain names, not IP addresses — a bare IP address or a value with no dot is rejected before it's ever saved. Real issuance validity is ultimately decided by the certificate authority's own request at the time TLS mode 'acme' takes effect.
- Default: (none)
- Applies: after a restart. Saving this shows a reminder banner until the server restarts — Settings → Server → Power has the restart button.
- Can be locked: if
LOOMBRE_ACME_DOMAINSis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker?
LOOMBRE_ACME_DOMAINSis deliberately not passed into the containers: the Docker distribution handles HTTPS with a reverse proxy in front of Loombre, never in-process — see the Docker install guide. Setting it inloombre.envhas no effect there.
Certificate verification method
Setting key: tls.acmeChallengeType
How Loombre proves it controls the domain above, to get a certificate for it: 'http-01' answers a request on port 80 (simplest, when that port is reachable from the internet), 'dns-01' creates a temporary DNS record instead (works even with no reachable inbound port, and is required for a wildcard certificate).
- Default:
http-01 - Applies: after a restart. Saving this shows a reminder banner until the server restarts — Settings → Server → Power has the restart button.
- Can be locked: if
LOOMBRE_ACME_CHALLENGE_TYPEis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker?
LOOMBRE_ACME_CHALLENGE_TYPEis deliberately not passed into the containers: the Docker distribution handles HTTPS with a reverse proxy in front of Loombre, never in-process — see the Docker install guide. Setting it inloombre.envhas no effect there.
Accept certificate authority Terms of Service
Setting key: tls.acmeTosAgreed
Confirms you accept the certificate authority's Terms of Service on this server's behalf — required before Loombre will request a certificate automatically. Loombre never agrees on your behalf silently; this must be turned on explicitly.
- Default: Off
- Applies: after a restart. Saving this shows a reminder banner until the server restarts — Settings → Server → Power has the restart button.
- Can be locked: if
LOOMBRE_ACME_TOS_AGREEDis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker?
LOOMBRE_ACME_TOS_AGREEDis deliberately not passed into the containers: the Docker distribution handles HTTPS with a reverse proxy in front of Loombre, never in-process — see the Docker install guide. Setting it inloombre.envhas no effect there.
Mail
The outgoing mail server Loombre uses to send invitation and password-reset email. Entirely optional — every part of Loombre works without mail configured; see the Admin Guide's pages on inviting users and on users & permissions for the copy-link alternative.
Mail server address
Setting key: mail.smtpHost
The address of the outgoing mail server Loombre sends email through. Leave blank to leave mail sending turned off.
- Technical details: Your SMTP provider's hostname (e.g. smtp.mailprovider.com) — check your provider's setup page for the exact value. No username or password lives here: SMTP credentials, if the server requires them, are stored separately and encrypted; an unauthenticated relay on a private network is also a legal configuration with this field set and no credentials at all.
- Default: (empty — not set)
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_SMTP_HOSTis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference.
Mail server port
Setting key: mail.smtpPort
Which door on your mail provider's server Loombre connects to when sending email. Your provider's setup page lists it; 587 is the most common.
- Technical details: SMTP submission port. 587 = STARTTLS submission (recommended), 465 = implicit TLS, 25 = server-to-server relay, usually blocked for clients from outside their own network.
- Default: 587
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_SMTP_PORTis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference.
Mail connection security
Setting key: mail.smtpSecurity
How the connection to your mail server is protected. 'starttls' connects in the open and switches to an encrypted connection partway through (the most common choice); 'implicit-tls' is encrypted from the very first byte; 'none' is a plain, unencrypted connection with no protection at all.
- Technical details: 'starttls' pairs with port 587 (STARTTLS submission); 'implicit-tls' pairs with port 465 (TLS from connection open) — see mail.smtpPort's own technical notes.
- Default:
starttls - Applies: immediately — no restart needed.
- Note: Choosing 'none' sends your mail server password and every email in plain, readable text over the network — only use this for a private network relay you control, never for a mail server reached over the internet.
- Can be locked: if
LOOMBRE_SMTP_SECURITYis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference.
From address
Setting key: mail.fromAddress
The email address your outgoing mail appears to come from. Leave blank to leave mail sending turned off.
- Technical details: Must be empty or a syntactically valid email address — Loombre does not verify deliverability at save time; your first real send attempt is the only genuine test of whether the address actually works.
- Default: (empty — not set)
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_SMTP_FROM_ADDRESSis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference.
From name
Setting key: mail.fromName
The display name shown alongside the from-address on outgoing mail.
- Default:
Loombre - Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_SMTP_FROM_NAMEis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference.
Stash sync
Automatic scheduling for re-syncing metadata from a connected Stash database. See the Restricted content chapter for connecting Stash in the first place.
Automatic Stash re-sync interval
Setting key: stash.sync.scheduleIntervalMs
How often Loombre automatically re-syncs metadata from a connected Stash database. Enter the interval in milliseconds — 0 (the default) turns automatic scheduling off; Stash still syncs whenever you click the sync button or its database file changes on disk.
- Technical details: Value is in milliseconds; ceiling is 30 days (a sanity bound, not a recommended cadence).
- Default: 0 ms
- Applies: immediately — no restart needed.
Remote access
Settings for Loombre Remote (embedded WireGuard), the Tunnel path, and the Direct path — the three ways to reach this server from outside your own network.
WireGuard listener port
Setting key: remote.wireguardPort
Which network port Loombre Remote uses for its secure tunnel connections. A change only takes effect after a server restart (the port cannot be switched while the server is running), and the restart disconnects remote devices until they reconnect.
- Technical details: UDP port the in-process WireGuard listener binds to for its whole lifetime. Cannot be rebound to a different port while the server is running, hence the restart requirement.
- Default: 51820
- Applies: after a restart. Saving this shows a reminder banner until the server restarts — Settings → Server → Power has the restart button.
- Can be locked: if
LOOMBRE_WG_PORTis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_WG_PORTisn't one of them — setting it inloombre.envnever reaches the server process. The Compose file does read it to pick which host UDP port it publishes, so it must match this setting: if you change one, change both — nothing connects them automatically.
Remote-access tunnel subnet
Setting key: remote.subnet
The private range of addresses Loombre Remote assigns to your server and its enrolled devices for their secure tunnel connections — the server takes the first address, and each device gets the next free one. Changing this requires a server restart, and orphans any already-enrolled devices, since their addresses came from the old range.
- Technical details: An IPv4 CIDR block (e.g. 10.82.146.0/24), prefix length between /8 and /30. Server = the first usable address (.1 in a /24); devices are allocated the lowest-free address from the remaining usable range.
- Default:
10.82.146.0/24 - Applies: after a restart. Saving this shows a reminder banner until the server restarts — Settings → Server → Power has the restart button.
- Note: Avoid 100.64.0.0/10 (CGNAT space) — other VPN tools commonly use it, and a device running both could collide.
- Can be locked: if
LOOMBRE_WG_SUBNETis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_WG_SUBNETisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
WireGuard public endpoint
Setting key: remote.wireguardEndpointHost
The public address (hostname or IP) devices should connect to in order to reach this server through Loombre Remote — written into each device's configuration when it's enrolled. Leave this blank until you know this server's public address.
- Technical details: Combined with the WireGuard port setting above to form each newly enrolled device's endpoint address; already-enrolled devices are not updated retroactively when this changes.
- Default: (empty — not set)
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_WG_ENDPOINT_HOSTis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_WG_ENDPOINT_HOSTisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Cloudflare tunnel binary path
Setting key: remote.cloudflaredPath
Where to find the cloudflared program, if Loombre can't locate it automatically. Loombre does not install this program itself — install it yourself, then point this setting at it if auto-detect fails. Leave blank to let Loombre look for it automatically.
- Technical details: Explicit path to the cloudflared binary, used when it is not resolvable via the server's PATH.
- Default: (empty — not set)
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_CLOUDFLARED_PATHis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_CLOUDFLARED_PATHisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.
Tunnel public hostname
Setting key: remote.tunnelHostname
The public web address the Tunnel connection method routes through. Loombre sets this automatically when you turn on the Tunnel option in the setup wizard; you can edit it here afterward.
- Default: (empty — not set)
- Applies: immediately — no restart needed.
- Can be locked: if
LOOMBRE_TUNNEL_HOSTNAMEis set by whoever installed Loombre, this setting becomes fixed to that value and shows as controlled by the environment here — ask them, or see the Operator Guide's environment reference. - Running Loombre in Docker? The shipped Compose setup passes only an explicit list of variables into the containers, and
LOOMBRE_TUNNEL_HOSTNAMEisn't one of them — setting it inloombre.envhas no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file'senvironment:blocks.