Configuration
Luker's configuration file is config.yaml in the project root directory. On first launch, if the file doesn't exist, Luker will copy a default configuration from default/config.yaml.
Core Settings
Data Directory
dataRoot: ./dataThe root directory for all user data (character cards, chat logs, presets, world info, etc.). In multi-user mode, each user's data is stored in a <dataRoot>/<username>/ subdirectory.
Port Settings
port: 8000The port the server listens on. To allow LAN access, also set listen to true:
listen: true
listenAddress:
ipv4: 0.0.0.0
ipv6: "[::]"
protocol:
ipv4: true
ipv6: falseSSL/TLS
ssl:
enabled: false
certPath: "./certs/cert.pem"
keyPath: "./certs/privkey.pem"
keyPassphrase: ""To enable HTTPS, set enabled to true and provide the certificate and private key paths. If the private key is password-protected, fill in keyPassphrase.
Proxy Settings
SillyTavern supports forwarding outbound requests (such as API calls) through HTTP, HTTPS, or SOCKS proxies, and Luker inherits this feature:
requestProxy:
enabled: false
url: socks5://username:password@example.com:1080
bypass:
- localhost
- 127.0.0.1url: Proxy server address, supportinghttp://,https://,socks://,socks4://,socks4a://,socks5://,socks5h://, andpac+*://protocolsbypass: List of addresses that bypass the proxy
CORS Proxy
enableCorsProxy: falseWhen enabled, Luker provides a CORS proxy endpoint for frontend cross-origin request forwarding.
Authentication and Multi-User
Basic Authentication
basicAuthMode: false
basicAuthUser:
username: user
password: passwordWhen enabled, accessing Luker requires a username and password. Suitable for single-user scenarios.
Multi-User Mode
enableUserAccounts: true
enableDiscreetLogin: false
perUserBasicAuth: falseenableUserAccounts: Enables the multi-user account system, giving each user an independent data directoryenableDiscreetLogin: Enables discreet login modeperUserBasicAuth: Enables independent HTTP Basic authentication for each user
Password Reset
If you forget a user's password, you can reset it via the command-line tool:
# Reset user password
node recover.js <username> <new-password>
# Example: reset default-user's password
node recover.js default-user myNewPassword
# Omit password to clear it
node recover.js default-userTIP
This command must be run from the Luker project root directory. The server does not need to be running.
SSO (Single Sign-On)
sso:
autheliaAuth: false
authentikAuth: falseLuker supports single sign-on through reverse proxy authentication solutions like Authelia or Authentik. For detailed configuration, see Authentication and Quotas.
Host Whitelist
hostWhitelist:
enabled: false
scan: true
hosts: []Restricts which host addresses are allowed to access the server. When scan is enabled, it logs warnings about requests from untrusted hosts not in the whitelist, without blocking them (unless enabled is also set to true).
Security Settings
IP Whitelist
whitelistMode: true
enableForwardedWhitelist: true
whitelist:
- ::1
- 127.0.0.1
whitelistDockerHosts: trueWhitelist mode is enabled by default, allowing only local access. To allow LAN access, add the corresponding IPs to the whitelist list, or disable whitelistMode.
Session and CSRF
sessionTimeout: -1
disableCsrfProtection: false
securityOverride: falsesessionTimeout: Session timeout in seconds;-1means no timeoutdisableCsrfProtection: Disables CSRF protection (not recommended)securityOverride: Security override switch (for debugging only)
Backup and Storage
backups:
common:
numberOfBackups: 50
chat:
enabled: true
checkIntegrity: true
maxTotalBackups: -1
throttleInterval: 10000
allowFullDataBackup: truecheckIntegrity: Enables chat file integrity checks to prevent concurrent write conflictsthrottleInterval: Backup throttle interval in milliseconds to avoid excessive backupsmaxTotalBackups: Maximum number of chat backups;-1means unlimited
Other Settings
logging:
enableAccessLog: true
minLogLevel: 0
rateLimiting:
preferRealIpHeader: false
thumbnails:
enabled: true
format: jpg
quality: 95logging: Log configuration;minLogLevelcontrols the minimum log levelrateLimiting: Rate limiting;preferRealIpHeaderuses the real IP behind a reverse proxythumbnails: Thumbnail generation configuration
Plugin and Extension Paths
serverPluginsPath: ./plugins
globalExtensionsPath: ./public/scripts/extensions/third-partyserverPluginsPath: Server-side plugin directoryglobalExtensionsPath: Global frontend extension directory (where third-party extensions are installed)