Skip to content

Configuration

Alireza Janaki edited this page Jan 4, 2026 · 13 revisions

Configuration Guide

This guide covers how to configure UltimateServer to meet your needs.

Configuration File Location

The main configuration file is located at config.json in the root directory of your UltimateServer installation.

Basic Configuration

Server Settings

{
    "Ip": "0.0.0.0",
    "MaxConnections": 50,
    "PluginsDirectory": "plugins"
}
  • Ip: Server IP address to bind to (default: "0.0.0.0")
  • MaxConnections: Maximum number of concurrent connections (default: 50)
  • PluginsDirectory: The directory where the server scans for plugin DLLs (default: "plugins")

Security Settings

{
    "PasswordMinLength": 8,
    "RequireSpecialChars": true,
    "MaxFailedLoginAttempts": 5,
    "LockoutDurationMinutes": 30,
    "JwtExpiryHours": 24,
    "RefreshTokenDays": 7
}
  • PasswordMinLength: Minimum required length for user passwords
  • RequireSpecialChars: Enforces special characters in passwords
  • MaxFailedLoginAttempts: Number of failed attempts before account lockout
  • LockoutDurationMinutes: Duration of the account lockout
  • JwtExpiryHours: Expiration time for JWT access tokens
  • RefreshTokenDays: Expiration time for refresh tokens

Performance Settings

{
    "MaxRequestSizeMB": 100,
    "EnableCompression": true,
    "CacheExpiryMinutes": 15,
    "ConnectionPoolSize": 10
}
  • MaxRequestSizeMB: Maximum size of HTTP requests in MB
  • EnableCompression: Enables Gzip/Deflate compression for HTTP responses
  • CacheExpiryMinutes: Default expiry time for cached items
  • ConnectionPoolSize: The number of connections to keep in the pool

Example Configuration

{
  "DebugMode": false,
  "PanelDomain": "panel.example.com",
  "Ip": "0.0.0.0",
  "MaxConnections": 50,
  "DashboardPasswordHash": "12345678",
  "PasswordMinLength": 8,
  "RequireSpecialChars": true,
  "MaxFailedLoginAttempts": 5,
  "LockoutDurationMinutes": 30,
  "JwtExpiryHours": 24,
  "RefreshTokenDays": 7,
  "MaxRequestSizeMB": 100,
  "EnableCompression": true,
  "CacheExpiryMinutes": 15,
  "ConnectionPoolSize": 10,
  "email_host": "your-smtp-service-provider-like-smtp.gmail.com",
  "email_port": 587,
  "email_username": "your-smtp-service-username",
  "email_password": "your-smtp-service-password",
  "email_useSsl": true
}

Command Line Arguments

You can specify ports using command line arguments:

dotnet Server.dll <Server_Port> <Dashboard_Port> <Voicechat_Port> <SFTP_Port>

Example with custom ports:

dotnet Server.dll 12001 12002 12003 11004

Nginx Configuration

For production deployments, it's recommended to use Nginx as a reverse proxy:

server {
    listen 80;
    server_name your-domain.com;
location / {
    proxy_pass http://localhost:11002;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection keep-alive;
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

}

SSL/TLS Configuration

To secure your dashboard with HTTPS:

  1. Obtain an SSL certificate (e.g., from Let's Encrypt)
  2. Configure Nginx:
    server {
    listen 443 ssl http2;
    server_name your-domain.com;
    
    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;
    
    location / {
        proxy_pass http://localhost:11002;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    

    }

    server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; }

Next Steps

After configuring your server:

Clone this wiki locally