Zum Inhalt

Technology Used

We rely on standards that have been proven millions of times over worldwide in the implementation of CCM19. The software is based on the PHP-framework Symfony©, which, with over 600,000 developers worldwide, is one of the most proven and secure frameworks available.

Frontend-Widgets

The frontend-widgets are implemented using pure JavaScript, without relying on frameworks such as jQuery, Vue, or React, in order to avoid potential incompatibilities as much as possible.

Security

CCM19 makes extensive use of Content Security Policy (CSP) with the following standard restrictions:

Content-Security-Policy:
    default-src 'self';
    connect-src 'self' https://update.ccm19.de;
    script-src 'self' 'unsafe-inline';
    style-src 'self' 'unsafe-inline';
    img-src 'self' data:;
    frame-ancestors 'self';
    form-action 'self'

Storage Without a Database

All data is stored locally in the secure area of CCM19 in JSON-format. If you use the download-version, you will find the data in the /var directory of your installation.

Storage and processing are so efficient that even several million requests per day can be handled without any issues.

Storage with a database

Alternatively, CCM19 uses MongoDB version 4.0 or higher. In this version, all data is stored in the database.

In this case, the /var-directory is still used for caching-purposes, so it must remain writable.

CCM19 requires multi---document-transactions. These are supported only in replica-sets and (starting with MongoDB-version 4.2) in sharded clusters. Therefore, it is generally necessary to set up a Replica-Set even in 1---server-configurations. No other special settings are required.

Beta-Phase

Prior to release, we conduct various tests to identify and correct common errors. Additionally, there is an extended beta phase in which many customers participate and provide us with feedback before the final release.

System Requirements for the Download---Variant

The self---Service / Download--version of CCM19 requires only

  • Linux or another POSIX---compatible operating system
  • PHP version 7.2 or higher
  • Apache httpd 2.2+ or nginx
  • And, if using the MongoDB database, version 4 or higher

Apache httpd

We recommend a LAMP-server—though the "M" for MySQL is not required and can be replaced with MongoDB.

When running Apache httpd, the following modules are required:

  • mod_rewrite
  • mod_headers (optional)
  • mod_expires (optional)

CCM19 is fully compatible with the caching-module mod_cache. Additionally, it is recommended to optimize the performance of Apache httpd. For instructions on how to do this, please refer to the countless tutorials available on other websites.

nginx

If your web server uses nginx, you may need to adjust the server configuration to ensure that CCM19 runs satisfactorily after you have completed the first step of the installation.

First, locate the path to the configuration file for the nginx-server for your (sub-) domain (usually /etc/nginx/nginx.conf or /etc/nginx/conf.d/domainname.conf) and the socket-path for the installed PHP-FPM-module (often unix:/run/php/php7.2-fpm.sock or similar) from your provider or server-administrator.

Please also note the absolute path to the public-directory of the CCM19-installation and the desired URL-path to ccm19 (e.g., /ccm19).

The sample-configuration file shown here can be found in the download-package in the www/examples/ directory—here, CCM19 is installed in a subdirectory.

Example:

# Add the contents of this file to your nginx-configuration within a
# server-block if you want to run CCM19 in a subdirectory.
# This requires the PHP-FPM-module with at least PHP 7.2.
#
# You must make the following adjustments:
# Replace - "/ccm19" with the URL-path under which CCM19 should be accessible,
# Replace - "/path/to/ccm/public" with the path to the public-directory in your
#   CCM19-installation (without the / at the end!),
#   Replace - "unix:/run/php/php7.2-fpm.sock" with the
#   socket-path to your PHP-FPM-module, depending on your server configuration.

    set $ccm19_urlpath /ccm19;
    set $ccm19_realpath /path/to/ccm/public;

    location ~ /ccm19(/.*) {
        root $ccm19_realpath;
        try_files $1 @ccm19;
    }

    location ^~ /ccm19/index.php {
        return 403;
    }

    location @ccm19 {
        root $ccm19_realpath;

        fastcgi_index index.php;
        fastcgi_split_path_info ^(/ccm19)(/.*)$;
        set $path_info $fastcgi_path_info;

        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        fastcgi_param SCRIPT_NAME $ccm19_urlpath/index.php;
        fastcgi_param PATH_INFO $path_info;

        fastcgi_param HTTP_PROXY    "";
        fastcgi_param QUERY_STRING  $query_string;
        fastcgi_param REQUEST_METHOD    $request_method;
        fastcgi_param CONTENT_TYPE  $content_type;
        fastcgi_param CONTENT_LENGTH    $content_length;
        fastcgi_param REQUEST_URI   $request_uri;
        fastcgi_param DOCUMENT_URI  $document_uri;
        fastcgi_param DOCUMENT_ROOT $document_root;
        fastcgi_param SERVER_PROTOCOL   $server_protocol;
        fastcgi_param REQUEST_SCHEME    $scheme;
        fastcgi_param HTTPS     $https if_not_empty;
        fastcgi_param GATEWAY_INTERFACE CGI/1.1;
        fastcgi_param SERVER_SOFTWARE   nginx/$nginx_version;
        fastcgi_param REMOTE_ADDR   $remote_addr;
        fastcgi_param REMOTE_PORT   $remote_port;
        fastcgi_param SERVER_ADDR   $server_addr;
        fastcgi_param SERVER_PORT   $server_port;
        fastcgi_param SERVER_NAME   $server_name;

        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }