If you like my work, please consider supporting its development.

This article describes how configuration files for Nebula Forms are formatted as well as some options for the server itself.

Configuration files for Nebula Forms are written in TOML. Rather than attempting to re-hash all of the official specification here, you should instead click one of the previous links and read through the specification. You can also find an example of TOML here.

Configuration files should end with the suffix .toml.

Multiple Files

Nebula allows for the use of multiple configuration files by specifying “included” directories, which are then scanned for files ending in .toml that are parsed and merged with the previous configuration, with later-read files taking precedence if multiple set the same option.

Inclusion directories are specified with the include_dir key. Relative paths are resolved relative to the directory containing the TOML file being parsed. Parsing happens using depth-first recursion, which is explained in the example below.


Consider the following directory structure:

  - config.toml
  - conf.d/
    - a.toml
    - b.toml
    - conf.a/
      - a.1.toml
      - a.2.toml
    - conf.b/
      - b.1.toml
      - b.2.toml

config.toml is the entry configuration file, or the first one parsed. It includes the directory conf.d/ with the line include_dir = "conf.d" (it could also have used the full path "/etc/nebula-forms/conf.d").

a.toml is the next file parsed and contains the line include_dir = "conf.a". a.1.toml and a.2.toml are parsed, then b.toml.

b.toml has the line include_dir = "conf.b". b.1.toml and b.2.toml are parsed. There are no more files to include, so parsing is complete.


Forms handlers in Nebula Forms are implemented as plugins ([developers][dev-handlers]). By default, Nebula looks for these plugins in the following locations, based on host system:

  • Linux: /usr/lib/nebula-forms/plugins
  • FreeBSD: /usr/local/lib/nebula-forms/plugins

Go currently does not support plugins on Windows systems and Nebula does not have defaults set for systems that are not Linux or FreeBSD.

To set an alternate location for plugins (or just set one if on Mac), set the plugins_dir key to the directory containing the plugins.

plugins_dir = "/usr/lib/nebula-forms/plugins"

Server Port

By default, Nebula listens on port 2002 for form submissions. This can be changed by setting port to the desired port for listening. Port numbers under 1024 require Nebula to be run as administrator.

port = 2002