Création — Nicolas 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.
root. Faîtes donc attention à ce que vous faîtes.
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
[arch=amd64], peut varier selon votre environnement.
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
/var/lib/docker/volumes/weblatedocker_weblate-data/_data/ mais cela peut varier selon les systèmes), un dossier sslfullchain.pem et la clé privée correspondante sous le nom privkey.key.
docker-compose -f docker-compose.yml -f docker-compose.override.yml build
docker-compose -f docker-compose.yml -f docker-compose.override.yml up

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>
admin par 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
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 :