Table des matières

Weblate - Outil de traduction collaboratif

CréationNicolas THOREZ 2019/12/10 16:38

Weblate (pour "Web" et "Translate") est une plateforme de gestion d'outils de traduction en mode collaboratif permettant la traduction de documents de multiples formats et sur différents outils orientés Web.

Droits

Cette procédure nécessite des droits root. Faîtes donc attention à ce que vous faîtes.

Environnement

Cette procédure a été réalisé sur une débian 9.8 et un Weblate en version 3.9.1.

Prérequis

Weblate préconise une installation en mode Docker sur une machine disposant à cet effet de :

On commencera par installer les paquets nécessaires pour démarrer l'installation :

apt-get update
apt-get -y install apt-transport-https ca-certificates curl software-properties-common gnupg2 git
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
apt-get update
apt-get -y install docker-ce docker-compose

Architecture

Attention à la ligne 4. L'architecture, symbolisée par [arch=amd64], peut varier selon votre environnement.

Installation

mkdir -p /usr/local/git/
cd /usr/local/git/
git clone https://github.com/WeblateOrg/docker-compose.git weblate-docker
cd weblate-docker

 nano ./docker-compose.override.yml

version: '2'
services:
  weblate:
    ports:
      - 80:8080
      - 443:4443
    environment:
      WEBLATE_EMAIL_HOST: smtp.shyrkasystem.com
      WEBLATE_EMAIL_HOST_USER: user
      WEBLATE_EMAIL_HOST_PASSWORD: password
      WEBLATE_SERVER_EMAIL: weblate@shyrkasystem.com
      WEBLATE_DEFAULT_FROM_EMAIL: weblate@shyrkasystem.com
      WEBLATE_ALLOWED_HOSTS: weblate.shyrkasystem.com,localhost
      WEBLATE_ADMIN_PASSWORD: Azerty123
      WEBLATE_ADMIN_EMAIL: weblate.admin@shyrkasystem.com
      WEBLATE_REQUIRE_LOGIN: 1

Propriété

Vérifier bien, après votre copie, que les fichiers ont bien les mêmes propriétaires et groupes que les autres fichiers du volumes, sinon nginx ne démarrera pas.

docker-compose -f docker-compose.yml -f docker-compose.override.yml build

docker-compose -f docker-compose.yml -f docker-compose.override.yml up

Installation

Félicitations !!! Weblate est désormais installé. Il ne vous reste plus qu'à le paramétrer selon vos besoins.

Restriction d'accès

Tel quel, weblate est accessible via une adresse IP et n'importe qui peut se connecter après avoir créer un compte. L'administrateur n'a pas de moyen d'empêcher cette création, il peut simplement supprimer les comptes créés après coup. Du coup, on est pas à l'abri des trolls…

Une bonne solution est de limiter l'accès à weblate via un contrôle d'accès au niveau du serveur web (htaccess).

Pour celà, on va apporter quelques modifications à la configuration de weblate (fichier docker-compose.override.yml) qui ressemblera à ça :

version: '2'
services:
  weblate:
    ports:
      - 127.0.0.1:8080:8080
      - 127.0.0.1:4443:4443
    environment:
      WEBLATE_EMAIL_HOST: smtp.shyrkasystem.com
      WEBLATE_EMAIL_HOST_USER: user
      WEBLATE_EMAIL_HOST_PASSWORD: password
      WEBLATE_SERVER_EMAIL: weblate@shyrkasystem.com
      WEBLATE_DEFAULT_FROM_EMAIL: weblate@shyrkasystem.com
      WEBLATE_ALLOWED_HOSTS: weblate.shyrkasystem.com,localhost,127.0.0.1
      WEBLATE_ADMIN_PASSWORD: Azerty123
      WEBLATE_ADMIN_EMAIL: weblate.admin@shyrkasystem.com
      WEBLATE_REQUIRE_LOGIN: 1

Avec cette configuration, le site n'est plus accessible qu'à partir de l'adresse http://127.0.0.1:8080. On met alors en place un serveur apache pour le proxy :

apt-get update
ap-get install apache2

a2enmod ssl proxy proxy_http

nano /etc/apache2/sites-available/weblate.conf

<IfModule mod_ssl.c>
        <VirtualHost *:443>
                ServerAdmin             admin@shyrkasystem.com
                ServerName              weblate.shyrkasystem.com

                <Location />
                        AuthName        "Restricted Access"
                        AuthType        Basic
                        AuthUserFile    /usr/local/htpasswd.weblate
                        Require         valid-user
                </Location>

                SSLEngine               On
                SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
                SSLCertificateKeyFile   /etc/ssl/private/ssl-cert-snakeoil.key

                ProxyPreserveHost       On
                ProxyRequests           Off
                ProxyPass               / https://127.0.0.1:4443/
                ProxyPassReverse        / https://127.0.0.1:4443/
                SSLProxyEngine          On
                SSLProxyVerify          None
                SSLProxyCheckPeerCN     Off
                SSLProxyCheckPeerName   Off
                SSLProxyCheckPeerExpire Off

        </VirtualHost>
</IfModule>

htpasswd -c /usr/local/htpasswd.weblate admin

a2ensite weblate.conf
service apache2 reload

Désormais, en appelant le site weblate, il nous faudra d'abord nous identifier via la fenêtre suivante :