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

  • docker containers and images are excluded from Backup, volumes are snapshoted normally

Warning

To persist data in docker containers use volumes instead of bind mounts, due to permission conflicts. For more information see Persisting Data.

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 executed with a daemon controlled by Monit. To work properly, its necessary to run the application directly and not by, for example, npm run start which would fork the actuall process and lead to incorrect process handling.

Tip

Have a look at our How-to Getting Started with Nuxt.js as well.

  • 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

  • the Proxy pass value must also include the protocol. Example: http://127.0.0.1:8080

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.

Warning

If your proxy backend does point to localhost, use 127.0.0.1 or ::1 explicitly. The use of localhost is prohibited to prevent problems due to address family changes within the same session.

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)

  • 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.

Due to the lack of Composer dependencies, we can no longer build the core automatically, so it must be installed manually.

  • 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)

  • Core installation options TYPO3 6.2 Releases.

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

TYPO3 v11

  • PHP type with PHP version 8.0

  • MariaDB database

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

  • application related cronjobs (see Type Related Cronjobs)

  • application related WAF rules (see Web Application Firewall)

  • latest TYPO3 11 version available in /opt/typo3/TYPO3_11/

  • TYPO3_CONTEXT environment variable set according to selected Context

Required Configuration

Warning

As this TYPO3 version was released after server generation 7 was born, you must take note of the following.

  • We recommend to use composer v2, for compatibility reasons available on the console with composer2

TYPO3 v12

  • PHP type with PHP version 8.1

  • MariaDB database

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

  • application related cronjobs (see Type Related Cronjobs)

  • application related WAF rules (see Web Application Firewall)

  • latest TYPO3 12 version available in /opt/typo3/TYPO3_12/

  • TYPO3_CONTEXT environment variable set according to selected Context

Required Configuration

Warning

As this TYPO3 version was released after server generation 7 was born, you must take note of the following.

  • We recommend to use composer v2, for compatibility reasons available on the console with composer2

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 limits for wp-login.php and xmlrpc.php

We limit requests to wp-login.php and xmlrpc.php based on request per minute. The default settings are 10 request per minute for wp-login.php and 50 for xmlrpc.php. To adjust or disable the limits completly, you can configure them in the Custom JSON Website Level Configuration, for example as follows:

{
  "wordpress_limit_login": "20",
  "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.