Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →The reliable production setup is Stirling PDF’s official Docker image running under Docker Compose on a VPS, with /configs and /storage mounted to persistent disk and the web interface protected by an HTTPS reverse proxy. Start with at least 4 GB RAM for the standard image, keep login enabled, bind the application to localhost or a private Docker network, and pin a release tag when you move beyond a trial deployment.
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 the VPS deployment looks like
A self-hosted installation has four layers:
- VPS: a Linux server with persistent SSD storage, firewall controls, and a recovery or snapshot option.
- Docker Engine and Compose: the runtime that downloads and recreates the Stirling PDF container.
- Stirling PDF: the container listening on port 8080 inside the server.
- Reverse proxy: nginx (or an equivalent proxy) that owns the public IP, obtains and serves the TLS certificate, and forwards requests to Stirling PDF.
Only the reverse proxy should normally be reachable from the internet. Keep port 8080 private by binding it to 127.0.0.1 or by placing both services on an internal Docker network. If you add the optional AI engine, its port 5001 must remain private as well.
As an Amazon Associate I earn from qualifying purchases.
The official Docker documentation describes Docker as the recommended way to run a Stirling PDF server. The image is published for both amd64 and arm64, so either common VPS architecture can be used.
Choose the image and size the VPS
Image choice determines which conversion tools are bundled and how much memory headroom you need. The figures below are operational recommendations in the current Stirling PDF documentation, not independent benchmark results.
#1 Best Overall
- 12th Intel Alder Lake N95 Processor – The GMKtec G3 S Mini PC is powered by the 12th Gen Intel N95 processor with 4 cores, 4 threads, 6MB cache and a burst frequency up to 3.4GHz. Compared with N100/N5105/N5100/N5095, the N95 delivers up to 36% overall performance improvement. Perfect for routine tasks, office work, and home entertainment, this compact mini desktop is more convenient than traditional bulky PCs.
- 8GB RAM & 256GB SSD Storage – Pre-installed with 8GB DDR4 memory and a fast 256GB M.2 2242 SSD, the G3 S mini desktop offers quicker startup, smoother multitasking, and faster file transfers. Enjoy seamless performance whether you’re working on multiple applications, browsing, or streaming content.
- Rich Interfaces & Connectivity – The G3 S mini computer comes equipped with USB 3.2 (up to 10Gbps), dual HDMI 2.0 (4K@60Hz), and a 3.5mm audio jack. With support for WiFi 5, Bluetooth 5.0, and Gigabit Ethernet (RJ45 1000MbE), it connects easily with monitors, projectors, printers, office equipment, and other peripherals, making it versatile for both home and business use.
- Dual 4K Display Support – Featuring upgraded Intel UHD Graphics (up to 1000MHz), the G3 S supports 4K video playback and AV1 decoding for a smooth viewing experience. With dual HDMI outputs, you can connect two 4K@60Hz displays simultaneously, enabling efficient multitasking for work and entertainment.
- GMKTEC WARRANTY - GMKtec offers a 3-year limited warranty (1 year replacement + 2 years parts replacement) for each mini PC, starting from the date of the purchase effective on all sales starting Oct. 2026. All defects due to design and workmanship are covered. With a professional after sales team always ready to attend to your needs, you can simply relax and enjoy your mini PC
| Image tag | What it is for | Suggested memory | Important qualification |
|---|---|---|---|
latest |
Standard feature set for most installations | 4 GB | Use this as the normal starting point; real use varies with file size, concurrency, and enabled tools. |
latest-fat |
Standard service plus the bundled AI engine and additional tools | About 6 GB | More is needed when AI processing is enabled or several jobs run simultaneously. |
latest-ultra-lite |
Core PDF operations with fewer conversion dependencies | 2 GB | Choose it only when its reduced tool set covers your workflows. |
These memory figures are not a promise that every job will fit. Large scans, OCR, image-heavy documents, and concurrent conversions can consume substantially more memory. A VPS with swap can reduce abrupt process termination, but swap is not a substitute for adequate RAM: sustained conversion in swap is slow and can exhaust disk I/O.
VPS selection checklist
- Docker Engine and Docker Compose must be supported without restrictions.
- Select persistent SSD storage rather than ephemeral local storage.
- Confirm that snapshots or another backup mechanism can be restored to a replacement server.
- Use a provider firewall so only ports 80 and 443 are public; keep SSH restricted to your administration addresses where practical.
- Check IPv4 and IPv6 behavior, DNS integration, bandwidth policy, region, and the provider’s recovery process.
- Leave room to move from the standard image to the fat image or to add concurrent users without rebuilding the host.
The cost of this setup depends on the provider, region, storage, traffic allowance, and backup plan. Stirling PDF documentation does not establish a universal VPS price, so choose a plan by the resource and recovery requirements above rather than by a nominal monthly figure.
Recommended Free Tools
Prepare Docker and the host
Install a currently supported Docker Engine and the Docker Compose plugin using your Linux distribution’s documented method. Verify both before creating the application:
docker --version
docker compose version
Run administrative commands with your normal privileged account, and add your deployment user to Docker’s group only if that matches your host’s security policy. A user who can access the Docker socket effectively has root-equivalent control of the server; do not expose that socket to the public network.
Create a dedicated directory for the deployment and persistent data. Keeping the data beside the Compose file makes backups and restoration easier:
sudo mkdir -p /opt/stirling-pdf/data/{configs,storage,logs,customFiles,pipeline,tessdata}
sudo mkdir -p /opt/stirling-pdf
sudo chown -R 1000:1000 /opt/stirling-pdf/data
cd /opt/stirling-pdf
The container runs as UID and GID 1000 by default. If your host uses different ownership, either adjust the directory ownership or set matching PUID and PGID values in Compose. Test write access before importing important documents.
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 problemsCreate the Docker Compose project
Create /opt/stirling-pdf/docker-compose.yml with the standard image and persistent mounts:
services:
stirling-pdf:
image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest
container_name: stirling-pdf
restart: unless-stopped
ports:
- '127.0.0.1:8080:8080'
environment:
SECURITY_ENABLELOGIN: 'true'
PUID: '1000'
PGID: '1000'
volumes:
- ./data/configs:/configs
- ./data/storage:/storage
- ./data/logs:/logs
- ./data/customFiles:/customFiles
- ./data/pipeline:/pipeline
- ./data/tessdata:/usr/share/tessdata
mem_limit: 4g
The example uses latest so the first launch is straightforward. For a controlled production lifecycle, replace that tag with a specific Stirling PDF release tag after selecting the version you intend to operate. A pinned tag prevents an unplanned image change during a routine recreation.
Why each mount matters
/configs: settings, the built-in database, backups, and generated keys. This is the most important directory to preserve./storage: server-side file storage, which is enabled by default./logs: persistent application logs when you want them to survive container replacement./customFiles: branding assets and signature files./pipeline: watched and finished folders for pipeline-based processing./usr/share/tessdata: additional Tesseract OCR language data. Leave the mount out if the built-in languages are sufficient.
Do not store the only copy of a PDF in a container’s writable layer. Recreating or deleting the container can remove that layer; the mounted directories are the durable part of this design.
Rank #2
- [15W Ryzen 7 Agentic PC for Everyday Workflows] Powered by the AMD Ryzen 7 7730U processor (8 Cores, 16 Threads), the GEEKOM A5 is built for sustained productivity. It doubles as your cloud-native Agentic AI assistant, seamlessly hosting cloud AI tasks, automating office workflows, and handling intelligent document summarization without complex local deployment. Smoothly manage Microsoft Office, dozens of browser tabs, heavy Excel spreadsheets, and remote learning throughout your workday.
- [Smart Value Now, Expandable for Tomorrow] Equipped with 16GB RAM and a fast 256GB PCIe NVMe SSD for snappy daily performance, the A5 offers incredible value. Need more space later? It features dual-slot DDR4 RAM (upgradable to 64GB) and supports an M.2 SSD up to 4TB. With an extra M.2 2242 slot and 2.5" HDD bay for up to 10TB total storage, you get the flexibility to scale your storage seamlessly as your needs grow, beating soldered LPDDR solutions.
- [Multi-Display Connectivity for Maximum Productivity] Create a complete workstation with support for up to four displays through Dual HDMI and Dual USB-C ports, including up to 8K output via USB-C. Stay connected with Wi-Fi 6, Bluetooth 5.4, a 2.5GbE LAN port, SD card reader, and multiple USB ports for fast networking, efficient multitasking, and seamless connectivity across all your devices.
- [Built to Stay Cool, Quiet & Reliable] More than fast, the GEEKOM A5 is built to last. A reinforced one-piece all-metal internal frame enhances structural strength, while the upgraded IceBlast 3.0 cooling system improves cooling efficiency by up to 42% with up to 35% greater airflow for quieter operation. Backed by 339 reliability tests and a 72-hour full-load aging test, it's engineered for dependable long-term performance.
- 🏢[Business-Ready, Compact & Efficient] Pre-installed OS, the GEEKOM A5 supports Wake-on-LAN, Scheduled Power On, and Group Policy, making deployment and remote management simple for businesses. Its ultra-compact 0.6L design fits neatly behind monitors or into space-limited workstations while delivering excellent power efficiency for home offices, front desks, and commercial environments.
Start and verify the service
- From
/opt/stirling-pdf, pull the selected image:docker compose pull - Create the container in the background:
docker compose up -d - Check its state:
docker compose ps - Follow startup logs if the state is not
running:docker compose logs -f stirling-pdf - On the VPS itself, test the private listener:
curl -I http://127.0.0.1:8080
Open the service only after the local check succeeds. Complete the first sign-in immediately, replace the initial administrator password, and leave SECURITY_ENABLELOGIN=true enabled for a public VPS.
Put Stirling PDF behind nginx and HTTPS
Point a DNS name at the VPS, then configure nginx to terminate TLS and proxy to the private listener. Obtain a certificate through your normal certificate-management process; the proxy configuration below assumes certificate files already exist.
HTTP redirect
server {
listen 80;
listen [::]:80;
server_name pdf.example.com;
return 301 https://$host$request_uri;
}
HTTPS proxy
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name pdf.example.com;
ssl_certificate /etc/letsencrypt/live/pdf.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pdf.example.com/privkey.pem;
client_max_body_size 2000M;
proxy_buffering off;
proxy_read_timeout 1800s;
proxy_send_timeout 1800s;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
The 2,000 MB upload limit and 1,800-second proxy timeouts are the values shown in Stirling PDF’s production nginx example. Treat them as starting values: lower them to match your organization’s upload policy, or increase them only when legitimate conversions need more time. A timeout that is too short interrupts long OCR or conversion jobs even though the container is still working.
Validate and reload nginx before testing from an external network:
sudo nginx -t
sudo systemctl reload nginx
Use the public HTTPS hostname for the first login. Confirm that a large permitted upload, a long-running conversion, and a download all complete without a 413 (request too large) or 504 (proxy timeout) response.
Sub-path deployment
If the service must live at a path such as https://example.com/pdf/ rather than at its own hostname, set SYSTEM_ROOTURIPATH=/pdf. Set the application’s system.frontendUrl to the complete public URL, including the path. That value controls links in email, share links, and QR codes; omitting the path produces links that point to the wrong location. Your proxy must preserve the same prefix when forwarding requests.
Stirling PDF can terminate TLS itself with a PKCS12 keystore, but the documentation notes that a reverse proxy is usually simpler for production. A proxy also centralizes certificate renewal, upload limits, access logging, and firewall exposure.
Keep authentication and the optional AI engine private
A public PDF server is an account-management problem as much as a container problem. Create or secure the first administrator during initial setup, use a unique long password, and do not disable the login build to make anonymous access convenient. The production checklist specifically says to keep SECURITY_ENABLELOGIN at its default value of true.
AI engine rules
The fat image includes the bundled AI engine and extra tools, and an AI engine may also be operated as a separate service. In either arrangement, do not publish port 5001 and do not route it through the public reverse proxy. Keep that port on a private Docker network or bound only to localhost.
Rank #3
- 【AMD Ryzen 3 5300U CPU: Outperforms N150 & 3500U】 BOSGAME E5 mini PC is powered by the TSMC 7nm FinFET architecture AMD Ryzen 3 5300U processor (4 Cores, 8 Threads, up to 3.8GHz boost, 6MB total cache). Compared to low-end Intel N150 or 3500U chips which only have 4 single threads and throttle under load, the 5300U delivers over 30% faster multi-core speed. Run 30+ browser tabs, large Excel sheets, and Zoom meetings simultaneously without system lag.
- 【8GB DDR4 RAM & 256GB NVMe SSD Storage】 Installed with high-speed 8GB DDR4 dual-channel memory and a fast 256GB M.2 2280 SSD, eliminating slow boot times and application loading delays. To accommodate growing data requirements, the upgradeable hardware design features dual SODIMM slots that allow you to expand memory up to 64GB RAM, ensuring smooth operation during heavy multitasking.
- 【High-Capacity Dual M.2 SSD Storage Expansion】 Never worry about running out of space for your business files. In addition to the pre-installed 256GB system drive, the motherboard houses an extra empty internal M.2 2280 NVMe PCIe 3.0 slot. This allows you to easily add a second solid-state drive for up to an additional 2TB of storage capacity (upgrades not included) without needing to remove or reinstall the original operating system.
- 【Radeon 6-Core Graphics & Triple 4K Displays】 Integrated with official AMD Radeon Graphics (6 Graphics Cores, 1500 MHz frequency) for casual gaming, photo editing, and crisp 4K media decoding. Featuring 1x HDMI 2.0 port, 1x DisplayPort, and 1x Full-Function Type-C port, the E5 outputs true 4K@60Hz resolution to three monitors at once. This multi-screen setup eliminates constant window-switching for traders, programmers, and office workers.
- 【Dual 2.5GbE LAN Ports for Advanced Networking】 Experience fast wired network transmission speeds up to 2500Mbps without lagging or buffering. The integration of dual 2.5 Gigabit Ethernet ports (powered by Realtek RTL8125 controller) makes this compact computer an exceptional hardware choice for tech enthusiasts. Easily configure it into software routers, hardware firewalls (pfSense, OpnSense), home NAS servers, or local homelabs.
Set a long random STIRLING_ENGINE_SHARED_SECRET on both the Stirling PDF service and the engine. On the engine, enable STIRLING_ENGINE_REQUIRE_AUTH=true. A shared secret protects service-to-service calls; it does not replace the user login on the web interface.
Back up data before upgrades
Back up /configs before every major upgrade. Because the other mounted directories can contain user files, custom assets, pipeline state, and logs, include them in the backup set when they matter to your workflow.
A simple quiesced backup sequence is:
- Pause new work and wait for active jobs to finish.
- Stop the application:
docker compose stop stirling-pdf - Archive the persistent data directory to storage outside the VPS, or copy it to a snapshot-backed location:
sudo tar -czf /root/stirling-pdf-data-$(date +%F).tar.gz -C /opt/stirling-pdf data - Record the image tag and Compose file used for the deployment.
- Start the service again if you are not upgrading immediately:
docker compose start stirling-pdf
Before a planned upgrade, pull the intended tag and recreate the container:
docker compose pull
docker compose up -d
With persistent mounts, the new container reads the existing configuration and storage. If startup fails, inspect docker compose logs stirling-pdf, verify ownership on the mounted directories, and roll back to the previously recorded image tag. Restore the backup only when a configuration migration or data corruption requires it; do not overwrite working data merely because a container restart was needed.
Plan a recoverable operating routine
A working backup is more than a tar file. Keep at least one copy outside the VPS, record which image tag created it, and periodically verify that the archive can be opened and that expected files exist. A provider snapshot is useful for replacing a failed host, but it should complement an application-level copy of /configs and user storage rather than replace it.
For a major version change, schedule a maintenance window, stop new uploads, let active conversions finish, and stop the container before copying data. Test the new image with the same Compose file and mounts. If the image does not start, the fastest rollback is usually to restore the previous image tag and bring the service up again; changing tags is less destructive than deleting persistent data. Keep the old tag, Compose file, and backup together so another administrator can reproduce the rollback.
Monitor resources and network exposure
Check memory and disk usage after launch, not just during installation. OCR and image-heavy conversions can create temporary files and use more RAM than a simple text merge. Leave free SSD space for uploads, generated output, logs, and Docker image layers. If the host repeatedly reaches its memory limit, reduce concurrency, move to a larger plan, or choose an image whose tool set fits the workload; relying on swap for every conversion will make the service sluggish.
Free tools Windows power users keep installed
One-click scans. No signup required.
Review the VPS firewall and Docker port mappings after every Compose change. The intended public surface is normally nginx on ports 80 and 443. A line such as 0.0.0.0:8080:8080 or 0.0.0.0:5001:5001 defeats the private-network design, even if nginx itself is configured securely.
Compare VPS providers for this workload
Price alone is a poor comparison. Check whether Docker and Compose are unrestricted, whether the plan offers at least 4 GB RAM for the standard image, and whether SSD capacity can hold both persistent files and temporary conversion data. For the fat image, approximately 6 GB is the documented starting point; ultra-lite can start around 2 GB when its reduced dependencies are acceptable.
Rank #4
- This Certified Refurbished product is tested and certified to look and work like new. The refurbishing process includes functionality testing, basic cleaning, inspection, and repackaging. The product ships with all relevant accessories, a minimum 90-day warranty, and may arrive in a generic box. Only select sellers who maintain a high-performance bar may offer Certified Refurbished products on Amazon.com.
- Dell OptiPlex 7050 Micro Computer, Intel Quad Core i5-6500T up to 3.1GHz, 16G DDR4, 256G SSD.
- Includes: USB Keyboard & Mouse, Microsoft office 30 days free trail.
- Ports: 1 x RJ-45, 1 x HDMI, 1 x DP, 6 x USB 3.0.
- 4K Support: Support 4K (3840x2160) Dual display, makes it easy to connect two monitors at the same time, and you can expand working Windows, mirror content, or expand a single window across multiple monitors.
Also compare snapshot and backup restoration, IPv4 and IPv6 support, firewall controls, DNS and TLS integration, bandwidth policy, server region, and the provider’s process for recovering a failed instance. A slightly more expensive plan with dependable snapshots and an easy replacement workflow can reduce downtime. There is no universal Stirling PDF hosting price because traffic, storage, region, and backup requirements differ.
Troubleshoot the failures that matter most
| Symptom | Likely cause | Action |
|---|---|---|
| Container exits or is repeatedly restarted | Insufficient memory, an invalid environment value, or a permission error on a mount | Read docker compose logs stirling-pdf, check host memory, and verify that the container’s UID/GID can write to every mounted directory. |
| Settings disappear after recreation | /configs was not mounted, or the host path was changed |
Stop the service, correct the Compose volume, and restore the last known-good configuration backup if necessary. |
| Uploaded files are missing | /storage is not persistent or the application is writing to a different path |
Confirm the /storage mount and inspect the host directory while a test upload is present. |
| Browser shows 413 | nginx’s upload limit is lower than the document | Raise client_max_body_size only within your policy, then reload nginx. |
| Browser shows 504 during conversion | Proxy timeout is shorter than the job | Increase proxy_read_timeout and proxy_send_timeout deliberately, and check whether the VPS needs more RAM. |
Links omit /pdf |
Sub-path variables are incomplete | Set SYSTEM_ROOTURIPATH=/pdf and the complete public system.frontendUrl. |
| AI requests fail or the engine is exposed | Port 5001 is publicly published, or the shared secret differs | Remove the public port mapping, keep the engine on a private network, and set the same long secret on both services with engine authentication required. |
Operational checklist
- Use a 4 GB VPS for the standard image, about 6 GB for the fat image, or 2 GB for ultra-lite, then add headroom for workload.
- Bind Stirling PDF to localhost or an internal network; expose nginx, not port 8080.
- Mount
/configsand/storage; add the other mounts required by your workflows. - Keep
SECURITY_ENABLELOGIN=trueand replace the initial administrator password. - Use HTTPS, the documented forwarded headers, an upload limit, and long enough processing timeouts.
- Keep AI port 5001 private and require the shared secret when AI is enabled.
- Pin an image tag for production and record it with each backup.
- Back up
/configsbefore major upgrades and test that the backup can be read.
Frequently Asked Questions
How much RAM does Stirling PDF need on a VPS?
The current Docker guidance suggests 4 GB for latest, about 6 GB for latest-fat, and 2 GB for latest-ultra-lite. These are starting recommendations, not guarantees. OCR, large scans, image-heavy files, AI processing, and concurrent jobs require additional headroom.
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 →Should I use the latest tag in production?
Use latest for an initial trial if convenient, but pin a specific release tag for production. A pinned tag prevents an unplanned image change during a routine restart or recreation. Record the tag with each backup so rollback is straightforward.
Which Stirling PDF directories must be persistent?
Mount /configs and /storage at minimum. The configuration directory contains settings, the built-in database, backups, and generated keys; storage is enabled for server-side files. Add /customFiles, /pipeline, /logs, and /usr/share/tessdata when your branding, pipeline, logging, or OCR workflows need them.
Can I expose port 8080 directly to the internet?
It is safer to bind port 8080 to 127.0.0.1 or an internal Docker network and expose only nginx on ports 80 and 443. This keeps TLS, upload limits, forwarded headers, and firewall policy at the public edge.
What nginx settings prevent failed large uploads and long conversions?
The production example uses client_max_body_size 2000M, buffering disabled, and 1,800-second read and send timeouts. Treat those as starting values and adjust them to your document policy and workload. A low upload limit causes 413 errors; a short timeout can cause 504 errors while Stirling is still processing.
How do I run Stirling PDF under a URL path such as /pdf/?
Set SYSTEM_ROOTURIPATH=/pdf and configure system.frontendUrl with the complete public URL, including /pdf. Preserve the same prefix in the reverse proxy so email links, share links, and QR codes point to the correct location.
Is the optional AI engine safe to publish on port 5001?
No. Do not publish port 5001 or route it through the public reverse proxy. Keep it on a private Docker network or localhost, set the same long random STIRLING_ENGINE_SHARED_SECRET on both services, and enable STIRLING_ENGINE_REQUIRE_AUTH=true on the engine.
What should I back up before upgrading?
Always back up /configs before a major upgrade. Include storage, custom files, pipeline data, and logs when they matter to your operation. Stop new work, let active jobs finish, stop the container, archive the persistent directories outside the VPS, and record the image tag and Compose file.
Does Stirling PDF itself determine my VPS cost?
No universal price is established. Your cost depends on RAM tier, SSD capacity, traffic, region, backups or snapshots, and provider policies. Compare recovery options and persistent storage as carefully as the monthly rate.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteThe Bottom Line
For a dependable VPS installation, run the official Stirling PDF image with Docker Compose, persist /configs and /storage, size RAM for the selected image and workload, and put nginx HTTPS in front of a private port 8080. Keep login enabled, isolate AI port 5001, pin production image tags, and maintain tested backups before upgrades.
Quick 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.




