Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Weblate - Outil de traduction collaboratif ====== <label type="info">Création</label> --- //[[nekan@shyrkasystem.com|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. * Référence : [[https://docs.weblate.org/en/latest/index.html|Weblate]] <callout type="danger" icon="true" title="Droits">Cette procédure nécessite des droits ''root''. Faîtes donc attention à ce que vous faîtes.</callout> <callout type="primary" icon="true" title="Environnement">Cette procédure a été réalisé sur une débian 9.8 et un Weblate en version 3.9.1.</callout> ===== 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 : <sxh bash; highlight:4>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</sxh> <callout type="warning" icon="true" title="Architecture">Attention à la ligne 4. L'architecture, symbolisée par ''[arch=amd64]'', peut varier selon votre environnement.</callout> ===== Installation ===== * On commence par cloner le dépôt GIT en local : <sxh bash>mkdir -p /usr/local/git/ cd /usr/local/git/ git clone https://github.com/WeblateOrg/docker-compose.git weblate-docker cd weblate-docker</sxh> * Un fois dans le dépôt local, on va créer un fichier de configuration personnalisé : <sxh bash> nano ./docker-compose.override.yml</sxh> * 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 : <sxh yaml>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 </sxh> * 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 : [[snakeoil|Créer un certificat auto-signé]] * Référence : [[crt2pem|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 dossier ''ssl'' * On copie dans ce dossier, le certificat sous le nom ''fullchain.pem'' et la clé privée correspondante sous le nom ''privkey.key''. <callout type="warning" icon="true" title="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. </callout> * On construit le docker : <sxh bash>docker-compose -f docker-compose.yml -f docker-compose.override.yml build</sxh> * Il nous reste plus qu'à lancer le déploiement de weblate via la commande : <sxh bash>docker-compose -f docker-compose.yml -f docker-compose.override.yml up</sxh> * 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. <image shape="thumbnail">{{ :linux:weblate:weblate_001.png |}}</image> <callout type="success" icon="true" title="Installation">Félicitations !!! Weblate est désormais installé. Il ne vous reste plus qu'à le paramétrer selon vos besoins.</callout> ===== 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 : <sxh yaml>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 </sxh> 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 : <sxh bash>apt-get update ap-get install apache2</sxh> * On active les modules nécessaires : <sxh bash>a2enmod ssl proxy proxy_http</sxh> * On crée le fichier de configuration correspondant à notre site : <sxh bash>nano /etc/apache2/sites-available/weblate.conf</sxh> * On ajoute la configuration suivante à notre fichier : <sxh bash><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></sxh> * On crée le fichier htpasswd.weblate (remplacez ''admin'' par le login que vous voulez utiliser) et on renseigne le mot de passe nécessaire au login choisi : <sxh bash>htpasswd -c /usr/local/htpasswd.weblate admin</sxh> * On active le site et on recharge le service apache : <sxh bash>a2ensite weblate.conf service apache2 reload</sxh> Désormais, en appelant le site weblate, il nous faudra d'abord nous identifier via la fenêtre suivante : <image shape="thumbnail">{{ :linux:weblate:weblate_002.png |}}</image> ~~DISCUSSION~~ linux_weblate.txt Dernière modification : 2021/03/05 16:27de nekan