Repository navigation
📏 docs: Add System Requirements to Local Installation Guides #832
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 3 commits
585d63b
02d1052
f51c9a7
6eeed8a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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. | ||
|
|
||
| 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**. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
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 👍 / 👎.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
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, Useful? React with 👍 / 👎.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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: | ||
|
|
||
|
|
||
| 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() | ||
| }) | ||
| }) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 👍 / 👎.
There was a problem hiding this comment.
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.