Skip to main content

Configuration

tip

Check out configuration.ts for all possible environment variables incase we forgot to update this page.

All configuration properties of your GameVault server are passed as environment variables or via a .env file. The following tables describe the available properties, their default values, explanations, and possible values.

Configuration Properties

This page describes the various configuration properties used in the application. These properties can be configured in the environment variables or in a .env file.

SERVER

PropertyDescriptionDefaultPossible Values
PUIDThe User-Identifer that should be used.1000Any user id (number)
PGIDThe Group-Identifer that should be used.1000Any group id (number)
SERVER_PORTThe port the server should use. (Only relevant if the server is run without docker on bare metal.)8080Any non-reserved free port (1024 to 49151)
SERVER_LOG_LEVELThe log level of the server.infodebug, info, warn, error, fatal, off
SERVER_LOG_FILES_ENABLEDIf the server should also write the logs to the VOLUMES_LOGS directory via rolling file logger.truetrue, false
SERVER_REQUEST_LOG_FORMATThe morgan log format for incoming HTTP RequestsCustom Log Formatshort, combined and many more
SERVER_CORS_ALLOWED_ORIGINSAllowed CORS origins for the server.All OriginsA comma-separated list of origins
SERVER_REGISTRATION_DISABLEDIf registration is enabled or not.falsetrue, false
SERVER_ONLINE_ACTIVITIES_DISABLEDWether or not the server should listen to online activities like "ONLINE", "BUSY", "PLAYING" etc. If this is set to true, all users will always be shown as offline.falsetrue, false
SERVER_ACCOUNT_ACTIVATION_DISABLEDIf accounts need to be activated by an admin before using them.falsetrue, false
SERVER_ADMIN_USERNAMEThe Server grants Admin Role to User with this Username on register or startup.-Any username
SERVER_ADMIN_PASSWORDOnly used for password recovery of existing users. Resets the password of the user with the username set in SERVER_ADMIN_USERNAME to this password on startup. ⚠️ CAUTION: This won't register a new account for you!-Any password (No Length Validation)
SERVER_API_DOCS_ENABLEDEnables the API Specification Documenation on /api/docs, /api/docs-json & /api/docs/yaml.falsetrue, false
SERVER_MAX_DOWNLOAD_BANDWIDTH_IN_KBPSMaximum bandwidth for downloads on this server in KB/s.- (Unlimited)Any Number
SERVER_DEMO_MODE_ENABLEDEnables the Demo Mode. Only used for our official demo server. You won't need this.falsetrue, false

VOLUMES

PropertyDescriptionDefaultPossible Values
VOLUMES_FILESFolder inside container used for game files./filesAny valid folder path
VOLUMES_IMAGESFolder inside container used for images./imagesAny valid folder path
VOLUMES_LOGSFolder inside container used for logs./logsAny valid folder path
VOLUMES_SQLITEDBFolder inside container used for SQLITE database. (Not needed if DB_SYSTEM is set to POSTGRESQL)/dbAny valid folder path

Sure, here's the filled-in table:

PropertyDescriptionDefaultPossible Values
DB_SYSTEMThe database system used (POSTGRESQL or SQLITE).POSTGRESQLPOSTGRESQL, SQLITE
DB_HOSTThe host of the database (not needed for SQLITE).localhostAny valid host name
DB_PORTThe port of the database (not needed for SQLITE).5432Any valid port number
DB_USERNAMEThe username for the database (not needed for SQLITE).defaultAny valid username
DB_PASSWORDThe password for the database (not needed for SQLITE).defaultAny valid password
DB_DATABASEThe database name (not needed for SQLITE).gamevaultAny valid database name
DB_SYNCHRONIZEForce synchronizes the database with the entities. ⚠️ CAUTION: This could break your database!falsetrue, false
DB_DEBUGLog all SQL Statements sent to the database.falsetrue, false
DB_TLS_ENABLEDEnable TLS encryption for the Database connection. (not needed for SQLITE).falsetrue, false
DB_TLS_REJECT_UNAUTHORIZED_ENABLEDWhether or not to reject connections if the Database server's certificate is not signed by a trusted CA. (not needed for SQLITE).falsetrue, false
DB_TLS_CA_CERTIFICATE_PATHThe file path to the root certificate authority (CA) certificate. If using Docker, you need to mount it there. (not needed for SQLITE).-/path/to/server-certificates/root.crt
DB_TLS_KEY_PATHThe file path to the client's private key for TLS authentication. If using Docker, you need to mount it there. (not needed for SQLITE).-/path/to/client-key/database.key
DB_TLS_CERTIFICATE_PATHThe file path to the client's TLS certificate. If using Docker, you need to mount it there. (not needed for SQLITE).-/path/to/client-certificates/database.crt

RAWG_API

PropertyDescriptionDefaultPossible Values
RAWG_API_URLBase URL of the RAWG API.https://api.rawg.io/apiAny valid URL
RAWG_API_KEYAPI key for the RAWG API. Can be changed to a drop-in replacement like https://rawg2steam.phalco.de/api.""Any valid RAWG API key
RAWG_API_CACHE_DAYSWhen to renew RAWG API cached data (in days).30Any positive integer
RAWG_API_INCLUDED_STORESThis is a default list of stores that the RAWG search algorithm will search games on. You can specify these stores as a comma-separated list. You can also enter 0 to search all. To find the RAWG Store IDs, refer to this page. By default, we exclude itch.io (ID 9) to filter out a large number of bad asset flips.1,2,3,4,5,6,7,8,11Any comma-separated string of RAWG Store IDs
RAWG_API_INCLUDED_PLATFORMSThis is a default list of platforms that the RAWG search algorithm will search games on. You can specify these platforms as a comma-separated list. You can also enter 0 to search all. To find the RAWG Platform IDs, refer to this page. By default, we search all platforms (ID 0).0Any comma-separated string of RAWG Platform IDs

GAMES

PropertyDescriptionDefaultPossible Values
GAMES_INDEX_INTERVAL_IN_MINUTESThe index interval, measured in minutes, decides how frequently the server should check for changes in games in the /files directory. This used to be essential before we implemented the filewatcher to the server. Nowadays, it's optional for rare situations where the filewatcher might miss changes. If set to 0, it won't regularly trigger reindexing and solely depend on the filewatcher.60Any number
GAMES_SUPPORTED_FILE_FORMATSComma-Seperated list of supported file-types GameVault should detect.see here".zip,.7z,.rar"
GAMES_SEARCH_RECURSIVEIf indexer should search for games in subfolders.true"true", "false
GAMES_DEFAULT_ARCHIVE_PASSWORDA default password for archives. Useful if you always use the same password for your games and want Game Type Detection to work with the encrypted files. Without this game type detection on encrypted archives depends on the file extension and if the headers are encrypted"Anything"Any string

USERS

PropertyDescriptionDefaultPossible Values
USERS_REQUIRE_EMAILRequire Email Field for new registrations.falsetrue, false
USERS_REQUIRE_FIRST_NAMERequire First Name Field for new registrations.falsetrue, false
USERS_REQUIRE_LAST_NAMERequire Last Name Field for new registrations.falsetrue, false

IMAGE

PropertyDescriptionDefaultPossible Values
IMAGE_MAX_SIZE_IN_KBhe maximum size for image uploads in kilobytes. Set it to 0 to disable image uploads.10000 (10MB)Any number
IMAGE_GOOGLE_API_RATE_LIMIT_COOLDOWN_IN_HOURSThe amount of time to wait when the server reaches the rate limit for the Google Images API.24Any number
IMAGE_SUPPORTED_IMAGE_FORMATSList of supported image formats (MIME Types) on this server, separated by commas.image/bmp, image/jpeg, image/png, image/tiff, image/gif, image/x-iconList of image/* content types.
IMAGE_GC_DISABLEDWhether or not image garbage collection is enabled.falsetrue, false
IMAGE_GC_INTERVAL_IN_MINUTESThe interval in minutes for image garbage collection.60Any number

PLUGIN

PropertyDescriptionDefaultPossible Values
PLUGIN_ENABLEDIf set to true, the server will try to load and run plugins listed in the PLUGIN_SOURCES array.falsetrue, false
PLUGIN_SOURCESA list of URLS for GameVault plugins to load, separated by commas.-List of URLS

TESTING

PropertyDescriptionDefaultPossible Values
TESTING_AUTHENTICATION_DISABLEDIf true, the API will accept any auth header. Useful for testing without authentication.falsetrue, false
TESTING_MOCK_FILESIf true, the server will mock all files or ignore filesystem functionalities. Useful for testing without real files.falsetrue, false
TESTING_IN_MEMORY_DBIf true, the server will use an in-memory database. Useful for testing without creating an actual database. Only works with SQLITE.falsetrue, false
TESTING_RAWG_API_DISABLEDIf true, the server will not make any external API calls to RAWG. Useful for testing without depending on the API.falsetrue, false
TESTING_GOOGLE_API_DISABLEDIf true, the server will not make any external API calls to Google. Useful for testing without depending on the API.falsetrue, false