Skip to main content
Libredesk is a single binary application that requires postgres and redis to run. You can install it using the binary or docker.

Installation Methods

Configuration via Environment Variables

Instead of using a config.toml file, you can configure Libredesk entirely through environment variables.
  • All environment variables use the LIBREDESK_ prefix
  • Use double underscore (__) for nested configuration keys
  • To use environment variables exclusively (without a config file), pass --config=""
Example:
TOML ConfigEnvironment Variable
upload.fs.upload_path = "uploads"LIBREDESK_UPLOAD__FS__UPLOAD_PATH=uploads
db.host = "localhost"LIBREDESK_DB__HOST=localhost
We recommend running Libredesk behind Nginx as a reverse proxy. Install nginx if you don’t have it:
# Debian / Ubuntu
sudo apt update && sudo apt install nginx

# RHEL / Fedora / CentOS
sudo dnf install nginx && sudo systemctl enable --now nginx
The proxy must set X-Client-IP to $remote_addr - Libredesk uses this header to identify the client for rate limiting and audit logs. Without it, the proxy’s IP is treated as the client.
Save the following as /etc/nginx/sites-available/libredesk:
server {
    listen 80;
    server_name your-domain.com;
    client_max_body_size 30M;

    location / {
        proxy_pass http://localhost:9000;
        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-Client-IP $remote_addr;
        # If behind Cloudflare (or another CDN), forward the CDN's real-client header
        # instead, AND firewall nginx to only accept connections from the CDN's IP range,
        # otherwise clients can bypass the CDN and spoof this header directly.
        # proxy_set_header X-Client-IP $http_cf_connecting_ip;   # Cloudflare

        proxy_cache_bypass $http_upgrade;
    }
}
Then enable it and reload nginx:
sudo ln -s /etc/nginx/sites-available/libredesk /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx