2024-12-07 10:52:28 +01:00
|
|
|
---
|
2024-12-08 13:40:21 +01:00
|
|
|
title: Install LibreTranslate on a VM
|
2024-12-08 12:14:36 +01:00
|
|
|
summary: >
|
2024-12-08 13:40:21 +01:00
|
|
|
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
|
2024-12-08 12:14:36 +01:00
|
|
|
my own use case. The thumbnail is a trademark of
|
|
|
|
[LibreTranslate](https://github.com/LibreTranslate/LibreTranslate/blob/main/TRADEMARK.md).</small>
|
2024-12-07 10:52:28 +01:00
|
|
|
date: 2024-12-07T07:22:28+01:00
|
2024-12-08 13:40:21 +01:00
|
|
|
lastmod: 2024-12-08T12:40:21+0000
|
2024-12-07 10:52:28 +01:00
|
|
|
categories:
|
|
|
|
- computerstuff
|
|
|
|
tags:
|
2024-12-08 13:40:21 +01:00
|
|
|
- Archlinux
|
|
|
|
- command-line
|
|
|
|
- Linux
|
|
|
|
- Mastodon
|
|
|
|
- selfhost
|
|
|
|
- server
|
|
|
|
- Unraid
|
2024-12-07 10:52:28 +01:00
|
|
|
---
|
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
I usually run the mastodon instance on a <abbr title="virtual machine">VM</abbr>
|
|
|
|
with two cores and 4GB of RAM. That is plenty of power for the simple tasks a
|
|
|
|
single-user instance has to do.
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
## Preface / preparations
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
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 <kbd>/tmp</kbd>
|
|
|
|
filesystem (which was just a <kbd>tmpfs</kbd> 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 <kbd>/etc/fstab</kbd> and increase <kbd>/tmp</kbd>
|
|
|
|
|
|
|
|
To increase <kbd>/tmp</kbd> we log into the VM and modify the file <kbd>/etc/fstab</kbd>.
|
|
|
|
|
|
|
|
```fstab
|
2024-12-07 10:52:28 +01:00
|
|
|
tmpfs /tmp tmpfs size=6G,nr_inodes=10k 0 0)
|
2024-12-08 13:40:21 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
### Install some needed packages
|
|
|
|
|
|
|
|
I had much prepared/installed already, but `cmake` was still missing.
|
|
|
|
|
|
|
|
```console
|
|
|
|
$ paru -S cmake
|
|
|
|
```
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
## The installation of LibreTranslate
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
### Create a dedicated user for the service
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
```console
|
|
|
|
$ sudo useradd --create-home --home-dir /var/lib/libretranslate libretranslate
|
|
|
|
```
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
Change to the new user:
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
```console
|
|
|
|
$ sudo su - libretranslate
|
|
|
|
$ python -m venv venv
|
|
|
|
$ source venv/bin/activate
|
|
|
|
$ pip install --prefer-binary libretranslate
|
|
|
|
$ argospm update
|
|
|
|
```
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
### Install every language possible
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
```console
|
|
|
|
$ for lang in $(argospm search | cut -d: -f1 ); do echo argospm install $lang;done
|
|
|
|
```
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
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).
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
#### If you only want to translate to English, use this instead
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
```console
|
|
|
|
$ for lang in $(argospm search | grep -E "^translate-.._en.*"| awk '{ print $2 }' | xargs); do echo argospm install translate-${lang}_en; done
|
|
|
|
```
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
Also remove `echo` to actually install these translation packages.
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
### Let mastodon know of the LibreTranslate installation
|
2024-12-07 10:52:28 +01:00
|
|
|
|
2024-12-08 13:40:21 +01:00
|
|
|
```console
|
|
|
|
$ cd /var/lib/mastodon
|
|
|
|
```
|
|
|
|
|
|
|
|
Add to .env.production:
|
|
|
|
|
|
|
|
```env
|
2024-12-07 10:52:28 +01:00
|
|
|
ALLOWED_PRIVATE_ADDRESSES=127.0.0.1
|
|
|
|
LIBRE_TRANSLATE_ENDPOINT=http://127.0.0.1:5000
|
2024-12-08 13:40:21 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
### Create a systemd unit file to automatically start LibreTranslate
|
|
|
|
|
|
|
|
File: <kbd>/etc/systemd/system/libretranslate.service</kbd>
|
|
|
|
|
|
|
|
```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 <kbd>/tmp</kbd>
|
|
|
|
|
|
|
|
Comment or remove the line in <kbd>/etc/fstab</kbd>
|
|
|
|
|
|
|
|
```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.
|