Introduction to LibreChat
LibreChat serves as a centralized hub for AI conversations, offering a familiar ChatGPT-like user experience enriched with advanced features and extensive customization capabilities.
Key Features
- Multi-Provider Support: Connect to OpenAI, Anthropic, Google, Groq, Mistral, and more
- Multimodal Conversations: Upload images, analyze documents, and chat with files
- Advanced Agents: Create AI assistants with custom tools and API actions
- RAG Integration: Chat with your documents using the built-in RAG pipeline
- MCP Support: Integrate with Model Context Protocol servers
- Web Search: Enable AI models to search the web for current information
- Plugin System: Extend functionality with built-in and custom plugins
Why Self-Host LibreChat?
- Data Privacy: Keep all conversations on your own infrastructure
- Cost Control: Use your own API keys without platform markup
- Customization: Full control over features, endpoints, and branding
- No Usage Limits: Avoid rate limits imposed by hosted solutions
Prerequisites and Requirements
Server Requirements
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 1 vCPU | 2+ vCPU |
| RAM | 2 GB | 4 GB |
| Storage | 20 GB SSD | 40+ GB NVMe |
| OS | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS |
Note: With all features enabled (RAG, MeiliSearch, multiple endpoints), 4GB RAM is recommended for smooth operation.
Required Software
- Git: For cloning the LibreChat repository
- Docker Engine: Container runtime (v24.0+)
- Docker Compose: Container orchestration (v2.0+)
- Nginx: Reverse proxy for SSL termination
- Certbot: SSL certificate management with Let's Encrypt
API Keys
You will need API keys from one or more AI providers: OpenAI, Anthropic, Google AI, Groq, Mistral, OpenRouter, etc.
RamNode VPS Setup
Log in to your RamNode account at vps.ramnode.com, deploy a new server with Ubuntu 24.04 LTS and at least 2GB RAM.
Initial Server Configuration
ssh root@your-server-ip
apt update && apt upgrade -yadduser librechat
usermod -aG sudo librechat
# Configure SSH key for new user
mkdir -p /home/librechat/.ssh
cp ~/.ssh/authorized_keys /home/librechat/.ssh/
chown -R librechat:librechat /home/librechat/.ssh
chmod 700 /home/librechat/.ssh
chmod 600 /home/librechat/.ssh/authorized_keys
su - librechatDocker Installation
sudo apt install -y ca-certificates curl gnupg lsb-release
# Add Docker GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpgecho "deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin# Add user to docker group
sudo usermod -aG docker $USER
newgrp docker
# Verify installation
docker --version
docker compose version
# Enable on boot
sudo systemctl enable docker
sudo systemctl enable containerdLibreChat Deployment
cd ~
git clone https://github.com/danny-avila/LibreChat.git
cd LibreChatcp .env.example .env
# Generate secure credentials
openssl rand -hex 32 # For CREDS_KEY
openssl rand -hex 16 # For CREDS_IV
openssl rand -hex 32 # For JWT_SECRET
openssl rand -hex 32 # For JWT_REFRESH_SECRETEdit .env file
# Server Configuration
HOST=0.0.0.0
PORT=3080
# Credentials (REQUIRED)
CREDS_KEY=your-32-byte-hex-key-here
CREDS_IV=your-16-byte-hex-iv-here
# JWT Secrets
JWT_SECRET=your-jwt-secret-here
JWT_REFRESH_SECRET=your-jwt-refresh-secret-here
# Domain Configuration
DOMAIN_CLIENT=https://chat.yourdomain.com
DOMAIN_SERVER=https://chat.yourdomain.com
# MongoDB
MONGO_URI=mongodb://mongodb:27017/LibreChat
# User Registration
ALLOW_REGISTRATION=true
ALLOW_EMAIL_LOGIN=true
# API Keys (add yours)
OPENAI_API_KEY=sk-your-openai-key
ANTHROPIC_API_KEY=sk-ant-your-anthropic-key
GOOGLE_KEY=your-google-ai-keyWarning: Never commit your .env file to version control. It contains sensitive credentials.
docker compose up -d
# Verify containers
docker compose ps
# Check logs
docker compose logs -f apiAccess LibreChat at http://your-server-ip:3080. The first user to register will automatically be granted admin privileges.
Environment Configuration
Nginx Reverse Proxy with SSL
sudo apt install -y nginx certbot python3-certbot-nginx# /etc/nginx/sites-available/librechat
server {
listen 80;
server_name chat.yourdomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name chat.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/chat.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/chat.yourdomain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
client_max_body_size 100M;
location / {
proxy_pass http://127.0.0.1:3080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 600s;
}
}sudo ln -s /etc/nginx/sites-available/librechat /etc/nginx/sites-enabled/
sudo nginx -t
sudo certbot --nginx -d chat.yourdomain.com
sudo systemctl reload nginxSecurity Hardening
Security Best Practices
- Use strong, unique passwords for all credentials
- Enable rate limiting for login and registration
- Restrict registration to invited users only if needed
- Keep Docker images updated regularly
- Configure firewall rules with UFW
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enableTroubleshooting
LibreChat Deployed Successfully!
Your self-hosted AI chat platform is now running. Access it at your configured domain and start chatting with multiple AI providers through a unified interface.
