collabvm-1.2.ts/config.example.toml
modeco80 405e88bd1b cvmts: Allow specifying cgroup cpu period
probably limited utility wise but it's there now
2024-11-03 13:10:57 -05:00

163 lines
5.8 KiB
TOML

[http]
host = "0.0.0.0"
port = 6004
# Whether the server is behind a reverse proxy, like NGINX
proxying = false
# IPs allowed to access the server in proxy mode.
# 99% of the time this will only be 127.0.0.1
proxyAllowedIps = ["127.0.0.1"]
# Whether the Origin header check is enabled.
origin = false
# Origins to accept connections from.
originAllowedDomains = ["computernewb.com"]
[geoip]
# Enables support for showing country flags next to usernames.
enabled = false
# Directory to store and load GeoIP databases from.
directory = "geoip/"
# MaxMind license key and account ID (https://www.maxmind.com/en/accounts/current/license-key)
accountID = ""
licenseKey = ""
[tcp]
# Enabled the raw TCP socket server
# You usually want to leave this disabled
enabled = false
host = "0.0.0.0"
port = 6014
[auth]
# Enables the CollabVM account authentication system
# Requires an authentication server (https://git.computernewb.com/collabvm/CollabVMAuthServer)
enabled = false
apiEndpoint = ""
secretKey = "hunter2"
# When account authentication is enabled, this section defines what guests can and can't do
# Has no effect if auth is disabled
[auth.guestPermissions]
chat = true
turn = false
callForReset = false
vote = true
[vm]
# Configures the type of VM this server will use
# Supported values:
# "qemu" - Runs a QEMU VM
# "vncvm" - Connects to an existing VNC server
type = "qemu"
# QEMU options
# Only used if vm.type is set to "qemu"
[qemu]
qemuArgs = "qemu-system-x86_64"
# VNC port to be used for this VM. Must be unique among all VMs. Only used on Windows, as unix sockets are used on Linux.
vncPort = 5900
snapshots = true
# Resource limits.
# Only works on Linux, with `Delegate=yes` set in your .service file. No-op on other platforms.
#
# cpuUsageMax is an optional value specifies the max CPU usage as percentage in the common top notation.
# 200% means 2 CPUs, 400% is 4 CPUs.
#
# A general reccomendation is to set this to 100*[vCPU count].
# For example, if your QEMU command line contains -smp cores=2, then cpuUsageMax should be 200.
# For an overcomitted host, you can use lower values,
# but it *can* get noticable if you throttle CPU too low.
#
# runOnCpus is an optional array that specifies what CPUs the VM is allowed to run on.
# This option will *not* work if you do not use a system service. (effectively, it will be a loud no-op that logs an error on startup).
#
# periodMs is an optional value in milliseconds that specifies the cgroup's CPU accounting period.
# The default is 100 ms (which matches the cgroups2 defaults), and should work in pretty much all cases, but
# it's a knob provided for any addl. tuning purposes.
#
# limitProcess is an optional boolean (default false) that determines if only qemu vCPU threads are put into the cgroup,
# or the entire QEMU process (incl. all its threads). The default behaviour of only limiting vCPU threads
# is more than likely what you want, so the example configuration omits specifying this key.
#
# Commenting or removing this table from the configuration disables resource limiting entirely.
resourceLimits = { cpuUsageMax = 100, runOnCpus = [ 2, 4 ] }
# VNC options
# Only used if vm.type is set to "vncvm"
[vncvm]
vncHost = "127.0.0.1"
vncPort = 5900
# startCmd = ""
# stopCmd = ""
# rebootCmd = ""
# restoreCmd = ""
[mysql]
# Configures the MySQL database. This is ONLY required if you use the internal cvmban banning system (configured below)
enabled = false
host = "127.0.0.1"
username = "root"
password = "hunter2"
database = "cvmts"
# This section configures banning users. Note that if you leave this default, banning will NOT function and will be as effective as a kick.
[bans]
# If defined, a command that is run to ban a user from the VM.
# Use $IP to specify an ip and (optionally) use $NAME to specify a username
# bancmd = ""
# If true, enables the internal banning of users using the above MySQL database
cvmban = false
[collabvm]
# Node ID for this server
# Make sure this is unique among all the other nodes in a webapp
node = "acoolvm"
# HTML display name shown on the VM list
displayname = "A <b>Really</b> Cool CollabVM Instance"
# HTML message shown in the chat when a user joins
motd = "welcome!"
# Maximum amount of active connections allowed from the same IP.
maxConnections = 3
# Moderator rank enabled (permissions are defined below)
moderatorEnabled = true
# List of disallowed usernames
usernameblacklist = []
# Maximum length of a chat message
maxChatLength = 100
# Maximum messages in the chat history buffer before old messages are overwritten
maxChatHistoryLength = 10
# Limit the amount of users allowed in the turn queue at the same time from the same IP
turnlimit = { enabled = true, maximum = 1 }
# Temporarily mute a user if they send more than x messages in n seconds
automute = { enabled = true, seconds = 5, messages = 5 }
# How long a temporary mute lasts, in seconds
tempMuteTime = 30
# How long a turn lasts, in seconds
turnTime = 20
# How long a reset vote lasts, in seconds
voteTime = 100
# How long until another vote can be started, in seconds
voteCooldown = 180
# SHA256 sum of the admin and mod passwords. This can be generated with the following command:
# printf "<password>" | sha256sum -
# Example hash is hunter2 and hunter3
adminpass = "f52fbd32b2b3b86ff88ef6c490628285f482af15ddcb29541f94bcf526a3f6c7"
modpass = "fb8c2e2b85ca81eb4350199faddd983cb26af3064614e737ea9f479621cfa57a"
# Whether a password is required to take a turn
turnwhitelist = false
# SHA256 sum for the password to take a turn. Only takes effect if turnwhitelist == true. If set to an empty string or not provided, only admins and mods can take turns
turnpass = ""
# What a moderator can and can't do
[collabvm.moderatorPermissions]
restore = true
reboot = true
ban = true
forcevote = true
mute = true
kick = true
bypassturn = true
rename = true
grabip = true
xss = true