Type

The selected type will determine the configuration of your website.

Basic Types

To run your own application with a certain technology stack, use one of our basic types.

Docker

This Type is used to run your own Docker container behind a website acting as reverse proxy.

  • a website type Proxy is configured

  • Docker will be installed and configured

  • created website user is member of the docker group and thus allowed to execute docker commands

Tip

Also take a look at our How-to Getting Started with Docker.

HTML

Used to create a HTML only website with no dynamic processing altogether.

Node.js

  • your Node.js application is run with a daemon on controlled by Monit

  • select custom node version trough nvm, by default, the latest node lts version is installed

  • nodejs has to listen on the ~/cnf/nodejs.sock socket, permission 660

    • most applications are able to listen on unix sockets which is our preferred way to connect Node applications to the webserver

    • for technical details, see server.listen within the Node api documentation

    • if you cannot configure your application to listen on a unix socket, you can configure a custom TCP port by setting nodejs_port in Custom JSON Website Level Configuration

    • you have to make sure the port is not already in use

    • you have to make sure your application does listen on this particular TCP port (the configured port from nodejs_port is exposed as $NODEJS_PORT environment variable for dynamic configurations)

  • symlink your app.js to ~/app.js or overwrite path or other daemon options in OPTIONS at ~/cnf/nodejs-daemon:

    OPTIONS="/home/nodejs/application/app.js --prod"
    

Tip

to control the nodejs daemon, use the nodejs-restart shortcut

PHP

  • PHP installed and running as FPM service included in nginx

  • you can select the desired version at the Advanced tab

  • for custom configurations, see PHP

Python

  • uWSGI daemon (place or symlink your appropriate wsgi configuration to ~/wsgi.py)

  • Python venv configured within uWSGI and the user login shell

Tip

To control the uwsgi daemon, use the uwsgi-reload and uwsgi-restart shortcuts.

Proxy

  • nginx website configured as reverse proxy

  • select the desired backend with the Proxy Pass setting

Tip

To use advanced features like multiple backends, create your own upstream configuration in /etc/nginx/custom/http.conf and point proxy_pass to it. See Server Level nginx configuration.

Redirect

  • to redirects everything to a custom target

  • set Target to your desired destination

  • by default, we send a 307 HTTP redirect code

To use your own redirect code, add the target_code string within the Custom JSON Website Level Configuration:

{
  "target_code": "301"
}

Tip

You can use any nginx variable as target (for example $scheme://www.example.com$request_uri), see the nginx Documentation for available variables.

Ruby

  • rbenv configured within foreman and the user login shell

  • Foreman daemon, controlled by Monit

  • Ruby has to listen on the ~/cnf/ruby.sock socket, permission 660

  • symlink your Procfile to ~/ or overwrite path or other daemon options in OPTIONS at ~/cnf/ruby-daemon:

    OPTIONS="start web -f project/Procfile"
    

Tip

To control the Ruby daemon, use the ruby-start / ruby-stop / ruby-restart shortcuts.

Tip

To use a custom Ruby version, see the rbenv manual.

Application Types

We provide elaborated types for certain web applications. If your desired application is amongst them, we recommend to use them instead of a basic type.

Drupal

Magento 1

Magento 2

Neos

  • PHP type with PHP version 7.4

  • MariaDB database

  • application related PHP and nginx configuration (webroot ~/Web)

  • application related WAF rules (see Web Application Firewall)

  • FLOW_CONTEXT environment variable set according to selected Context

  • FLOW_REWRITEURLS environment variable enabled

Required Configuration

Warning

Our approach to dynamically configure PHP is not compatible with Neos by default.

As a workaround, we have to let know Neos about the environment variable required to load the appropriate PHP settings, by defining the the PHP_INI_SCAN_DIR environment variable in Configuration/Settings.yaml:

Neos:
  Flow:
    core:
      subRequestEnvironmentVariables:
        PHP_INI_SCAN_DIR: '/etc/php72/user/<username>/:/home/<username>/cnf/'

Tip

See this Neos Discuss thread for technical details.

TYPO3 v6

  • PHP type with PHP version 5.6

  • MariaDB database

  • application related PHP and nginx configuration

  • application related cronjobs (see Type Related Cronjobs)

  • application related WAF rules (see Web Application Firewall)

  • latest TYPO3 6 version available in /opt/typo3/TYPO3_6/

  • TYPO3_CONTEXT environment variable set according to selected Context

Required Configuration

Warning

As this TYPO3 version has reached its end of life already, compatibility settings are required within the application.

  • DB/Connections/Default/initCommands must be set to SET sql_mode = 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

  • PHP 5.6 does not have FreeType support included

  • some (system) extensions like frontend do need a small adjustment (see Ticket#83414)

TYPO3 v7

  • PHP type with PHP version 7.2

  • MariaDB database

  • application related PHP and nginx configuration (webroot ~/web)

  • application related cronjobs (see Type Related Cronjobs)

  • application related WAF rules (see Web Application Firewall)

  • latest TYPO3 7 version available in /opt/typo3/TYPO3_7/

  • TYPO3_CONTEXT environment variable set according to selected Context

Required Configuration

Warning

As this TYPO3 version has reached its end of life already, compatibility settings are required within the application.

  • Install Tool is not usable to install new versions from scratch (see Ticket#82023)

  • DB/Connections/Default/initCommands must be set to SET sql_mode = 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

  • Some extensions like the frontend sysext need a small adjustment (see Ticket#83414)

TYPO3 v8

  • PHP type with PHP version 7.2

  • MariaDB database

  • application related PHP and nginx configuration (webroot ~/web)

  • application related cronjobs (see Type Related Cronjobs)

  • application related WAF rules (see Web Application Firewall)

  • latest TYPO3 8 version available in /opt/typo3/TYPO3_8/

  • TYPO3_CONTEXT environment variable set according to selected Context

TYPO3 v9

  • PHP type with PHP version 7.2

  • MariaDB database

  • application related PHP and nginx configuration (webroot ~/web)

  • application related cronjobs (see Type Related Cronjobs)

  • application related WAF rules (see Web Application Firewall)

  • latest TYPO3 9 version available in /opt/typo3/TYPO3_9/

  • TYPO3_CONTEXT environment variable set according to selected Context

TYPO3 v10

  • PHP type with PHP version 7.4

  • MariaDB database

  • application related PHP and nginx configuration (webroot ~/web)

  • application related cronjobs (see Type Related Cronjobs)

  • application related WAF rules (see Web Application Firewall)

  • latest TYPO3 10 version available in /opt/typo3/TYPO3_10/

  • TYPO3_CONTEXT environment variable set according to selected Context

Wordpress

  • PHP type with PHP version 7.4

  • MariaDB database

  • application related PHP and nginx configuration

  • application related cronjobs (see Type Related Cronjobs)

  • application related WAF rules (see Web Application Firewall)

  • WP-CLI installed and available by using the wp command

  • additional Request Limits for wp-login.php and xmlrpc.php (10r/m)

To override the default request limits, use the wordpress_limit_login and wordpress_limit_xmlrpc strings within the Custom JSON Website Level Configuration:

{
  "wordpress_limit_login": "20r/m",
  "wordpress_limit_xmlrpc": false,
 }

Tip

Please disable the built in HTTP call to wp-cron.php by setting define('DISABLE_WP_CRON', true);. This additional call is not necessary and disabling it will lower the load on your system.