Skip to Content
DocumentationReferenceconfig.json options

Details of all options available in config.json

When adding a new app to runtipi, you need to create a config.json file in the app’s folder. This file contains all the information needed to run the app. Below you can find all the options available in the config.json file.

OptionDescriptionExample valueRequired
nameName of the appNextcloudyes
idThis should be the same name as the foldernextcloudyes
availableIf set to false, the app will not be available in the app storetrueyes
short_descShort description of the appNextcloud is a suite of client-server software for creating and using file hosting services.yes
authorThe GitHub name of the authorhttps://nextcloud.comyes
portPort used by the app. This port will be exposed to the host.8100yes
categoriesOne or more categories for the app[“utilities”, “network”]yes
descriptionLong description of the appNextcloud is a suite of client-server software for creating and using file hosting services. Nextcloud is free and open-source, which means that anyone is allowed to install and operate it on their own private server devices.yes
tipi_versionAlways 1 if you are adding a new app. Increment this number if you are updating an existing app1yes
versionThe actual version of the app (not the Runtipi version)1.25.1yes
sourceLink for git repositoryhttps://github.com/nextcloud/dockeryes
websiteLink to the official websitehttps://nextcloud.comno
exposableIf set to true, the app will allow the user to expose it via a domain name.trueyes
force_exposeIf set to true, the app will require a domain name.trueno
generate_vapid_keysIf set to true, the app will generate VAPID keys for web push notifications. VAPID_PUBLIC_KEY and VAPID_PRIVATE_KEY will be available as environment variablestrueno
url_suffixIf set, the app will be accessible at https://<your-domain>/<url_suffix>my-appno
httpsIf set to true, the app will be accessible via https only.trueno
no_guiSet to true for apps with no GUI. Open button will be hiddentrueno
supported_architecturesIf the app is only available for a specific architecture, you can specify it here. If not given, app will be available for all architectures[“arm64”, “amd64”]yes
uid, gidThese parameters allow you to give a specific set of permission for the app’s data folder. Runtipi will automatically chown the data directory with the provided gid and uid. Both options need to be specified in order to apply1000no
form_fieldsForm fields allow you to promt the user for input during the install, like a username or a passwordSee belowyes
dynamicUse the new docker-compose.json to dynamically generate a compose file. See Dynamic Composetrueno
deprecatedIf the app is deprecated it won’t exist in the app store and it will notify users that is no longer maintained.falseno
min_tipi_versionAn app may require a newer version of Runtipi than you already have for some extra featurev3.0.0no
created_atThe date the app was created. You can use new Date().getTime() in your browser console to get the current timestamp1724134938430no
updated_atThe date the app was last updated. You can use new Date().getTime() in your browser console to get the current timestamp1724134938430no

Sometimes an app requires additional information to run, such as a username or a password. You can leverage the form_fields property in the config.json file to request that information. Here’s an example:

{ "form_fields": [ { "type": "text", "label": "Username", "max": 50, "min": 3, "required": true, "env_variable": "NEXTCLOUD_ADMIN_USER" }, { "type": "password", "label": "Password", "max": 50, "min": 3, "required": true, "env_variable": "NEXTCLOUD_ADMIN_PASSWORD" } ] }

You can choose between different types of fields. The app will automatically validate the user input before submitting.

TypeDescriptionExample value
textJust a string of textusername
passwordWill be hidden on typingpassword
emailAn email addresstest@example.org
numberAny number123
fqdnFully qualified domain nameexample.org
ipAny valid IPv4 address192.168.2.100
fqdnipCombination between IPv4 and FQDN192.168.2.100 or example.org
randomGenerate a random value for the user2e318419a49b70ad93766a5d6eb54d9ebbcceaeadd57c5f6897dbbe10afbc880
booleanA checkboxtrue or false

Here is a table of the available form_field properties:

NameDescriptionExample valueRequired
typeThe type of the form field to use, see above.text
labelThe label to show the user.Nextcloud Username
hintA small hint to show the user.The username you want to use for nextcloud
placeholderA placeholder for the form fielduser
defaultAdd a default value, used only if the required option is set to falseuser
regexUse a regex pattern to verify the user input^[0-9]+\.[0-9]+\.[0-9]+$
pattern_errorThe error to show when the regex pattern validation failsInvalid username
minThe minimum length for a text or password input5
maxThe maximum length for a text or password input100
requiredWhether the form field is required or nottrue
env_variableThe name of the variable you’ll use in your docker-compose.yml file.NEXTCLOUD_USERNAME
optionsOptions for multi-selectSee below
encodingUsed only in addition to random type. Specify the random value encoding (base64 or hex)base64
💡

When you use the random field type for a password or secret, the min value determines the generated string length. If min is omitted, a default length of 32 characters is used.

Using options in form fields

You can create a form field with options like this in your config.json. It will be rendered as a multi-select dropdown in the UI. label is what will be shown to the user and value is the actual value the environment variable will be set to when the corresponding option is selected.

💡

Use options only when there are only specific pre-defined values for the field. If a user might want to use a custom value, use a normal text field and provide common examples in the label.

{ "label": "Select your favorite fruits", "type": "text", "required": true, "options": [ { "label": "Apple", "value": "apple" }, { "label": "Banana", "value": "banana" }, { "label": "Orange", "value": "orange" } ], "env_variable": "fruits" }
Last updated on