Skip to main content

Configuration

tip

Check out configuration.ts for all possible environment variables in case 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_ACCOUNT_ACTIVATION_DISABLEDIf accounts need to be activated by an admin before using them.falsetrue, false
SERVER_ADMIN_USERNAMEUsed for role recovery of existing users. The Server grants Admin Role to an existing User with this Username on register or startup. ⚠️ This won't register a new account!-Any username
SERVER_ADMIN_PASSWORDUsed for password recovery of existing users. Resets the password of the existing user with the username set in SERVER_ADMIN_USERNAME to this password on startup. ⚠️ This won't register a new account!-Any password (No Length Validation)
SERVER_API_DOCS_ENABLEDEnables the API Documentation 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_ONLINE_ACTIVITIES_DISABLEDWhether 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_STACK_TRACE_LIMITConfigures the maximum number of stack frames to display in error stack traces, with a higher value providing more detailed debugging information.10Any Number

VOLUMES

PropertyDescriptionDefaultPossible Values
VOLUMES_CONFIGFolder inside container used for configuring GameVault./configAny valid folder path
VOLUMES_FILESFolder inside container used for game files./filesAny valid folder path
VOLUMES_MEDIAFolder inside container used for media./mediaAny 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
VOLUMES_PLUGINSFolder inside container used for plugins./pluginsAny valid folder path

DB

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_DEBUGLog all SQL Statements sent to the database.falsetrue, false
DB_SYNCHRONIZEForce synchronizes the database with the entities. (This could break your database!)falsetrue, false
DB_TLS_ENABLEDEnables TLS for the database. (not needed for SQLITE).falsetrue, false
DB_TLS_REJECT_UNAUTHORIZED_ENABLEDWhether the database will reject TLS connections that do not present a valid, trusted certificate.falsetrue, false
DB_TLS_KEY_PATHThe file path to the private key used for securing TLS connections to the database.-Any file path
DB_TLS_CERTIFICATE_PATHThe file path to the TLS certificate used for authenticating the database server.-Any file path
DB_TLS_CA_CERTIFICATE_PATHThe file path to the CA certificate used for verifying client certificates in TLS connections.-Any file path

USERS

PropertyDescriptionDefaultPossible Values
USERS_REQUIRE_EMAILRequire Email for new registrations.falsetrue, false
USERS_REQUIRE_FIRST_NAMERequire First Name for new registrations.falsetrue, false
USERS_REQUIRE_LAST_NAMERequire Last Name for new registrations.falsetrue, false
USERS_REQUIRE_BIRTH_DATERequire Birth Date for new registrations. (Automatically set to true when PARENTAL_AGE_RESTRICTION_ENABLED is true)falsetrue, false

PARENTAL

PropertyDescriptionDefaultPossible Values
PARENTAL_AGE_RESTRICTION_ENABLEDDetermines whether age-based parental restrictions are enforced.falsetrue, false
PARENTAL_AGE_OF_MAJORITYThe age at which an individual is legally recognized as an adult for parental restrictions.18Any number

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.All Supported Formats".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

MEDIA

PropertyDescriptionDefaultPossible Values
MEDIA_MAX_SIZEThe maximum size for media uploads. Set it to 0 to disable media uploads.10 mbe.g. "10 mb", "5 gb", "300 kb"
MEDIA_SUPPORTED_FORMATSList of supported media formats (MIME Types) on this server, separated by commas.See hereComma separated list of MIME Types.
MEDIA_GC_DISABLEDWhether or not media garbage collection is enabled. (Deletes unused media)falsetrue, false
MEDIA_GC_INTERVAL_IN_MINUTESThe interval in minutes for media garbage collection.60Any number

Here are the descriptions for the metadata properties:

METADATA

PropertyDescriptionDefaultPossible Values
METADATA_TTL_IN_DAYSThe number of days metadata is considered fresh before requiring an update.30Any number of days
METADATA_IGDB_ENABLEDEnables or disables the built-in integration with IGDB for metadata retrieval.truetrue, false
METADATA_IGDB_PRIORITYThe priority level for IGDB metadata sources when multiple metadata sources are available.1Any number
METADATA_IGDB_REQUEST_INTERVAL_MSThe interval, in milliseconds, to wait between consecutive requests to prevent exceeding rate limits. This delay will be applied before each call to the provider.250Any number
METADATA_IGDB_CLIENT_IDThe Client-ID used for authenticating requests to the IGDB API.-Your Client ID
METADATA_IGDB_CLIENT_SECRETThe Client-Secret used for authenticating requests to the IGDB API.-Your Client Secret

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_MOCK_PROVIDERSIf true, the server will create two mock providers. (-9999 and 9999 Priority) Useful for testing metadata-merges.falsetrue, false