Skip to content

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_TRANSCODES is 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_CONCURRENCY is 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_CONCURRENCY is 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_CONCURRENCY is 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_CONCURRENCY is 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_CONCURRENCY is 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_ENABLED is 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_CHECK is 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_CHECK isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_LOGIN is 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 isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_REFRESH is 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 isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_UNLOCK is 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_UNLOCK isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_PASSWORD is 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_PASSWORD isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_SETUP is 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_SETUP isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_CAPABILITIES is 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_CAPABILITIES isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_EXPORT is 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_EXPORT isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_TOKEN is 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_TOKEN isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_CLAIM is 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_CLAIM isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_RESET is 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_RESET isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_PROBE is 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_PROBE isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_IDENTIFIER is 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_IDENTIFIER isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_DEVICE is 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_DEVICE isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: blocks.

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_SEARCH is 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_SEARCH isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_URL is 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_PROXY is 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_MODE is 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_MODE is 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 in loombre.env has 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_DOMAINS is 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_DOMAINS is 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 in loombre.env has 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_TYPE is 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_TYPE is 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 in loombre.env has 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_AGREED is 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_AGREED is 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 in loombre.env has 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_HOST is 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_PORT is 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_SECURITY is 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_ADDRESS is 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_NAME is 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_PORT is 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_PORT isn't one of them — setting it in loombre.env never 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_SUBNET is 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_SUBNET isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_HOST is 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_HOST isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_PATH is 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_PATH isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: 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_HOSTNAME is 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_HOSTNAME isn't one of them — setting it in loombre.env has no effect there. Change the setting here on the settings screen instead, or have whoever installed Loombre add the variable to the compose file's environment: blocks.

Released under the AGPL-3.0-only license. No telemetry, ever.