What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
To self-host LibreTranslate on a VPS, install it with Python or run the project’s Docker image, keep the service on its default localhost listener while a reverse proxy handles public HTTPS, load only the language models you need, and protect the endpoint with API keys and limits. Start with a local /translate request, then expose the tested service to clients.
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
What you are building
LibreTranslate is an open-source translation API powered by Argos Translate. Running it on your own virtual private server keeps the application, model files, logs, and network controls under your control instead of sending requests to a third-party translation endpoint.
As an Amazon Associate I earn from qualifying purchases.
Free tools Windows power users keep installed
One-click scans. No signup required.
A typical deployment has four layers:
- LibreTranslate: the HTTP API process that serves translation requests.
- Argos language models: the files used to translate between language pairs.
- An exposure layer: usually a reverse proxy that accepts HTTPS traffic and forwards requests to LibreTranslate.
- VPS controls: firewall rules, persistent storage, process supervision, backups, and monitoring.
The service listens on 127.0.0.1:5000 by default. That is useful when a reverse proxy runs on the same VPS: LibreTranslate is not directly reachable from the internet, and only the proxy needs to handle certificates and public traffic. If you deliberately bind LibreTranslate to an externally reachable address, you must configure TLS, firewall rules, authentication, and request controls yourself.
Choose a deployment method
The project supports several ways to run the API. Your choice affects repeatability, isolation, and how much of the host you must maintain.
#1 Best Overall
- Includes Raspberry Pi 4 4GB Model B with 1.5GHz 64-bit quad-core CPU (4GB RAM)
- Includes Pre-Loaded 32GB EVO+ Micro SD Card (Class 10), USB MicroSD Card Reader
- CanaKit Premium High-Gloss Raspberry Pi 4 Case with Integrated Fan Mount, CanaKit Low Noise Bearing System Fan
- CanaKit 3.5A USB-C Raspberry Pi 4 Power Supply (US Plug) with Noise Filter, Set of Heat Sinks, Display Cable - 6 foot (Supports up to 4K60p)
- CanaKit USB-C PiSwitch (On/Off Power Switch for Raspberry Pi 4)
| Method | What you run | Best fit | Important consideration |
|---|---|---|---|
| Python/pip | pip install libretranslate, then the libretranslate command |
A simple installation on a Python-managed VPS | You maintain the Python environment and process lifecycle. |
| Docker | The LibreTranslate container, using the repository’s run.sh or run.bat workflow |
Repeatable deployments and separation from host packages | Persist model files outside the disposable container layer. |
| Gunicorn | gunicorn --bind 0.0.0.0:5000 'wsgi:app()' |
A production process server for a Python installation | The example binds every interface, so network access must be controlled deliberately. |
| Kubernetes/Helm | The project’s Helm chart | Clusters that already provide ingress, secrets, storage, and monitoring | More operational machinery than a single VPS normally requires. |
For production, the project recommends Gunicorn or Docker (which is set up with Gunicorn) to avoid memory leaks associated with a less suitable development-style process. A single VPS usually starts with Docker or a Python installation behind a reverse proxy; use Helm when the rest of your service already runs in Kubernetes.
Plan the VPS before installing
No authoritative CPU, RAM, throughput, latency, or cost minimum is published in the material available for this deployment. Translation speed and memory use depend on the selected models, request sizes, concurrency, and the rest of the workloads sharing the VPS. Start with a monitored instance, leave headroom for model files and the operating system, and scale after observing real traffic rather than relying on an invented sizing number.
Decide the network shape
- Private application endpoint: bind LibreTranslate to
127.0.0.1and place a reverse proxy on the same server. - Private network endpoint: bind to an internal VPS or VPC address when another trusted service must call it directly.
- Direct public endpoint: bind to an externally reachable interface only when you have a deliberate TLS, firewall, authentication, and abuse-control design.
Prepare operational prerequisites
- For pip installation, use Python 3.8 or newer.
- Reserve persistent disk space for model files, especially if you will load several languages.
- Decide where logs and backups will live before making the endpoint public.
- Have a DNS name and certificate plan if clients will connect over HTTPS.
- Keep an administrative path that does not depend on the translation API, so you can recover a bad configuration.
Install LibreTranslate with pip
The pip route is the shortest path when the VPS already has a suitable Python environment.
- Confirm Python: verify that the host provides Python 3.8 or newer.
- Install the package: run
pip install libretranslatein the environment you intend to keep for the service. - Start the API: invoke
libretranslatewith the arguments appropriate for your network and model plan. - Keep the default bind while testing: unless you have a reason to change it, leave
--hostat its default,127.0.0.1, and use the default port5000.
LibreTranslate accepts command-line controls for the host, port, character limit, request limit, batch limit, TLS, API keys, model updates, metrics, and translation caching. A minimal first run can therefore be just libretranslate; add production controls explicitly instead of assuming the defaults are secure.
Run it with Gunicorn for production
The documented Gunicorn form is:
gunicorn --bind 0.0.0.0:5000 'wsgi:app()'
This listens on all interfaces at port 5000. That is different from the normal 127.0.0.1 default: any firewall or network policy that allows the port can potentially reach the process. If Gunicorn is behind a reverse proxy, bind it to a private interface or localhost instead of leaving the all-interface example exposed without additional controls.
Run LibreTranslate with Docker
Docker packages the application and its runtime so host-level Python dependencies are less likely to interfere with the service. Use the LibreTranslate repository’s supplied run.sh or run.bat workflow rather than inventing a separate image layout. Pass the same operational options—host, port, model selection, limits, API-key mode, metrics, and cache—to the container according to the project’s current run instructions.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Rank #2
- Vilros Complete Starter Kit for Pi 4 Includes Raspberry Pi 4 Model B Board and all the accessories you need to get started.
- 9-PART KIT WILL HAVE YOU READY TO GET UP AND RUNNING: Kit Includes 1. Raspberry Pi 4 Model B Board 2. Case With Easy to connect Built-in fan 3. 64GB Micro SD card Preloaded with RP OS 4. Vilros Pi 4 Compatible Power Supply with Inline on/off switch (power supply color may vary white/black) 5. Micro HDMI to Standard HDMI cable (5ft) 6. Micro SD to USB adapter to reflash card if desired 7. Neoprene Storage Bag to store all parts when not in use 8. Set of 4 Heatsinks 9. Vilros QuickStart Guide instruction booklet for Pi 4
- PASSIVE & ACTIVE COOLING: The included case is well-vented and the kit also includes a set of heatsinks with thermal stickers for easy application and a pre-installed fan to keep the board cool in any use.
- CONVENIENT ACCESSORIES: The power supply features an inline on/off switch neoprene bag that holds and protects all the parts when not in use and the QuickStart guide is updated and written for Raspberry Pi 4.
- IMPORTANT: Kit does NOT include Keyboard, Mouse or Monitor
Make model storage persistent
Container filesystems can be replaced during an image update or recreation. Mount the model directory on persistent storage so a restart does not force unnecessary model downloads. The project’s Docker compose example uses a volume for models; preserve that pattern and verify the current compose file’s mount path before deploying it.
Update the image safely
For a Docker installation, the documented image update command is:
docker pull libretranslate/libretranslate
Pull the new image during a maintenance window, recreate the container with the same configuration and persistent model volume, then repeat the API and authentication checks before routing normal traffic to it.
Bind the service and add public HTTPS
Binding determines which network interfaces accept connections; it does not by itself provide encryption or authentication.
| Exposure choice | Advantages | Risks and required work |
|---|---|---|
| Localhost plus reverse proxy | LibreTranslate stays off the public interface; the proxy can terminate TLS and centralize access rules. | You must configure proxy forwarding, certificate renewal, client limits, and a health check. |
| Private interface | Useful for applications on the same private network without publishing the API. | Private does not mean trusted automatically; restrict source networks and still use API keys where appropriate. |
| Direct public bind | Fewer moving parts. | The translation process itself becomes an internet-facing service; TLS, firewall policy, authentication, rate controls, and patching are your responsibility. |
With a reverse proxy, terminate HTTPS at the proxy and forward traffic to LibreTranslate on its local listener. Do not expose port 5000 publicly just because the proxy can reach it locally. If you choose direct exposure, bind deliberately, allow only the required port in the firewall, install a valid certificate, and test that plaintext access is not an unintended alternate path.
Load only the language models you need
LibreTranslate installs support for all available languages by default. That is convenient for experimentation but can increase startup work, storage use, and the amount of model data your process must keep available. For a focused service, use --load-only with comma-separated language codes. The guide’s example is:
Rank #3
- Includes Raspberry Pi 4 Model B with 1.5GHz 64-bit quad-core CPU (2GB RAM)
- Pre-Loaded 32GB EVO+ Micro SD Card (Class 10), USB MicroSD Card Reader
- CanaKit Premium High-Gloss Raspberry Pi 4 Case with Fan Mount, CanaKit Low Noise Bearing System Fan
- CanaKit 3.5A USB-C Raspberry Pi 4 Power Supply with Noise Filter, Set of Heat Sinks, Display Cable - 6 foot (Supports up to 4K 60p)
- CanaKit USB-C PiSwitch (On/Off Power Switch for Raspberry Pi 4)
libretranslate --load-only en,es,fr
Replace those codes with the languages your application actually sends. Treat the list as a deployment contract: a client requesting a language outside it can fail even though the API itself is healthy.
Update models deliberately
Model files are separate from the application package. Request an update with --update-models, or run the project’s scripts/install_models.py. Schedule model changes as an intentional maintenance action:
- Record the language set currently loaded and keep the model storage backed up or reproducible.
- Run the update while the service is not receiving an unobserved production change.
- Restart or recreate the process if your chosen workflow requires it.
- Test every language pair your application depends on, not just the default English-to-Spanish example.
Do not combine an application upgrade and a model change blindly. Keeping those changes separate makes a failed translation easier to diagnose and roll back.
Protect a public API with keys and limits
The default request limit is No limit, and API-key storage is disabled by default. Those defaults are suitable for a private trial, not a public endpoint that anyone can discover and consume.
Require API keys
The installation guide’s hardening tip is to combine --req-limit 0 with --api-keys when you want API-key use to be mandatory. Follow that exact combination in the version you deploy and verify the behavior with both an unauthenticated request and a request carrying a valid key. Store keys as secrets, never in browser code or public repositories, and revoke or rotate them when a client is no longer trusted.
Set limits for your traffic pattern
- Request limit: controls how many requests a client may make in the configured period. API keys enable per-client rate limits when a request limit is configured.
- Character limit: caps the size of an individual translation payload so a single request cannot consume disproportionate resources.
- Batch limit: constrains how many items a batch request may contain.
- Origin and access rules: restrict browser callers and trusted application origins where your surrounding proxy or application policy supports it.
Choose values from observed application behavior. A mobile app that sends short phrases needs a different character and request policy from a document-processing worker. Start conservatively, watch rejected requests and resource use, and raise a limit only when a real client requirement justifies it.
Rank #4
- KEEP YOUR PROCESSOR COOL: The busier a processor gets the more it heats up, leading to sub-optimal performance. To prevent this common issue, this kit includes an aluminum alloy case with a pre-installed fan. The aluminum alloy actively draws the heat from the pi board, while the fan further cools the board and case. These cooling mechanisms will help push the limits of your processor and increase its flexibility.
- SIZABLE RAM: This Raspberry Pi 4 comes equipped with 4GB of RAM, which is the same amount of RAM or more RAM than many mainstream laptops contain. With 4GB of RAM, your processor will be capable of running retro gaming setups and common computer applications, media players, and much more!
- SIMPLE TO TURN ON & OFF: This kit includes a USB-C Raspberry Pi 4 compatible power supply with an easy-to-use on/off switch that was designed specifically for the Raspberry Pi 4 model to streamline processing.
- IMPROVEMENTS FROM PREVIOUS MODELS: This latest model of the Raspberry Pi 4 offers groundbreaking increases in processor speed, multimedia performance, connectivity, memory, and more! The desktop performance of this model is comparable to entry-level x86 PC systems.
- VERSATILE USE: The Raspberry Pi may have a small processor, but it is a highly adaptable little computer that can replace your desktop PC. Its functions range from practical to nostalgic since it can power an ad-blocking server as easily as it can power an outmoded gaming setup. Other uses include but are not limited to printing from non-wireless printers, playing media, making time-lapse videos, and building multiplayer network game servers and motion-capture security systems.
Do not mistake a key for complete security
API keys identify and throttle clients; they do not encrypt traffic. Use HTTPS for remote callers, protect the key-management path, restrict administrative access, and keep the service patched. A key leaked into frontend JavaScript should be treated as public and replaced.
Verify the API before connecting applications
Test locally first, while LibreTranslate is still bound to the VPS itself. The official quickstart request is:
curl -X POST http://localhost:5000/translate -d q="Hello" -d source=en -d target=es
The example response is:
{"translatedText":"Hola"}
This confirms that the process is listening and can translate the selected pair. It does not prove that your proxy, certificate, API-key policy, limits, or external DNS are correct.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Use a staged verification sequence
- Process check: run the curl request on the VPS and confirm the expected JSON response.
- Language check: test each source and target pair your application will use.
- Authentication check: repeat the request without a key and with a valid key after enabling API-key mode; confirm the policy you intended.
- Proxy check: call the protected hostname over HTTPS and verify that the proxy forwards the same
/translatepath. - Limit check: send payloads near your character and batch boundaries and confirm that oversized or excessive requests are rejected predictably.
- Client integration: only after those checks, configure application credentials and production traffic.
When testing from another machine, replace localhost with the protected hostname or private address appropriate to your topology. Do not use a public address as proof that direct port 5000 exposure is required; a reverse proxy can keep the backend private.
Operate, monitor, and update the service
Upgrade the application
For pip installations, update with:
pip install -U libretranslate
For Docker, pull the updated image with docker pull libretranslate/libretranslate, recreate the container with the same environment and persistent model volume, and rerun the verification sequence.
Enable metrics when you have monitoring
Metrics are disabled by default. Add --metrics to mount a /metrics endpoint for Prometheus-compatible collection. Keep that endpoint private or protected; metrics can reveal traffic patterns and operational details even though they are not translation content.
Best Value
- A RASPBERRY PI KIT FROM AN APPROVED RESELLER: Basic Starter Kit for Pi 4 Includes Raspberry Pi 4 Model B Board (4GB) with basic accessories to get started.
- INCLUDES BASIC VITAL ACCESSORIES TO GET STARTED: Eight parts Includes: 1. Raspberry Pi 4 Model B (4GB RAM) 2. ABS 2 Part Snap Assembly Case 3. Raspberry Pi 4 compatible 3A Power Supply with on/off switch 4. Cooling Fan (Preinstalled In case) 5. Standard.HDMI (Female) to Micro HDMI Male Adapter 6. Heatsinks (set of 4) 7.Neoprene Storage bag 8. Vilros Quickstart Guide for Raspberry Pi 4
- RASPBERRY PI 4 MODEL B SPECS: Dim: 85.6mm × 56.5mm–Processor: Broadcom BCM2711, quad-core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz--Memory: 4GB LPDDR4--Connectivity: 2.4 GHz and wireless LAN, Bluetooth, Gigabit Ethernet 2×USB 3.0 ports 2×USB 2.0 ports---GPIO: 40-pin GPIO header---Video & Sound: 2 × micro HDMI ports---Multimedia: H.265 H.264 OpenGL ES, 3.0 graphics SD card support: Micro SD card slot for OS & data---Input power: 5V DC via USB-C connector, 5V DC via GPIO header, POE(requires HAT)
- PASSIVE & ACTIVE COOLING: The kit includes a heatsink with thermal stickers for easy application and if that this not enough you can also connect the pre-installed fan to keep the board cool in any use
- CONVENIENT ACCESSORIES: The power supply features an inline on/off switch neoprene bag that holds and protects all the parts when not in use and the quick start guide is updated and written for Raspberry Pi 4
Watch the signals that matter
- Translation error responses by language pair.
- Request rejection counts caused by API-key, character, batch, or rate policies.
- Process restarts and model-loading failures.
- Disk growth from model files and logs.
- Memory pressure and signs of the leak-related behavior that production Gunicorn or Docker deployment is intended to reduce.
Keep model files on persistent storage in container deployments. Without that volume, a restart or replacement can trigger avoidable downloads and extend recovery time.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallTroubleshoot common VPS failures
“Connection refused” on localhost
- Confirm the LibreTranslate process is running.
- Check that the client is using port 5000 unless you deliberately changed
--port. - Check the bind address. A process bound to another interface or port will not answer a request to
127.0.0.1:5000. - Inspect startup output for model-download or model-loading errors before changing firewall rules.
Local requests work, but the hostname times out
- Verify that DNS points to the VPS.
- Check that the reverse proxy is running and forwarding to the actual LibreTranslate bind address and port.
- Confirm the firewall allows the proxy’s public HTTPS port while leaving the backend port private.
- Test the proxy path exactly as the client will use it; an incorrect prefix can send
/translatesomewhere else.
Unauthenticated requests still succeed
Review whether API-key mode was enabled and whether the documented combination of --req-limit 0 and --api-keys is present in the active process configuration. Restart or recreate the process after changing arguments, then test both credentialed and uncredentialed calls.
A language pair fails after narrowing models
Check that both language codes are included in --load-only and that the requested pair is supported by the installed Argos models. Add the required codes, update models deliberately if necessary, and retest after a controlled restart.
Restarts repeatedly download models
In Docker, inspect the model volume. If model files live only in the container’s writable layer, recreate operations can remove them. Mount persistent storage and use the same mount on every deployment.
The process becomes unstable under load
Move from a development-style invocation to the documented Gunicorn or Docker production direction, then review request, character, and batch limits. Because no universal VPS sizing or throughput figure is published, use your own traffic measurements to decide whether to reduce concurrency, load fewer models, or move to a larger host.
Recommended Free Tools
Pick a sensible first production configuration
For a single application on one VPS, a practical sequence is:
- Install with pip or Docker; choose Docker when host isolation and repeatable recreation matter more than a minimal package footprint.
- Keep LibreTranslate on
127.0.0.1:5000and place a TLS-terminating reverse proxy in front of it. - Load only the language codes the application needs.
- Enable API keys and use the documented
--req-limit 0combination when every request must be authenticated. - Set character and batch limits that match real payloads.
- Persist model files, enable
--metricsonly when you have secured monitoring, and test/translatelocally before opening the hostname to clients. - Document the exact command-line arguments, model list, image or package version, and rollback procedure.
If you do not want to maintain operating-system updates, certificates, backups, model storage, and monitoring, a managed translation service or managed VPS is operationally easier. Self-hosting is most valuable when control over data location, network policy, and deployment behavior outweighs that maintenance work.
What this setup can and cannot guarantee
Self-hosting gives you control over where requests and models run, but it does not automatically provide capacity, translation quality, or availability. The available material does not establish a universal supported-language count, VPS resource minimum, throughput benchmark, latency target, or operating cost. Validate those characteristics with the language pairs and request sizes your own application will send.
The reliable baseline is narrower and concrete: Python 3.8 or newer for pip installation, localhost address 127.0.0.1, port 5000, an unlimited request default unless you configure one, optional API-key enforcement, selective model loading with --load-only, deliberate model updates, and a repeatable POST test against /translate.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsQuick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




