Skip to content

Installation et exécution de S-Filer Portal à l'aide de conteneurs Docker

Ce manuel

À qui s'adresse ce guide

Ce guide est destiné aux administrateurs de S-Filer Portal.

Le but de ce manuel est de vous guider dans l'installation de S-Filer Portal à l'aide de conteneurs Docker. Il existe plusieurs façons d'utiliser les conteneurs Docker, ce guide se concentrera sur les plus courantes, comme l'utilisation de Docker Compose.

Conditions préalables

Exigences du système

Afin d'utiliser la solution S-Filer Portal avec les conteneurs Docker, vous aurez besoin des outils suivants :

  1. Docker pour GNU/Linux, macOS ou Docker Desktop sur Windows.
  2. Le CLI d'Amazon Web Services (AWS)
  3. Une base de données fonctionnelle opérationnelle (avec les systèmes de gestion de bases de données MySQL, Microsoft SQL Server, MariaDB ou Oracle), qu'elle soit déployée à l'aide de Docker ou non.
  4. Docker Compose (optionnel, dépend de votre choix de déploiement)

Images Docker

La solution S-Filer Portal pour Docker fonctionne avec 3 images Docker :

  1. sfiler-config-cli, qui encapsule le CLI de configuration pour l'installation de la base de données
  2. sfiler-server, qui encapsule le serveur de S-Filer Portal
  3. sfiler-gateway, qui encapsule la passerelle S-Filer Portal
Tirer les images

Les images Docker pour S-Filer Portal sont stockées dans le registre Elastic Container Registry (ECR) d'Amazon Web Services. Pour les récupérer, vous devez vous authentifier auprès du registre.

Authentification au registre

Une fois le CLI d'AWS est installé, vous devrez le configurer à l'aide de la commande suivante :

shell
aws configure

Une fois que vous avez fourni les informations d'identification, le CLI AWS pourra générer le jeton d'authentification pour vous.

Pour vous authentifier auprès du registre, vous devez exécuter la commande suivante :

shell
aws ecr get-login-password --region ca-central-1 | docker login --username AWS --password-stdin 550720984821.dkr.ecr.ca-central-1.amazonaws.com

AVERTISSEMENT

Notez que le CLI d'AWS génère un jeton qui est valide pendant 12 heures. Vous devrez donc générer à nouveau un jeton en utilisant aws ecr get-login-password au moins toutes les 12 heures.

Téléchargement des images

Les images Docker sont extraites à l'aide des commandes suivantes :

shell
docker pull 550720984821.dkr.ecr.ca-central-1.amazonaws.com/sfiler-config-cli:SFILER_4_19_0
shell
docker pull 550720984821.dkr.ecr.ca-central-1.amazonaws.com/sfiler-server:SFILER_4_19_0
shell
docker pull 550720984821.dkr.ecr.ca-central-1.amazonaws.com/sfiler-gateway:SFILER_4_19_0

ASTUCE

Les images sont étiquetées avec le numéro de la version. Dans cet exemple, le numéro de version est 4.19.0.

JDBC Driver

La solution S-Filer Portal est compatible avec de nombreux services de gestion de base de données (SGBD), tels que MySQL, MariaDB ou Oracle Database.

Par conséquent, vous devez fournir un pilote Java Database Connectivity (JDBC) sous la forme d'une archive .jar. Assurez-vous de récupérer le JDBC pour votre SGBD afin de le fournir à l'interface de configuration de S-Filer Portal et au serveur.

Pilotes JDBC compatibles

Voici une liste de liens de téléchargement pour JDBC compatible avec S-Filer Portal

Système de gestion de base de donnéesLien vers le pilote JDBC
MySQLhttps://dev.mysql.com/downloads/connector/j/
MariaDBhttps://mariadb.com/kb/en/about-mariadb-connector-j/
Microsoft SQL Serverhttps://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15
Oracle DBhttps://www.oracle.com/database/technologies/appdev/jdbc-downloads.html

Dans ce guide, le SGBD MySQL sera utilisé.

Configuration

Variables d'environnement

sfiler-config-cli

CONFIG_CLI_COMMAND

Une seule commande à exécuter par le CLI de configuration.

Si vous fournissez également un script, la commande que vous fournissez en tant que variable d'environnement sera exécutée en premier.

CONFIG_DB_USER

Nom d'utilisateur utilisé pour s'authentifier auprès de l'interface administrative et qui se trouve être l'utilisateur qui sera utilisé pour accéder à la base de données.

CONFIG_DB_PASSWORD

Mot de passe pour s'authentifier auprès de l'interface administrative, qui se trouve être le même que le mot de passe de la base de données.

CONFIG_DB_URL

URL de la base de données. Le format de l'URL est le suivant : jdbc:mysql://[host]:[port]/[database]. Le port est le port de la base de données visible par le conteneur.

CONFIG_DB_DRIVER

Pilote utilisé pour communiquer avec la base de données.

CONFIG_DB_HIBERNATE_DIALECT

Dialecte utilisé par Hibernate pour communiquer avec la base de données.
sfiler-server

LOGS

Si la valeur est "silent", le conteneur du serveur n'émettra pas de logs vers la sortie standard, mais uniquement vers son fichier de logs.

SFILER_SERVER_INSTANCE_NAME

Nom de l'instance de serveur de S-Filer Portal. Ce nom doit être unique pour chaque instance de serveur. Pour l'instant, il n'est pas possible d'avoir plus d'un serveur qui fonctionne en même temps.

CONFIGURATOR_START

Si la valeur est à true, le serveur va démarrer le configurateur. Si la valeur est à false, seul le serveur sera démarré

CONFIGURATOR_SSL

Si la valeur est à true, le configurateur sera lancé avec un certificat SSL. Actuellement, le certificat SSL est automatiquement auto-signé et il n'est pas possible d'en fournir un.

CONFIGURATOR_PORT

Il s'agit du port sur lequel l'interface administrative sera accessible.

CONFIG_DB_USER

Nom d'utilisateur utilisé pour s'authentifier auprès de l'interface administrative et qui se trouve être l'utilisateur qui sera utilisé pour accéder à la base de données.

CONFIG_DB_PASSWORD

Mot de passe pour s'authentifier auprès de l'interface administrative, qui se trouve être le même que le mot de passe de la base de données.

CONFIG_DB_URL

URL de la base de données. Le format de l'URL est le suivant : jdbc:mysql://[host]:[port]/[database]. Le port est le port de la base de données visible par le conteneur.

CONFIG_DB_DRIVER

Pilote utilisé pour communiquer avec la base de données.

CONFIG_DB_HIBERNATE_DIALECT

Dialecte utilisé par Hibernate pour communiquer avec la base de données.

CONFIGURATOR_SSL_CIPHER_MANAGEMENT_MODE

Ce paramètre de configuration détermine les suites de chiffrement dont l'utilisation est autorisée sur le serveur. La valeur par défaut est Automatic. Les valeurs suivantes sont supportées :
CONFIGURATOR_SSL_CIPHER_MANAGEMENT_MODEDescription
AUTOMATICLe serveur sélectionne automatiquement les suites de chiffrement à utiliser en fonction des protocoles activés. Dans ce mode, seuls les algorithmes de chiffrement forts sont activés. Il s'agit de la valeur par défaut.
CUSTOMLe serveur utilisera les suites de chiffrement spécifiées dans le champ CONFIGURATOR_SSL_CUSTOM_CIPHERS parameter.
JVM_DEFAULT_CIPHERSLe serveur utilisera les suites de chiffrement par défaut prises en charge par la JVM.

CONFIGURATOR_SSL_CUSTOM_CIPHERS

Il s'agit de la liste des suites de chiffrement autorisés à être utilisés.

CONFIGURATOR_CLICKJACKING_PROTECTION

Si la valeur est "true", l'en-tête X-Frame-Options sera défini dans toutes les réponses afin de prévenir les attaques par détournement de clics. La valeur par défaut est "true".

CONFIGURATOR_HSTS_HEADER_SUPPORT

Si la valeur est "true", l'en-tête Strict-Transport-Security sera ajouté à toutes les réponses. La valeur par défaut est "true".

CONFIGURATOR_HSTS_HEADER_SUPPORT_MAX_AGE

Ceci représente la valeur de la directive max-age de l'en-tête Strict-Transport-Security.
sfiler-gateway

LOGS

Lorsqu'il est réglé sur "silent", le conteneur de la passerelle n'émet pas de logs vers la sortie standard, mais uniquement vers son fichier de logs.

SFILER_GATEWAY_INSTANCE_NAME

Nom de l'instance de la passerelle S-Filer Portal. Ce nom doit être unique pour chaque instance de passerelle.

SFILER_GUI_INSTANCE_NAME

Nom de l'instance GUI déployée sur la passerelle. Ce nom doit être unique pour chaque instance de passerelle.

CONFIG_URL

URL du serveur de S-Filer Portal. Le format de l'URL est le suivants https://[host]:[port]. Le port est le port du serveur S-Filer Portal qui est visible par le conteneur.

DOCKER_COMPOSE_WAIT

Si la valeur est "true", le programme attendra que le serveur de S-Filer Portal soit opérationnel.

Le fichier d'environnement .env

Afin de définir les variables d'environnement pour chaque conteneur dans le S-Filer Portal for Docker, vous pouvez utiliser un fichier .env.

.env

# Database config
DATABASE_HOSTNAME=db
DATABASE_PORT=3306
DATABASE_NAME=sfiler
CONFIG_DB_USER=sfiler-user
CONFIG_DB_PASSWORD_FILE=/run/secrets/db_password

CONFIG_DB_URL="jdbc:mysql://db:3306/sfiler?useUnicode=true&characterEncoding=utf8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"
CONFIG_DB_DRIVER=com.mysql.cj.jdbc.Driver
CONFIG_DB_HIBERNATE_DIALECT=org.hibernate.dialect.MySQL5InnoDBDialect

## Environment variables for MariaDB DBMS
# CONFIG_DB_URL="jdbc:mariadb://db:3306/sfiler"
# CONFIG_DB_DRIVER=org.mariadb.jdbc.Driver
# CONFIG_DB_HIBERNATE_DIALECT=org.hibernate.dialect.MariaDB103Dialect

## Environment variables for Microsoft SQL Server DBMS
# CONFIG_DB_URL="jdbc:sqlserver://db:1433;DatabaseName=sfiler;encrypt=false;sendStringParametersAsUnicode=false"
# CONFIG_DB_DRIVER=com.microsoft.sqlserver.jdbc.SQLServerDriver
# CONFIG_DB_HIBERNATE_DIALECT=org.hibernate.dialect.SQLServer2012Dialect

## Environment variables for Oracle DB DBMS
# CONFIG_DB_URL="jdbc:oracle:thin:@db:1521:orcl"
# CONFIG_DB_DRIVER=oracle.jdbc.OracleDriver
# CONFIG_DB_HIBERNATE_DIALECT=org.hibernate.dialect.Oracle10gDialect

# Config CLI config
SFILER_CONFIG_CLI_HOSTNAME=sfilerConfigCliDemo

# Server config
CONFIGURATOR_START='true'
CONFIGURATOR_SSL='false'
SFILER_SERVER_PROTOCOL=http
SFILER_SERVER_HOSTNAME=sfilerServerDemo
SFILER_SERVER_INSTANCE_NAME=${SFILER_SERVER_HOSTNAME}
SFILER_SERVER_PORT=8088
CONFIGURATOR_PORT=8090
SFILER_ADMIN_EMAIL=admin@okiok.com
CONFIGURATOR_CLICKJACKING_PROTECTION='true'
CONFIGURATOR_HSTS_HEADER_SUPPORT='true'
CONFIGURATOR_HSTS_HEADER_SUPPORT_MAX_AGE=3600
CONFIGURATOR_SSL_CIPHER_MANAGEMENT_MODE=AUTOMATIC

# Gateway config
SFILER_GATEWAY_HOSTNAME=sfilerGatewayDemo
SFILER_GATEWAY_INSTANCE_NAME=${SFILER_GATEWAY_HOSTNAME}
SFILER_GUI_INSTANCE_NAME=${SFILER_GATEWAY_HOSTNAME}-GUI
SFILER_GATEWAY_PORT=8081
SFILER_GATEWAY_SSH_PORT=22
SFILER_GATEWAY_FTP_PORT=112
SFILER_GATEWAY_FTPS_EXPLICIT_PORT=21
SFILER_GATEWAY_FTPS_IMPLICIT_PORT=990
CONFIG_URL=https://${SFILER_SERVER_HOSTNAME}:${SFILER_SERVER_PORT}/
DOCKER_COMPOSE_WAIT="true"

# Gui config
SFILER_GUI_PROTOCOL=http
SFILER_GUI_PORT=8080

LOGS=silent

Volumes

Le pilote de base de données doit être fourni à la fois au conteneur serveur et au conteneur du CLI de configuration. Pour ce faire, vous devez lier un répertoire contenant le fichier .jar du pilote JDBC aux répertoires /app/ext/lib des deux conteneurs.

ASTUCE

Vous pouvez lier le même dossier contenant le pilote de base de données pour le CLI de configuration et le serveur

Le tableau suivant décrit les volumes Docker déclarés dans le fichier docker-compose.yml.

ServicePathUsage
cli/app/script.sfilerLe script à exécuter lors de la configuration CLI (facultatif si la commande CONFIG_CLI_COMMAND est définie)
cli/app/license.txtUn fichier texte contenant la licence de S-Filer Portal
cli/app/ext/libContient le pilote JDBC
cli/app/configsContient les fichiers basic conf
server/app/logsContient les logs du serveur
server/app/ext/libContient le pilote JDBC driver
gateway/app/logsContient les logs de la passerelle
gateway/app/configsContient les fichiers basic conffiles
Fichier de licence

Vous devez créer un fichier license.txt contenant votre licence S-Filer Portal et le lier au fichier /app/license.txt dans le conteneur du CLI de configuration.

Script du CLI de configuration

Si vous souhaitez fournir plusieurs commandes au CLI de configuration de SFiler pour qu'elle les exécute toutes en même temps, liez un fichier script au fichier /app/script.sfiler.

Le script suivant peut configurer la base de données pour un environnement complet de S-Filer Portal.

AVERTISSEMENT

Vous devez fournir au moins une commande unique au CLI en utilisant une variable d'environnement ou un fichier script.

script.sfiler

update-db-schema
generate-key-pair -a ${SFILER_SERVER_HOSTNAME}-key -d 10 -h ${SFILER_SERVER_HOSTNAME} -ks 4096

generate-key-pair -a gui-https-key -d 10 -h ${SFILER_GATEWAY_HOSTNAME} -ks 4096
generate-key-pair -a ftps-key -d 10 -h ${SFILER_GATEWAY_HOSTNAME} -ks 4096
generate-ssh-key -a sftp-ssh-key -ks 3072

add-server -n ${SFILER_SERVER_HOSTNAME} -h ${SFILER_SERVER_HOSTNAME} -lf /app/license.txt -e admin@test.com -s ${SFILER_SERVER_HOSTNAME}-key

add-gateway -n ${SFILER_GATEWAY_HOSTNAME}
add-gui -n ${SFILER_GATEWAY_HOSTNAME}-GUI

set-config -t 1 -id 1 -k cfg.server.transfer.service.rest.share.enabled -v true

set-config -t 3 -id 2 -k http.server.private.key -v gui-https-key
set-config -t 3 -id 2 -k cfg.babelone.gateway.gui.interface.deploy -v true

set-config -t 3 -id 2 -k ftps.cipher.management.mode -v ${CONFIGURATOR_SSL_CIPHER_MANAGEMENT_MODE}

set-config -t 3 -id 2 -k http.server.enable -v true
set-config -t 3 -id 2 -k http.server.port -v 8081
set-config -t 3 -id 2 -k http.ssl -v false

set-config -t 3 -id 2 -k ftp.server.enable -v true
set-config -t 3 -id 2 -k ftp.server.port -v ${SFILER_GATEWAY_FTP_PORT}

set-config -t 3 -id 2 -k ftps.server.enable -v true
set-config -t 3 -id 2 -k ftps.server.private.key -v ftps-key

set-config -t 3 -id 2 -k ssh.server.enable -v true
set-config -t 3 -id 2 -k ssh.server.key -v sftp-ssh-key
set-config -t 3 -id 2 -k ssh.server.port -v ${SFILER_GATEWAY_SSH_PORT}

set-config -t 4 -id 3 -k cfg.java.gui.sfiler.http.transfer.allowed -v true
set-config -t 4 -id 3 -k cfg.java.gui.portal.tree.share.enabled -v true

export-config -n ${SFILER_GATEWAY_HOSTNAME} -ccf ./configs/sfiler.conf
export-config -n ${SFILER_GATEWAY_HOSTNAME}-GUI -ccf ./configs/gui.conf

AVERTISSEMENT

Le fichier script.sfiler fourni configurera un environnement S-Filer Portal for Docker fonctionnel. Cependant, il se peut que vous n'ayez pas besoin d'utiliser votre instance avec tous les protocoles possibles tels que FTP, SFTP, SSH etc. Par exemple, si vous n'avez pas besoin du protocole FTPS, supprimez les lignes suivantes :

script.sfiler

set-config -t 3 -id 2 -k ftps.server.enable -v true
set-config -t 3 -id 2 -k ftps.server.private.key -v ftps-key

Une fois le script exécuté, récupérez les fichiers de configuration des différents composants. Les fichiers seront dans le dossier que vous avez lié au répertoire sfiler-config-cli/configs du conteneur.

Secrets

Comme alternative à la transmission d'informations sensibles via les variables d'environnement, _FILE peut être ajouté à la fin de certaines variables d'environnement, leur valeur sera alors lue à partir d'un fichier. Dans ce cas, il n'est pas nécessaire de définir la variable d'environnement correspondante.

Actuellement, cela n'est possible que pour les variables CONFIG_DB_PASSWORD.

Créez un fichier db_password.txt contenant le mot de passe de la base de données dans le même répertoire que le fichier docker-compose.yml.

Docker Compose

Docker Compose est un outil Docker utilisé pour simplifier la création d'une stack de conteneurs. On peut définir les conteneurs comme des services, spécifier les noms des conteneurs, leurs images, leurs variables d'environnement, etc. Ces options sont spécifiées dans un fichier habituellement nommé docker-compose.yml.

Référez-vous à la documentation Docker Compose pour des informations sur l'utilisation des fichiers Compose.

Voici un fichier docker-compose.yml qui décrit une stack de conteneurs Docker pour la solution S-Filer Portal.

yaml
version: '3.9'
services:
  cli:
    image: 550720984821.dkr.ecr.ca-central-1.amazonaws.com/sfiler-config-cli:SFILER_4_19_0
    container_name: ${SFILER_CONFIG_CLI_HOSTNAME}
    hostname: ${SFILER_CONFIG_CLI_HOSTNAME}
    volumes:
      - ./license.txt:/app/license.txt
      - ./script.sfiler:/app/script.sfiler
      - ./lib:/app/ext/lib
      - ./configs:/app/configs
    env_file: .env
    depends_on:
      db:
        condition: service_started
    networks:
      - docker_network_test
    secrets:
      - db_password

  server:
    image: 550720984821.dkr.ecr.ca-central-1.amazonaws.com/sfiler-server:SFILER_4_19_0
    container_name: ${SFILER_SERVER_HOSTNAME}
    hostname: ${SFILER_SERVER_HOSTNAME}
    networks:
      - docker_network_test
    ports:
      - "28088:8088"
      - "28090:8090"
    volumes:
      - server-data:/app/logs
      - ./lib:/app/ext/lib
    env_file: .env
    secrets:
      - db_password
    depends_on:
      db:
        condition: service_healthy

  gateway:
    image: 550720984821.dkr.ecr.ca-central-1.amazonaws.com/sfiler-gateway:SFILER_4_19_0
    container_name: ${SFILER_GATEWAY_HOSTNAME}
    hostname: ${SFILER_GATEWAY_HOSTNAME}
    networks:
      - docker_network_test
    ports:
      - "28081:8081"
      - "222:22"
      - "2112:112"
      - "221:21"
      - "2990:990"
    volumes:
      - gateway-data:/app/logs
      - ./configs:/app/configs
    env_file: .env
    depends_on:
      server:
        condition: service_started
      db:
        condition: service_healthy

  db:
    container_name: mysql
    hostname: ${DATABASE_HOSTNAME}
    image: mysql:latest
    networks:
      - docker_network_test
    restart: always
    volumes:
      - db-data:/var/lib/mysql:rw
    secrets:
      - db_password
    environment:
      MYSQL_ROOT_PASSWORD_FILE: ${CONFIG_DB_PASSWORD_FILE}
      MYSQL_DATABASE: ${DATABASE_NAME}
      MYSQL_USER: ${CONFIG_DB_USER}
      MYSQL_PASSWORD_FILE: ${CONFIG_DB_PASSWORD_FILE}
    healthcheck:
      test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
      retries: 99

secrets:
  db_password:
    file: db_password.txt

volumes:
  db-data:
  server-data:
  gateway-data:

networks:
  docker_network_test:
    driver: bridge

Une fois que vous avez défini le fichier d'environnement .env, vous pouvez le fournir à Docker Compose dans le fichier docker-compose.yml ou en utilisant la ligne de commande.

shell
docker-compose --env-file /path/to/.env up

Bien que cet exemple de docker-compose.yml inclue le CLI de configuration comme l'un de ses services, vous pouvez également l'exécuter en tant que conteneur seul. Assurez-vous simplement que votre base de données est opérationnelle.

ASTUCE

Pour utiliser d'autres SGBD, modifiez les paramètres suivants :

  1. Modifiez les variables d'environnement CONFIG_DB_URL, CONFIG_DB_DRIVER, et CONFIG_DB_HIBERNATE_DIALECT avec les valeurs appropriées pour votre SGBD.
  2. Modifiez l'image Docker et les variables d'environnement respectives utilisées par le service db fourni dans le fichier docker-compose.yml, ou supprimez-le simplement si votre base de données sera hébergée en dehors de la stack Compose.
Services

Le tableau suivant décrit les services définis dans le fichier Docker Compose fourni.

ServiceUsage
dbLa base de données utilisée par S-Filer Portal
cliLe CLI de configuration de S-Filer Portal. Configure la base de données qui sera utilisée par l'environnement.
serverServeur de S-Filer Portal
gatewayPasserelle de S-Filer Portal

Utilisation

Lancement de Docker Compose Stack

  1. Lancez la base de données et le CLI de configuration.
shell
docker-compose up --abort-on-container-exit db cli

Cette commande lancera les services Docker de la base de données et de la CLI de configuration. Tout d'abord, la base de données va démarrer et être configurée pour être prête à recevoir des connexions. Pendant ce temps, le CLI de configuration attendra que la base de données soit prête, et procédera à sa configuration en utilisant le script qui a été fourni. L'option --abort-on-container-exit assure qu'une fois que le conteneur CLI de configuration se termine, la base de données s'arrêtera d'elle-même.

ASTUCE

Si vous utilisez une autre base de données que celle définie dans le fichier docker-compose.yml fourni, assurez-vous de la configurer en conséquence. Vous pouvez vous assurer que votre base de données contient l'utilisateur utilisé par S-Filer Portal et la base de données à laquelle il se connectera en exécutant la commande suivante.

sql
CREATE USER 'sfiler-user'@'%' IDENTIFIED BY 'Passw0rd' ;
GRANT ALL PRIVILEGES ON *.* TO 'sfiler-user'@'%'WITH GRANT OPTION ;
create database sfiler;

Cependant, assurez-vous que ces valeurs correspondent à celles que vous avez déclarées dans votre fichier .env.

  1. Lancer la base de données, le serveur et la passerelle
shell
docker-compose up -d db server gateway

Une fois la base de données configurée, il n'est plus nécessaire de lancer le CLI de configuration, la commande va redémarrer la base de données. Ensuite, le serveur et la passerelle seront démarrés. Une fois que tous les conteneurs sont opérationnels, les connexions à l'environnement S-Filer Portal for Docker fonctionneront.

Endpoints

Une fois que votre environnement S-Filer Portal for Docker est opérationnel, vous pouvez y accéder en utilisant les points de terminaison suivants :

EndpointService
https://sfilerserverDemo:28088/api/v2/docs/API REST (Documentation)
http://sfilerServerDemo:28090/Console Administrative
http://sfilerGatewayDemo:28081/GUI Utilisateur
sfilerGatewayDemo:222SSH
sfilerGatewayDemo:2112File Transfer Protocol (FTP)
sfilerGatewayDemo:221Port FTP Explicite
sfilerGatewayDemo:2990Port FTP Implicite