Spaces:
Sleeping
Sleeping
| # Configuring Puter | |
| ## Terminology | |
| - **root** - the "top level" of configuration; if a key-value pair is in/at "the root" | |
| that means it is **not in a nested object** | |
| (ex: values under "services" are **not** at the root). | |
| ## Config Locations | |
| Running the server will generate a configuration file in one of these locations: | |
| - `config/config.json` when [Using Docker](#using-docker) | |
| - `volatile/config/config.json` in [Local Development](#local-development) | |
| - `/etc/puter/config.json` on a server (or within a Docker container) | |
| ## Editing Configuration | |
| For a list of all possible config values, see [config_values.md](./config_values.md) | |
| Instead of editing the generated `config.json`, you can make a config file | |
| that references it. This makes it easier to maintain if you frequently update | |
| Puter, since you can then just delete `config.json` to get new defaults. | |
| For example, a `local.json` might look like this: | |
| ```json | |
| { | |
| // Always include this header | |
| "$version": "v1.1.0", | |
| "$requires": [ | |
| "config.json" | |
| ], | |
| "config_name": "local", | |
| // Your custom configuration | |
| "domain": "my-puter.example.com" | |
| } | |
| ``` | |
| To use `local.json` instead of `config.json` you will need to set the | |
| environment variable `PUTER_CONFIG_PROFILE=local` in the context where | |
| you are running Puter. | |
| ## Sample Configuration | |
| The default configuration generated by Puter will look | |
| something like the following (updated 2025-02-26): | |
| ```json | |
| { | |
| "config_name": "generated default config", | |
| "mod_directories": [ | |
| "{source}/../extensions" | |
| ], | |
| "env": "dev", | |
| "nginx_mode": true, | |
| "server_id": "localhost", | |
| "http_port": "auto", | |
| "domain": "puter.localhost", | |
| "protocol": "http", | |
| "contact_email": "hey@example.com", | |
| "services": { | |
| "database": { | |
| "engine": "sqlite", | |
| "path": "puter-database.sqlite" | |
| }, | |
| "thumbnails": { | |
| "engine": "http" | |
| }, | |
| "file-cache": { | |
| "disk_limit": 5368709120, | |
| "disk_max_size": 204800, | |
| "precache_size": 209715200, | |
| "path": "./file-cache" | |
| } | |
| }, | |
| "cookie_name": "...", | |
| "jwt_secret": "...", | |
| "url_signature_secret": "...", | |
| "private_uid_secret": "...", | |
| "private_uid_namespace": "...", | |
| "": null | |
| } | |
| ``` | |
| ## Root-Level Parameters | |
| - **domain** - origin for Puter. Do **not** include URL schema (the 'http(s)://' portion) | |
| - |