Install LibreTranslate on a VM
Table of Contents
I usually run the mastodon instance on a VM with two cores and 4GB of RAM. That is plenty of power for the simple tasks a single-user instance has to do.
Preface / preparations #
But for the installation of LibreTranslate I enhanced (after powering off the VM) the cores to 4 and the RAM to 8GB.
While installing the needed python packages I ran out of space on the /tmp filesystem (which was just a tmpfs filesystem). We could increase the RAM to 10GB or 12GB but for me it worked by only using 8GB of RAM for this VM.
Modify /etc/fstab and increase /tmp #
To increase /tmp we log into the VM and modify the file /etc/fstab.
tmpfs /tmp tmpfs size=6G,nr_inodes=10k 0 0)
Install some needed packages #
I had much prepared/installed already, but cmake
was still missing.
$ paru -S cmake
The installation of LibreTranslate #
Create a dedicated user for the service #
$ sudo useradd --create-home --home-dir /var/lib/libretranslate libretranslate
Change to the new user:
$ sudo su - libretranslate
$ python -m venv venv
$ source venv/bin/activate
$ pip install --prefer-binary libretranslate
$ argospm update
Install every language possible #
$ for lang in $(argospm search | cut -d: -f1 ); do echo argospm install $lang;done
Remove echo
from that command to actually install them (the command above prints the commands
needed to install the languages; you can only install one at a time).
If you only want to translate to English, use this instead #
$ for lang in $(argospm search | grep -E "^translate-.._en.*"| awk '{ print $2 }' | xargs); do echo argospm install translate-${lang}_en; done
Also remove echo
to actually install these translation packages.
Let mastodon know of the LibreTranslate installation #
$ cd /var/lib/mastodon
Add to .env.production:
ALLOWED_PRIVATE_ADDRESSES=127.0.0.1
LIBRE_TRANSLATE_ENDPOINT=http://127.0.0.1:5000
Create a systemd unit file to automatically start LibreTranslate #
File: /etc/systemd/system/libretranslate.service
[Unit]
Description=LibreTranslate
After=network.target
[Service]
User=libretranslate
Group=libretranslate
WorkingDirectory=/var/lib/libretranslate/
ExecStart=/var/lib/libretranslate/venv/bin/python /var/lib/libretranslate/venv/bin/libretranslate --host 0.0.0.0 --port 5000 --suggestions --req-limit 20 --update-models
Restart=always
#CPUQuota=50%
[Install]
WantedBy=multi-user.target
Start LibreTranslate #
First, tell systemd of the new unit file:
$ sudo systemctl daemon-reload
Enable and start the service:
$ sudo systemctl enable --now libretranslate.service
Restart Mastodon to let it know of the translation service #
$ sudo systemctl restart mastodon-web.service
Remove the extra space from /tmp #
Comment or remove the line in /etc/fstab
#tmpfs /tmp tmpfs size=6G,nr_inodes=10k 0 0)
Reduce the VMs specs back to normal #
I set the VM back to two cores and 4GB of RAM. Poweroff the VM
with sudo poweroff
or sudo systemctl poweroff
and change the values
back to normal. Start the VM again and all services should come online.