Featured image of post Installation Swag avec Docker

Installation Swag avec Docker

Installation de Swag avec Docker

Introduction

Swag (Secure Web Application Gateway) est un serveur Web HTTPS qui fait office de Reverse Proxy. Il contient aussi un service anti intrusion (fail2ban) configurable.

Swag permet un accès sécurisé à vos services hébergés sur OMV depuis l’extérieur. Il fait office de passerelle unique HTTTPS pour tous les accès sur votre réseau depuis l’extérieur. L’aiguillage s’effectue en interne avec une redirection de port vers le service demandé. Cette redirection de port s’effectue avec un nom de domaine en lui rajoutant soit un sous domaine, soit un répertoire à la fin de l’URL.

Pour cette installation j’utilise l’image officielle qui est présente ici : github.com/linuxserver/docker-swag

Remarque : J’ai créé au préalable un utilisateur omdocker (voir l’article création d ‘un utilisateur Docker. J’ai créé aussi un répertoire qui contiendra tous mes installations docker. dans ce blog, j’utiliserais pour exemple le chemin /volume/docker.

Remarque : Le prérequis pour utiliser Swag est d’avoir un nom de domaine. Dans cet article j’utilise le service gratuit de DuckDNS. Vous pouvez consulter l’article sur l’installation de DuckDNS en Docker pour l’utiliser. Swag est compatible avec de nombreux services de DNS dynamique. Consulter la documentation pour avoir la liste complète.

Nous allons créer aussi le répertoire swag en ligne de commande sur le NAS (connexion en SSH) dans notre répertoire docker : /volume/docker. Cette étape est facultative, le containeur créera le répertoire automatiquement lors du déploiement si celui ci n’existe pas.

cd /volume/docker
mkdir swag

Le fichier de configuration

Si vous souhaitez sécuriser le lancement de ‘swag‘, je vous engage à parcourir l’article sécuriser Docker

Il est importent de bien respecter l’indentation des fichiers de configurations : pas de tabulation. Attention aussi à la version du fichier, il y a des légères évolutions de syntaxe d’une version à l’autre.

Le fichier yml en détails. Il faut remplacer pour votre configuration :

  • /volume/docker/ : Le chemin qui contient les installations de tous vos containeurs,
  • PUID et PGID : celui de votre utilisateur Docker (omdocker chez moi),
  • TZ : Votre zone de temps,
  • VALIDATION : Votre service de DNS dynamique,
  • DUCKDNSTOKEN : Spécifique à une validation avec le service Duck DNS,
  • URL : Votre domaine.
  • ports : J’ai laissé le port externe par défaut 443 et définis un port interne 10443. Le port 81 est optionnel,
  • DOCKER_MODS : Cette ligne est optionnelle et correspond permet de rajouter deux modules. Voir les modules optionnels à la fin de l’article.

    version: "2.1"
    services:
    swag:
        image: linuxserver/swag
        container_name: swag
        cap_add:
        - NET_ADMIN
        environment:
        - PUID=1003
        - PGID=100
        - TZ=Europe/Paris
        - URL=subdomain.duckdns.org
        - SUBDOMAINS=wildcard
        - VALIDATION=duckdns
        - DUCKDNSTOKEN=votreToken
        - EMAIL=email
        - DOCKER_MODS=linuxserver/mods:swag-dashboard|linuxserver/mods:swag-dbip # optionnel
        volumes:
        - /srv/disk1/docker/swag:/config
        labels:
        - com.centurylinklabs.watchtower.monitor-only=true
        ports:
        - 10443:443 # nginx
        - 10081:81 # dashboard
        restart: unless-stopped 

Vous copiez le contenu de ce fichier dans votre interface de gestion Portainer en allant dans ‘Stacks‘ et ‘Add stack‘.

La pile swag

Donnez un nom à votre pile, par exemple ‘swag‘, puis déployer cotre containeur en cliquant en bas sur ‘Deploy the stack’.

Après une phase de téléchargement de l’image, puis d’installation de l’application, vous devriez arriver sur cet écran si tout s’est bien passé :

Le container swag est installé et est en fonctionnement


Redirection du port 443 sur votre Box

Dans le fichier de configuration de swag, nous lui avons indiqués utilisés un port interne ‘10443‘ et un port externe ‘443‘. Nous devons donc autoriser les connections entrantes sur le port 443 sur la box Internet et la rediriger vers le port 10443 sur OMV.

Voici un exemple de configuration de redirection, pour une Livebox Orange :

Configuration Livebox

Modules optionnels de swag

Il est possible de rajouter des fonctionnalités à swag grâce à des modules docker. Il en existe de plusieurs sortes mais je vais présenter ici les deux qui me semble les plus intéressants.

Tableau de bord de swag

L’image officielle de ce module est décrite ici :github.com/linuxserver/docker-mods/tree/swag-dashboard

Ce module ajoute un tableau de bord graphique qui analyse tous les logs et containeurs utilisant le service swag. Nous pouvons nous connecter à cette interface localement avec l’adresse IP du NAS et le port spécifié dans le fichier de configuration (81 par défaut, 10081 ici) : http://votreip:10081

Tableau de bord de ‘swag‘

Blocage géographique par pays

L’image officielle de ce module est décrite ici : github.com/linuxserver/docker-mods/tree/swag-dbip

Remarque : si vous rajouter le module après coup dans la configuration de la pile, pensez à relancer le containeur swag pour qu’il déploie tous les fichiers nécessaires.

Ce module permet de rajouter un blocage géographique pour les containeurs utilisant le service swag. Une fois le blocage activé et configuré dans swag, il faudra encore dans chaque fichier de configuration ‘nginx’ des containeurs rajouter deux lignes de codes.

Nous allons déjà activé et configuré le blocage dans swag. dans un 1er temps, il faut ouvrir le fichier ‘nginx.conf‘ qui se trouve dans le répertoire /volume/docker/swag/nginx/.

sudo nano /volume/docker/swag/nginx/nginx.conf

Nous allons lui spécifier d’inclure le fichier de configuration de blocage géographique. Pour cela, nous rajoutons la ligne de code suivante juste après l’ancre ‘http’ situé à la ligne 24.

include /config/nginx/dbip.conf

Fichier de configuration ‘nginx.conf‘

Nous sauvegardons CTRL+O et nous quittons CTRL+X.

Nous allons maintenant configuré ce fichier de blocage géographique ‘dbip.conf‘ qui se trouve dans le même répertoire /volume/docker/swag/nginx/

sudo nano /volume/docker/swag/nginx/dbip.conf

Fichier de blocage géographique ‘dbip.conf‘

Je bloque tout par défaut dans la ‘whitelist’ et j’autorise que les connexions venant de France et de Belgique.

Il nous reste maintenant dans les fichiers de configurations ‘nginx’ des containeurs de lui indiquer que nous souhaitons utiliser le blocage géographique. Cela ce fait en rajoutant manuellement ces deux lignes de code juste avant la section ‘location / {‘ vers la ligne 22 :

if ($lan-ip = yes) { set $geo-whitelist yes; }
if ($geo-whitelist = no) { return 404; }

Par exemple avec le fichier de configuration ‘bitwarden.subdomain.conf‘ du containeur ‘bitwarden’ :

Fichier de configuration nginx du conteneur ‘bitwarden‘

Généré avec Hugo
Thème Stack conçu par Jimmy