Submission Server
Setup and basic usage of submission server

How it works

The submission server operates in a "hub and spoke" model, with many Submission Servers each reaching into a central hub api server for configuration. When a submission server initially boots, it will communicate with the central hub, load a listing of projects and forms based on a provided configuration.
After reading the project definitions from the central hub, the submission server will outwardly act as if it were an api server, fulfilling all requests for form definitions, submission requests, and many portal interactions. All project data for the proxied projects is stored with the submission server, while the form definitions are stored with hub.

Configuration

The standard method of configuring the submission server is through a configuration file added into the docker container. This file is in ini format, and represents the recommended properties to configure. Additional options may be recommended by support in certain situations
1
[libs.authentication]
2
; Used as the password to connect on premise environments with in the portal
3
REMOTE_SECRET=
4
5
[libs.formiosdk]
6
; API URL for your portal, not the portal url
7
; Ex: https://api.form.io
8
PORTAL_BASE_URL=http://localhost:3000
9
10
[libs.license]
11
; Your license key
12
LICENSE_KEY=
13
14
[libs.persistence]
15
; Used to encrypt project settings
16
DB_SECRET=
17
18
[libs.persistence.mongo]
19
; Connection string for mongo
20
uri=
21
22
[libs.server]
23
; See dedicated section
24
RESERVED_WORDS_LIST[]=
25
26
[libs.server.PROJECT_KEYS]
27
; This is an id / api key listing for all projects you want to grant access to
28
; project_id = api_key
29
; example:
30
61423d7e304aeed38cc94718 = tAKJEHA00UK1siCvzm8DoKImIx9lef
31
1234562e304aeed38cc94718 = tAKJEHA00UK1siCvzm8D1234567890
Copied!

Reserved words list

The submission server maintains an internal reserved words list to assist in the parsing of urls. This list contains many of the same entries found here: https://help.form.io/deployments/deployment-configurations/dns-configuration#reserved-subdomains
Commonly, the submission server will be deployed with a domain that looks like this
1
https://submission-server.form.io
Copied!
Under default operation, the submission-server portion of the URL will be interpreted as if it were a project name. If a lookup for a project with that name fails, then all commands against the sub mission server will fail.
To correct this issue, the libs.server.RESERVED_WORDS_LIST can be provided a list of additional values to block from being considered as project name candidates.

Data Storage

Projects

When the submission server first boots, it will check the list of provided projects in the configuration against those currently being stored in the provided mongo database. If there are new entries in the configuration file, then the submission server will duplicate that project from the central hub, clearing out the settings prior to saving.
This allows the submission server to maintain it's own list of api keys for that project, along with unique sets of credentials for email actions and other features.

Form Actions, Action Logs

Form actions are stored with the submission server, and are not proxied from the central hub. The list of actions supported by the submission server may be different from the central hub.

Deployments

Current submission server version is 9.0.14-rc.15

AWS Multicontainer

Take the submission server multicontainer.zip, and add your configuration file to config/api file next to it. Do not add an extension to the api file.
1
- multicontainer.zip
2
+ config/
3
- api
Copied!
Run this command to insert / update the configuration file inside the zip file
1
zip -r multicontainer.zip config
Copied!
    1.
    Navigate to Elastic Beanstalk using search
    2.
    Find application to add deployment to
    3.
    Create a new environment
    4.
    Environment Tier
      Web server environment
    5.
    Platform
      Platform: Docker
      Platform branch: Multi-container Docker running on 64bit Amazon Linux
      Platform version: Recommended
    6.
    Application Code
      Select Upload your code
      Select Local File
      Use Choose File to upload your multicontainer.zip
    7.
    Configure Environment
      Development: at least t3.medium capacity
      Production: probably higher than development. No metrics exist yet
Last modified 9d ago