Ceci est une ancienne révision du document !
~~CLOSETOC~~
Weblate - Outil de traduction collaboratif
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.
- Référence : Weblate
<note warning>Cette procédure nécessite des droits root. Faîtes donc attention à ce que vous faîtes.</note>
<note>Cette procédure a été réalisé sur une débian 9.8.</note>
Prérequis
Weblate préconise une installation en mode Docker sur une machine disposant à cet effet de :
- 2 Go de RAM
- 2 coeurs niveau CPU
- 1 Go d'espace libre
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
<note important>Attention à la ligne 4. L'architecture, symbolisée par [arch=amd64], peut varier selon votre environnement.</note>
Installation
- On commence par cloner le dépôt GIT en local :
mkdir -p /usr/local/git/ cd /usr/local/git/ git clone https://github.com/WeblateOrg/docker-compose.git weblate-docker cd weblate-docker
- Un fois dans le dépôt local, on va créer un fichier de configuration personnalisé :
nano ./docker-compose.override.yml
- Dans ce fichier, de type YAML, on va y ajouter les informations personnalisées suivantes :
- ports : indique en premier le port d'écoute sur l'hôte et en second, le port d'écoute traduit dans le conteneur. Généralement, on indiquera une première ligne pour le protocole HTTP et une seconde pour le protocole HTTPS.
- WEBLATE_EMAIL_HOST : indique le serveur SMTP pour les notifications de weblate.
- WEBLATE_EMAIL_HOST_USER : en cas d'authentification nécessaire pour l'utilisation du serveur SMTP, indique le nom à utiliser.
- WEBLATE_EMAIL_HOST_PASSWORD : en cas d'authentification nécessaire pour l'utilisation du serveur SMTP, indique le mot de passe à utiliser.
- WEBLATE_SERVER_EMAIL : indique l'adresse mail à utiliser en tant que destinataire des notifications.
- WEBLATE_DEFAULT_FROM_EMAIL : indique l'adresse mail à utiliser en tant qu'expéditeur des notifications.
- WEBLATE_ALLOWED_HOSTS : indique les hôtes autorisés à se connecter à weblate. On y indiquera généralement l'url correspondant au service web et pour des besoins de debug, le localhost.
- WEBLATE_ADMIN_PASSWORD : indique le mot de passe de l'administrateur de weblate. Si cette directive est absente, un mot de passe créée automatiquement par le système sera utilisé et affiché durant l'installation.
- WEBLATE_ADMIN_EMAIL : indique l'adresse mail de l'administrateur.
- WEBLATE_REQUIRE_LOGIN : définie à 1, cette directive permet de forcer les utilisateurs à se connecter et interdit la navigation anonyme.
- Cela donne un fichier de ce style :
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
- Pour pouvoir utiliser le protocole HTTPS, il faut disposer d'un certificat. Pour l'exemple, j'ai utilisé un certificat auto-signé.
- Référence : Créer un certificat auto-signé
- Référence : Convertir un certificat CRT et PEM
- On crée dans le volume du docker (pour moi, il se trouve dans
/var/lib/docker/volumes/weblatedocker_weblate-data/_data/mais cela peut varier selon les systèmes), un dossierssl - On copie dans ce dossier, le certificat sous le nom
fullchain.pemet la clé privée correspondante sous le nomprivkey.key.
<note important>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. </note>
- On construit le docker :
docker-compose -f docker-compose.yml -f docker-compose.override.yml build
- Il nous reste plus qu'à lancer le déploiement de weblate via la commande :
docker-compose -f docker-compose.yml -f docker-compose.override.yml up
- Le système va désormais télécharger les composant de weblate et monter le conteneur.
- Une fois terminée, le site est accessible via l'url indiqué dans WEBLATE_ALLOWED_HOSTS. Cette url devra bien sûr avoir été préalablement renseignée dans le DNS ou le fichier hosts.
<note tip>Félicitations !!! Weblate est désormais installé. Il ne vous reste plus qu'à le paramétrer selon vos besoins.</note>
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 :
- On installe les paquets nécessaires :
apt-get update ap-get install apache2
- On active les modules nécessaires :
a2enmod ssl proxy proxy_http
- On crée le fichier de configuration correspondant à notre site :
nano /etc/apache2/sites-available/weblate.conf
- On ajoute la configuration suivante à notre fichier :
<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>
- On crée le fichier htpasswd.weblate (remplacez
adminpar le login que vous voulez utiliser) et on renseigne le mot de passe nécessaire au login choisi :
htpasswd -c /usr/local/htpasswd.weblate admin
- On active le site et on recharge le service apache :
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 :
— Nicolas THOREZ 2019/12/10 16:38

Discussion