--- title: Install LibreTranslate on a VM summary: > Summarized how I finally got LibreTranslate installed on my Archlinux based local mastodon test-instance. 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). date: 2024-12-07T07:22:28+01:00 lastmod: 2024-12-08T12:40:21+0000 categories: - computerstuff tags: - 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 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. ```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. ```console $ paru -S cmake ``` ## The installation of LibreTranslate ### Create a dedicated user for the service ```console $ sudo useradd --create-home --home-dir /var/lib/libretranslate libretranslate ``` Change to the new user: ```console $ sudo su - libretranslate $ python -m venv venv $ source venv/bin/activate $ pip install --prefer-binary libretranslate $ argospm update ``` ### Install every language possible ```console $ 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 ```console $ 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 ```console $ cd /var/lib/mastodon ``` Add to .env.production: ```env 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 ```systemd [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: ```console $ sudo systemctl daemon-reload ``` Enable and start the service: ```console $ sudo systemctl enable --now libretranslate.service ``` ## Restart Mastodon to let it know of the translation service ```console $ sudo systemctl restart mastodon-web.service ``` ## Remove the extra space from /tmp Comment or remove the line in /etc/fstab ```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.