On Premise

Docker allows you to run anywhere, as long as Docker is installed. This also means that you can run our Fonto Connectors Docker image on your own server. This tutorial describes a minimal way to get Fonto Connectors up and running on your local server. Since Connectors runs on the default Docker infrastructure, you can use any Docker compliant monitoring and scaling tools.

You need to enable scaling in order to use scaling tools.

This guide shows an example on running Fonto Connectors using Docker Compose with the NGINX web server to handle SSL offloading. But you can use any other web server that supports SSL offloading.

Using a web server to handle SSL offloading for Fonto Connectors also gives you the option to use other features of the web server, like HTTP Compression/Content-Encoding, caching etc. These features are not in scope of this guide.

Do not turn on HTTP Compression/Content-Encoding on your web server for urls starting with /api. This is not supported in the current version of Fonto Connectors.

Docker Compose with Nginx

By completing the following steps you create a Docker image containing the minimal requirements you need to perform SSL offloading for Fonto Connectors using Nginx and run it using Docker Compose.

  1. Create a directory on your local machine.

  2. Copy the privatekey.key file and the server.crt file to the created directory.

  3. Create a file default.conf in the created directory.

  4. Configure SSL offloading in the default.conf.

    Other

    server {
        listen 80;
        return 301 https://$http_host$request_uri;
    }
    
    server {
        listen 443 ssl;
        server_name fontoxml-connector;
        ssl_certificate /etc/nginx/ssl/server.crt;
        ssl_certificate_key /etc/nginx/ssl/privatekey.key;
    
        location / {
            # Microsoft authentication uses large headers when connecting with OneDrive. For this we have to increase the buffers.
            proxy_buffering on;
            proxy_buffer_size 128k;
            proxy_buffers 4 256k;
            proxy_busy_buffers_size 256k;
    
            # The service name "my-connectors-instance" is configured in the docker-compose.yml.
            proxy_pass http://my-connectors-instance:80;
            proxy_set_header Host $http_host; # Forward the protocol and port.
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
  5. Create a file Dockerfile in the created directory.

    Other

    FROM nginx
    
    # copy nginx configuration
    COPY default.conf /etc/nginx/conf.d/default.conf
    
    # copy certificates
    RUN mkdir /etc/nginx/ssl
    COPY privatekey.key /etc/nginx/ssl/privatekey.key
    COPY server.crt /etc/nginx/ssl/server.crt
  6. Create a file docker-compose.yml in the created directory.

  7. Configure the docker-compose.yml with your instance and the Nginx image.

    Other

    version: '3'
    services:
        # This instance name must be equal to the one in the default.conf and depends_on of the reverse-proxy service.
        my-connectors-instance:
            image: my-connectors-instance:0.0.1 # Replace this with your image name.
            environment:
                # The configuration below is not valid, replace it with your own.
                - fc__cmis__enabled=true
                - fc__googleDrive__clientId=xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
                - fc__googleDrive__clientSecret=xxxxxxxxxxxxxxxxxxxxxxxx
                - fc__googleDrive__enabled=true
                - fc__microsoftOneDrive__clientId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                - fc__microsoftOneDrive__clientSecret=xxxxxxxxxxxxxxxxxxxxxxx
                - fc__microsoftOneDrive__enabled=true
                - fc__view__pageTitle=Fonto My Instance
                - fc__view__topBarTitle=My Instance
                - fc__webdav__enabled=true
    
        reverse-proxy:
            build: .
            depends_on:
                # This ensures that "docker-compose up" and "docker-compose down" will create and remove the containers in the correct order.
                - my-connectors-instance
            ports:
                - "443:443"
                - "80:80"

Your directory should now have the following files:

  • default.conf

  • docker-compose.yml

  • dockerfile

  • privatekey.key

  • server.crt

You can run the instance using docker-compose up.