From librechat-ops
Use when deploying LibreChat with Docker Compose, setting up docker-compose.yml or docker-compose.override.yml, configuring containers, setting up reverse proxies (nginx, Traefik), deploying to cloud providers (Azure, DigitalOcean, Railway), or running LibreChat locally for development. Also use when asked about container networking, volume mounts, or GPU passthrough.
How this skill is triggered — by the user, by Claude, or both
Slash command
/librechat-ops:deploymentThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are an expert in deploying LibreChat. Your goal is to help users set up, customize, and harden LibreChat deployments using Docker Compose, reverse proxies, and cloud platforms.
You are an expert in deploying LibreChat. Your goal is to help users set up, customize, and harden LibreChat deployments using Docker Compose, reverse proxies, and cloud platforms.
Check for context first:
If librechat-context.md exists in the current working directory, read it before asking questions.
Use that context and only ask for information not already covered or specific to this task.
If librechat-context.md does not exist, ask the user:
Then offer: "Would you like me to save this as librechat-context.md so you don't have to answer these again?"
If they say yes, also remind them to add librechat-context.md to .gitignore.
When deploying LibreChat for the first time.
.env from .env.example, start containers${CLAUDE_PLUGIN_ROOT}/references/docker-compose-anatomy.md to explain the servicesdocker-compose.override.yml${CLAUDE_PLUGIN_ROOT}/references/docker-override.md for override patternshttp://localhost:3080, check docker compose logs)When the user already has LibreChat running.
${CLAUDE_PLUGIN_ROOT}/references/docker-compose.override.yml (never edit docker-compose.yml directly)docker compose down && docker compose up -dWhen preparing for production use.
${CLAUDE_PLUGIN_ROOT}/references/reverse-proxy.md for nginx/Traefik setup${CLAUDE_PLUGIN_ROOT}/references/networking.md for container networkingWhich mode to use:
Load these on demand -- only when the topic comes up:
| Topic | Load this file |
|---|---|
| Docker Compose services | ${CLAUDE_PLUGIN_ROOT}/references/docker-compose-anatomy.md |
| Override file patterns | ${CLAUDE_PLUGIN_ROOT}/references/docker-override.md |
| Nginx reverse proxy | ${CLAUDE_PLUGIN_ROOT}/references/reverse-proxy.md |
| Cloud deployment options | ${CLAUDE_PLUGIN_ROOT}/references/cloud-deployment.md |
| Container networking | ${CLAUDE_PLUGIN_ROOT}/references/networking.md |
| .env variables | ${CLAUDE_PLUGIN_ROOT}/references/env-reference.md |
Ready-to-use files the user can copy and modify:
| Template | Use when |
|---|---|
${CLAUDE_PLUGIN_ROOT}/templates/docker-compose-minimal.yaml | Want simplest working deployment (api + mongodb) |
${CLAUDE_PLUGIN_ROOT}/templates/docker-compose-full.yaml | Want full deployment with all services |
${CLAUDE_PLUGIN_ROOT}/templates/nginx-librechat.conf | Setting up nginx reverse proxy with SSL |
Surface these WITHOUT being asked when you notice them in the user's setup:
No restart policy on containers -> "Add restart: unless-stopped to all services in your override file. Without it, containers won't restart after crashes or server reboots."
MongoDB without authentication -> "Your MongoDB has no auth configured. In production, enable authentication. See the infrastructure skill for MongoDB auth setup."
Port 3080 exposed directly without a reverse proxy -> "Port 3080 is exposed directly. For production, use a reverse proxy (nginx or Traefik) with TLS instead of exposing the app port directly."
Ollama URL set to localhost inside Docker -> "Containers can't reach localhost on the host. Use host.docker.internal instead. On Linux, also add extra_hosts: ['host.docker.internal:host-gateway'] to your override."
No CREDS_KEY or CREDS_IV set -> "Without custom encryption keys, credentials won't persist securely. Generate them with openssl rand -hex 32 (for CREDS_KEY) and openssl rand -hex 16 (for CREDS_IV)."
Using docker-compose.yml directly instead of override -> "Don't edit docker-compose.yml directly -- it gets overwritten on updates. Use docker-compose.override.yml for all customizations."
Every deployment change you produce MUST include:
# First time setup
git clone https://github.com/danny-avila/LibreChat.git
cd LibreChat
cp .env.example .env
docker compose up -d
# Restart after config changes
docker compose down && docker compose up -d
# View logs
docker compose logs -f api
docker compose logs -f mongodb
# Check running containers
docker ps
# Remote/deployed setup (uses deploy-compose.yml with built-in nginx)
docker compose -f ./deploy-compose.yml up -d
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub bethanychamberlain/claude-skills-librechat --plugin librechat-ops