Индекс на дневникаDockup / бележка от практиката
Note / self-host-libretranslate

Как да хоствате LibreTranslate самостоятелно през 2026 г.: модели, API лимити и постоянни данни

Хоствайте LibreTranslate самостоятелно с правилни портове, постоянно хранилище, HTTPS, secrets, backups и проверки при upgrade. Научете как да отстраните проблема, когато моделите не са изтеглени.

Ако вече сте опитвали да хоствате LibreTranslate самостоятелно, вероятно ви е познато разочароващото състояние: интерфейсът се зарежда, но моделите не са изтеглени или желаната езикова двойка не е налична. Създаването на контейнера наново рядко отстранява несъответствие между URL адреси, състояние и зависимости.

Това ръководство използва един конкретен критерий за завършеност — извеждане на списъка с инсталирани езици, превод на фиксирано изречение и в двете посоки и проверка на квотата на API ключа и отговорите при грешки. Всяко решение за конфигурацията се оценява спрямо този критерий, а не спрямо зеления индикатор на контейнера.

Възстановяване на LibreTranslate на празен хост

Преди да създадете първия реален запис, изведете списък на състоянието: изтеглени модели, база данни с API ключове и персонализирана конфигурация. Монтирайте /home/libretranslate/.local преди bootstrap, запишете безопасни примерни данни и заменете контейнера, за да докажете, че пътят действително е persistent. Потвърдете монтирането, като запишете безопасни данни, замените LibreTranslate и ги прочетете отново.

Snapshot-ите са ценни за бързо връщане към предишно състояние, но е необходим независим backup, когато хостът или volume-ът изчезне. Възстановете в празна среда с фиксирания image и проверете дали моделите и състоянието на API ключовете са възстановени и regression corpus-ът завършва с приемлив резултат. Използвайте persistent volumes and snapshots, за да запазите тези два механизма за възстановяване отделни.

Портове, процеси и частни услуги

Не позволявайте image-ът на LibreTranslate случайно да определи production архитектурата. Image-ът предоставя процес на порт 5000; storage-ът, routing-ът и външните изисквания все пак се нуждаят от обмислени lifecycle-и. Локалното изискване за runtime е storage за изтегляне на модели и CPU или GPU, подходящи за съответните езикови двойки. Поддържайте неговия lifecycle изрично дефиниран, така че преместването на LibreTranslate между хостове да не променя поведението незабелязано.

Deployment-ът е готов за по-задълбочено тестване, когато може да изведе списъка с инсталирани езици, да преведе фиксирано изречение и в двете посоки и да провери квотата на API ключа и отговорите при грешки. Проследявайте транзакцията в log-овете и наблюдавайте заредените езикови модели, времето за inference на CPU, паралелните заявки и дисковото пространство, използвано от изтеглянето на моделите. Тези наблюдения показват дали текущата topology изолира правилния компонент.

Проверете LibreTranslate deployment-а от край до край

Production gate-ът за LibreTranslate трябва да може да бъде изпълнен от човек, който не е изградил deployment-а. Дайте на този човек фиксираната версия, несензитивен тестов акаунт и следната задача: да изведе списъка с инсталирани езици, да преведе фиксирано изречение и в двете посоки и да провери квотата на API ключа и отговорите при грешки. Ако инструкциите изискват shell достъп, който не е документиран, услугата все още не е готова за operational употреба.

Повторете gate-а, като замените само контейнера. След това възстановете изтеглените модели, базата данни с API ключове и персонализираната конфигурация в празна инфраструктура и докажете, че моделите и състоянието на API ключовете са възстановени и regression corpus-ът завършва с приемлив резултат. Измервайте заредените езикови модели, времето за inference на CPU, паралелните заявки и дисковото пространство, използвано от изтеглянето на моделите, и при двете успешни изпълнения; неочакваните разлики често разкриват липсващ cache, index, worker или data mount.

Добавете drill за отказ: изпратете безопасен input близо до resource или format лимита, свързан с тази граница: моделите не са изтеглени или желаната езикова двойка не е налична. LibreTranslate трябва да върне полезна грешка, да запази съществуващото състояние и да се възстанови, когато условието отново стане валидно. Запазете timestamp-ите и съответните редове от log-овете, като заличите secrets. Тези данни ще бъдат референтната точка при следващата промяна на image-а или конфигурацията.

Настройки на контейнера, които си струва да прегледате

Използвайте команда, която показва всеки важен избор. Тази базова конфигурация свързва LibreTranslate с loopback интерфейса на хоста, добавя известните data mount-ове и задава първата необходима настройка. Потвърдете локалното изискване, преди да го направите достъпен: storage за изтегляне на модели и CPU или GPU, подходящи за съответните езикови двойки.

docker run -d \
  --name libretranslate \
  --restart unless-stopped \
  -p 127.0.0.1:5000:5000 \
  -v libretranslate-data:/home/libretranslate/.local \
  -e LT_API_KEYS=true \
  libretranslate/libretranslate:latest

Заменете floating tag-овете с тествана версия или digest. След стартиране прегледайте docker logs --tail 200 libretranslate и потвърдете, че процесът слуша на порт 5000. След това изпълнете acceptance действието на LibreTranslate; отговорът от root страницата не може да докаже, че целият сценарий работи: изведете списъка с инсталирани езици, преведете фиксирано изречение и в двете посоки и проверете квотата на API ключа и отговорите при грешки.

Credentials, роли и изложени повърхности

Специфичният за приложението security риск е стартирането на неограничен публичен API, чийто ресурс други могат да изчерпят. Operational решението е да активирате API ключове или upstream authentication, да ограничите честотата на публичните заявки и да инсталирате само необходимите езикови двойки. Завършете bootstrap-а през ограничен route и незабавно премахнете временния setup достъп след това.

LT_API_KEYS управлява поведението, а не confidentiality; проверете типа и стойността му и съхранявайте реалните credentials на LibreTranslate отделно. Дайте на процеса на LibreTranslate само документираните mount-ове и dependency route-ове; избягвайте достъп до root на хоста и до Docker socket-а. Записвайте неуспешните authentication опити и грешките в конфигурацията, но заличавайте token-ите, connection string-овете и съдържанието на потребителите.

Поддържайте вътрешните и външните URL адреси правилно разграничени

Издаването на TLS е само половината от route-а на LibreTranslate. Предоставяйте API през HTTPS и документирайте правилния base path. Изпращайте трафика вътрешно към порт 5000 и препращайте външната scheme, така че генерираните URL адреси и secure cookie-тата да останат съгласувани.

Използвайте пълния сценарий на LibreTranslate от чиста мрежа, а не само root страницата. Грешка 502 или проблем със сертификата може да бъде изолиран с automatic domain and TLS setup. Ако трафикът достига до процеса, но моделите не са изтеглени или желаната езикова двойка не е налична, диагностицирайте състоянието там, където възниква, вместо да добавяте още redirects.

Drills за отказ на LibreTranslate

Capacity тестовете трябва да проверяват заредените езикови модели, времето за inference на CPU, паралелните заявки и дисковото пространство, използвано от изтеглянето на моделите, а не повтаряща се заявка към /. Изпълнете сценария „извеждане на списъка с инсталирани езици, превод на фиксирано изречение и в двете посоки и проверка на квотата на API ключа и отговорите при грешки“ при реалистична concurrency и запишете latency, error rate и ръста на storage-а.

Планирането на upgrade трябва да отчита следния риск: пакетите с модели и server release-ите могат да променят резултата от превода, затова поддържайте малък regression corpus. Тествайте новия release с представителен input, след което повторете acceptance транзакцията и сравнете резултата. Ако моделите не са изтеглени или желаната езикова двойка не е налична, запишете неуспешната транзакция и проверете първата засегната граница, вместо да приемате, че проблемът е в ingress-а.

Deployment на LibreTranslate в Dockup без загуба на границите му

Dockup template-ът трябва да кодира image-а, порт 5000, mount-овете, health timing-а, domain-а, TLS и доставянето на secret-ите. Dockup трябва да запази runtime настройките на LibreTranslate, докато операторът потвърди следното локално изискване: storage за изтегляне на модели и CPU или GPU, подходящи за съответните езикови двойки. Същият deployment може да бъде насочен към Dockup сървъри или към капацитет, прикачен от клиента.

След като route-ът е активен, приложете публичната настройка и опитайте да изведете списъка с инсталирани езици, да преведете фиксирано изречение и в двете посоки и да проверите квотата на API ключа и отговорите при грешки. Направете backup на изтеглените модели, базата данни с API ключове и персонализираната конфигурация и включете restore упражнението в operational плана; това са отговорности на LibreTranslate, които остават видими и след provision-а на инфраструктурата.

Често задавани въпроси

Какво е необходимо на LibreTranslate за production deployment?

Насочете контейнера на LibreTranslate през порт 5000 към един HTTPS origin. Локалното изискване за runtime е storage за изтегляне на модели и CPU или GPU, подходящи за съответните езикови двойки. Не обявявайте LibreTranslate за готов, преди да можете да изведете списъка с инсталирани езици, да преведете фиксирано изречение и в двете посоки и да проверите квотата на API ключа и отговорите при грешки.

Кои данни на LibreTranslate трябва да бъдат включени в backup?

Направете /home/libretranslate/.local persistent и включете изтеглените модели, базата данни с API ключове и персонализираната конфигурация в един и същ recovery manifest. Чистото restore на LibreTranslate е успешно само когато моделите и състоянието на API ключовете са възстановени и regression corpus-ът завършва с приемлив резултат.

Необходим ли е HTTPS на LibreTranslate зад reverse proxy?

Използвайте HTTPS за публичния origin на LibreTranslate и запазете порт 5000 във вътрешния route. Приложете правилно настройката на LibreTranslate: предоставяйте API през HTTPS и документирайте правилния base path. При LibreTranslate HTTPS защитава credentials или потребителско съдържание при пренос и поддържа съгласувано поведение на клиента, чувствително към origin-а.

Как трябва да се тества upgrade на LibreTranslate?

Възстановете текущото състояние на LibreTranslate в изолиран deployment, приложете кандидат-версията и повторете acceptance транзакцията. Обърнете особено внимание, защото пакетите с модели и server release-ите могат да променят резултата от превода, затова поддържайте малък regression corpus. Запазете предишния image на LibreTranslate, докато не изясните границите на data migration-а и rollback-а.