oe7drt-website/content/posts/2024/73-install-libretranslate/index.md

4.8 KiB

title summary date lastmod categories tags
Install LibreTranslate on a VM Summarized how I finally got LibreTranslate installed on my Archlinux based local mastodon test-instance. <small>I am not affiliated with LibreTranslate -- this post reflects my own use case. The thumbnail is a trademark of [LibreTranslate](https://github.com/LibreTranslate/LibreTranslate/blob/main/TRADEMARK.md).</small> 2024-12-07T07:22:28+01:00 2025-01-06T15:16:13+0000
computerstuff
Archlinux
command-line
Linux
Mastodon
selfhost
server
Unraid

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 10GB.

While installing the needed python packages I ran out of space on the /tmp filesystem (which was just a tmpfs filesystem).

Modify /etc/fstab and increase /tmp

To increase /tmp we log into the VM and modify the file /etc/fstab.

tmpfs /tmp tmpfs size=10G 0 0

Alternatively you can use another directory with more space as tmp storage:

$ TMPDIR=/var/lib/libretranslate/tmp pip install --prefer-binary libretranslate

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 and install libretranslate in a virtual environment:

(I had problems with Python 3.12 so I'll stick with 3.11 for now)

$ sudo su - libretranslate
$ python3.11 -m venv venv
$ source venv/bin/activate
$ pip install --prefer-binary libretranslate
$ argospm update

Update: You get an error similar to this one?

(venv) [libretranslate@mastodon ~]$ pip install --prefer binary libretranslate
Traceback (most recent call last):
  File "/var/lib/libretranslate/venv/bin/pip", line 5, in <module>
    from pip._internal.cli.main import main
ModuleNotFoundError: No module named 'pip'

Most of the time this is because symlinks of python got updated and you haven't installed all the modules on the new versions venv. I solved this with a new installation on the new version, there might be easier ways but I haven't found the time to look into that yet.

So I install pip again and repeat the installation within the new python versions venv.

$ python -m ensurepip

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=10G 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.