Table des matières

Installation de Libretranslate

On installe python et venv

sudo apt update && sudo apt upgrade && sudo apt install python3 python3-venv python3-pip apache2

On crée un user dédié

sudo useradd --system --no-create-home --user-group libretranslate
sudo mkdir -p /home/libretranslate
sudo chown libretranslate:libretranslate /home/libretranslate

On se rend dans le dossier

cd /home/libretranslate
Si c'est une ré-installation on pense à d'abord stopper l'instance en cours
sudo systemctl stop libretranslate.service

En tant que libretranslate on active venv, on installe pip et libretranslate :

sudo -u libretranslate bash
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install libretranslate
deactivate

On peut reactiver venv après un deactivate en se rendant de nouveau dans le dossier puis avec la commande source :

cd /home/libretranslate
source venv/bin/activate

On peut effectuer un premier lancement avec quelques langues :

libretranslate --update-models --load-only fr,en

On quitte l'user :

exit

On crée un service :

sudo nano /etc/systemd/system/libretranslate.service
[Unit]
Description=LibreTranslate
Documentation=https://github.com/LibreTranslate/LibreTranslate
Wants=network.target
After=network.target
[Service]
User=libretranslate
Group=libretranslate
Type=idle
Restart=on-failure
RestartSec=10
WorkingDirectory=/home/libretranslate
Environment="PATH=/home/libretranslate/venv/bin"
Environment="LT_LOAD_ONLY=fr,en,es,it,de,ja"
ExecStart=/home/libretranslate/venv/bin/libretranslate --host 127.0.0.1 --port 5000 --load-only fr,en,es,it,de,ja --api-keys --ssl
#EnvironmentFile=/home/libretranslate/pyvenv.cfg
ExecReload=/bin/kill -s HUP $MAINPID
KillMode=mixed
TimeoutStopSec=1
[Install]
WantedBy=multi-user.target

Puis on active le service (et on le lance directement avec –now) et on vérifie son status :

sudo systemctl enable --now libretranslate.service
sudo systemctl status libretranslate.service

Création du Proxypass pour apache

sudo nano /etc/apache2/sites-enabled/trad.domain.conf
<VirtualHost *:80>
        ServerName trad.domain
        DocumentRoot /var/www/html/
RewriteEngine on
RewriteCond %{SERVER_NAME} =trad.domain
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
sudo nano /etc/apache2/sites-enabled/trad.domain-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName trad.domain
        DocumentRoot /var/www/html/
 
 
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
    ProxyPreserveHost On
 
 
        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateFile /etc/letsencrypt/live/trad.domain/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/trad.domain/privkey.pem
</VirtualHost>
</IfModule>
sudo systemctl restart apache2

Et pensez au certbot si besoin :)

Modifier le template

nano /home/libretranslate/venv/lib/python3.13/site-packages/libretranslate/templates/index.htm

Et on relance le service pour voir les modifications :

sudo systemctl restart libretranslate.service

Modifier les langues

La liste est disponible ici : https://docs.libretranslate.com/fr/guides/supported_languages/

On stoppe le service et on va modifier les 2 lignes suivantes en ajoutant les codes correspondants :

Environment="LT_LOAD_ONLY=fr,en,es,it,de,ja"
ExecStart=/home/libretranslate/venv/bin/libretranslate --host 127.0.0.1 --port 5000 --load-only fr,en,es,it,de,ja --api-keys --ssl

On recharge puis on redémarre le service pour la prise en compte.

systemctl daemon-reload
sudo systemctl restart libretranslate.service

Pour supprimer une langue, le plus simple est de supprimer les langues installées et de relancer libretranslate avec les langues désirées uniquement :

ls -l ~/.local/share/argos-translate/packages/
rm -rf ~/.local/share/argos-translate/packages/*

Puis de mettre à jour le service comme pour l'ajout de langues. Et dans les 2 cas, on recharge puis on redémarre le service pour la prise en compte.

systemctl daemon-reload
sudo systemctl restart libretranslate.service