Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions content/docs/local/docker.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,16 @@ For most scenarios, Docker Compose is the recommended installation method due to

Docker Desktop is recommended for most users. For remote server installations, see the [Ubuntu Docker Deployment Guide](/docs/remote/docker_linux).

### System Requirements

LibreChat does not run AI models itself; it sends requests to the providers you configure, so it does not need a GPU.

Your computer must first meet Docker Desktop's own requirements. At the time of writing, Docker Desktop needs at least 4 GB of system RAM on [macOS](https://docs.docker.com/desktop/setup/install/mac-install/) and [Linux](https://docs.docker.com/desktop/setup/install/linux/), and 8 GB on [Windows](https://docs.docker.com/desktop/setup/install/windows-install/), plus hardware virtualization. Check the linked pages for the current requirements.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Scope the host minimums to Docker Desktop users

For a local Linux user running Docker Engine natively, the 4 GB and KVM requirements stated here do not apply: Docker's Linux Desktop documentation explains that Desktop runs its own VM and can be installed side-by-side with the native Engine. Because this guide lists generic Docker as the prerequisite and says Desktop is only recommended, the categorical “Your computer must” incorrectly rules out valid Engine-based local installations, including the documented 1 GiB setup. Make these host requirements conditional on choosing Docker Desktop.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 6eeed8a. The host minimums now apply only "If you use Docker Desktop", explaining that Desktop runs its own VM, and the paragraph states that Docker Engine installed directly on Linux has no separate VM. The LibreChat container minimum comes first and stands on its own. Covered by @Scenario:docker-guide-scopes-host-requirements-to-docker-desktop.


On top of that, LibreChat's containers need at least 1 GiB of RAM and 1 vCPU, the same [minimum](/docs/remote#minimum-requirements) as on a server. The default Docker Compose file starts MongoDB, Meilisearch (conversation search), and the RAG API with a PostgreSQL/pgvector database (file search) alongside LibreChat. It also defines the admin panel, which only starts once `ADMIN_PANEL_SESSION_SECRET` is set in `.env` (see [Admin Panel](/docs/features/admin_panel)). With everything running, give Docker at least 2 GB of memory for smoother operation. On Docker Desktop, check the memory limit under **Settings > Resources**.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Give WSL 2 users the correct memory-setting path

When a Windows user follows the recommended Docker Desktop path with its default WSL 2 backend, there is no Docker memory-limit control under Settings > Resources. Docker's settings reference limits that control to macOS, Linux, and Windows Hyper-V, while WSL 2 resource limits must be configured on the WSL utility VM. Qualify this instruction by backend and direct WSL 2 users to the appropriate configuration; otherwise, most Windows readers cannot follow the memory-allocation guidance.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 6eeed8a. The memory guidance is now split by backend: Docker Desktop's resource settings on macOS, Linux and Windows with Hyper-V; with the Windows WSL 2 backend it is set on the WSL 2 VM, linking to Docker's WSL best-practices page. The unconditional Settings > Resources instruction is gone. Covered by @Scenario:docker-guide-memory-setting-matches-desktop-backend.


If you connect LibreChat to models running on the same machine, such as [Ollama](/docs/configuration/librechat_yaml/ai_endpoints/ollama), size the hardware for the model you choose. That model runtime needs far more memory, and often a GPU, than LibreChat does.

<Callout type="warn" title="Apple Silicon (M-series) Macs">

Mac computers with Apple Silicon (M1, M2, M3, M4) processors do not support AVX instructions, which are required by the default MongoDB image used in LibreChat's Docker Compose setup. If you're on an M-series Mac, MongoDB will crash on startup.
Expand Down
1 change: 1 addition & 0 deletions content/docs/local/npm.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ For most scenarios, Docker Compose is the recommended installation method due to
- MongoDB (Atlas or Community Server)
- [MongoDB Atlas](/docs/configuration/mongodb/mongodb_atlas)
- [MongoDB Community Server](/docs/configuration/mongodb/mongodb_community)
- At least 1 GiB RAM and 1 vCPU. See [System Requirements](/docs/local/docker#system-requirements) for what to plan for when you add more services or run models locally.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Account for the npm path's required frontend build

On a host provisioned to this advertised 1 GiB minimum, the installation can run out of memory before LibreChat ever starts: the guide's next command, npm run reinstall, executes npm ci followed by the full frontend build, and LibreChat configures that Vite build with an 8192 MiB old-space ceiling (update.js, client/package.json); its Docker build similarly budgets 6144 MiB. The 1 GiB server runtime minimum therefore should not be reused for this source-build path without a separate build-time RAM requirement or a warning to use the prebuilt Docker image on minimum-spec systems.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 6eeed8a. Confirmed against LibreChat dev: npm run reinstall runs npm run frontend (config/update.js), which ends in the client build with NODE_OPTIONS=--max-old-space-size=8192 (client/package.json). The npm prerequisite now scopes 1 GiB / 1 vCPU to running LibreChat and adds that the source build needs much more memory, pointing low-memory machines to the prebuilt Docker images. No build-time RAM figure is stated because none is published; the heap ceiling is quoted as what it is. Covered by @Scenario:npm-guide-warns-source-build-needs-more-memory.


If you use `nvm`, install and select the recommended Node.js version, then update npm:

Expand Down
71 changes: 71 additions & 0 deletions e2e/local-system-requirements.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import { expect, test, type Page } from '@playwright/test'

const DOCKER = '/docs/local/docker'

function body(page: Page) {
return page.locator('#nd-page')
}

function requirements(page: Page) {
return body(page).locator('h3#system-requirements ~ p')
}

test.describe('Local installation system requirements', () => {
test('@scenario:docker-guide-separates-host-and-container-requirements a Docker reader sees Docker Desktop host minimums apart from the container minimum', async ({
page,
}) => {
await page.goto(DOCKER)

await expect(
body(page).getByRole('heading', { level: 3, name: 'System Requirements' }),
).toBeVisible()

// Docker Desktop's own host requirement comes first, per platform, so the
// 1 GiB container minimum is never read as the whole machine's requirement.
for (const [name, href] of [
['macOS', 'https://docs.docker.com/desktop/setup/install/mac-install/'],
['Linux', 'https://docs.docker.com/desktop/setup/install/linux/'],
['Windows', 'https://docs.docker.com/desktop/setup/install/windows-install/'],
]) {
await expect(
requirements(page).getByRole('link', { name, exact: true }).first(),
).toHaveAttribute('href', href)
}
await expect(requirements(page).filter({ hasText: 'at least 4 GB of system RAM' })).toHaveCount(
1,
)
await expect(requirements(page).filter({ hasText: '1 GiB of RAM and 1 vCPU' })).toHaveCount(1)

const minimum = requirements(page).getByRole('link', { name: 'minimum', exact: true })
await expect(minimum).toHaveAttribute('href', '/docs/remote#minimum-requirements')

await page.goto('/docs/remote')
await expect(page.locator('#minimum-requirements')).toBeVisible()
})

test('@scenario:docker-guide-admin-panel-needs-session-secret the admin panel is not promised to run without its session secret', async ({
page,
}) => {
await page.goto(DOCKER)

const compose = requirements(page).filter({ hasText: 'default Docker Compose file' })
await expect(compose).toContainText('ADMIN_PANEL_SESSION_SECRET')
await expect(compose.getByRole('link', { name: 'Admin Panel' })).toHaveAttribute(
'href',
'/docs/features/admin_panel',
)
})

test('@scenario:npm-guide-links-to-system-requirements an npm reader is pointed at the requirements section', async ({
page,
}) => {
await page.goto('/docs/local/npm')

const link = body(page).getByRole('link', { name: 'System Requirements' })
await expect(link).toHaveAttribute('href', `${DOCKER}#system-requirements`)

await link.click()
await expect(page).toHaveURL(new RegExp(`${DOCKER}#system-requirements$`))
await expect(page.locator('#system-requirements')).toBeVisible()
})
})
Loading