The simplest reliable VPS deployment is YaCy in Docker with its data directory on a persistent volume. Publish ports 8090 and 8443, keep /opt/yacy_search_server/DATA outside the container, change the default administrator password immediately, and put a public installation behind Nginx and TLS. A source build is better when you need to modify YaCy or control every dependency.
Antihost offers Linux VPS plans with full root access, unlimited traffic on a 1 Gbps port and a 14-day free trial.
YaCy is a distributed web search engine: it can crawl and index content locally, serve a private or public search portal, and exchange indexes with other YaCy peers. The project describes it as a search engine whose index can be exchanged through a built-in peer-to-peer protocol, so your VPS can be either a self-contained search host or a participant in a wider network.
As an Amazon Associate I earn from qualifying purchases.
Recommended Free Tools
What YaCy does on a VPS
YaCy combines a web crawler, an index, a search interface and peer-to-peer exchange in one application. You can point it at sites or documents you control, search the resulting local index, and decide whether the node remains private or communicates with other YaCy installations. That flexibility makes the deployment choice more important than simply getting the process to start.
A VPS gives YaCy a continuously running host with a public IP, administrator access and storage that can be expanded independently of your desktop. It does not, however, turn YaCy into a managed search service. You remain responsible for patching the operating system, protecting the administration interface, backing up the index and deciding what the crawler is allowed to fetch.
#1 Best Overall
YaCy’s official materials call it resource hungry when used for indexing and search. They do not publish a current universal minimum for CPU, RAM, disk or bandwidth. Treat capacity as a workload decision: a small private index and a broad crawl of changing sites are very different jobs, and the latter needs substantially more headroom.
Choose the operating model first
Private or public portal
| Decision | Private portal | Public portal |
|---|---|---|
| Network exposure | Bind access to localhost, a VPN or an allow-listed network. | Expose only the web entry point through a domain and HTTPS. |
| Administration | The admin pages can remain reachable from your trusted network. | Restrict administration separately from public search traffic. |
| Authentication | Local access does not require a password; remote access does. | Change the default account before allowing remote connections. |
| Domain and TLS | Not needed for a localhost-only service. | Use a domain, Nginx and Certbot for an HTTPS endpoint. |
| Crawl scope | Best for controlled collections and internal content. | Requires a deliberate crawl policy, monitoring and more resources. |
For a first installation, start privately. Verify crawling, search quality, storage growth and upgrades before opening the service to the Internet. A public search page should not imply that YaCy’s administration surface is public.
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 reinstallLocal indexing or peer-to-peer participation
| Mode | Index ownership | Network sharing | Privacy and discovery |
|---|---|---|---|
| Local-only indexing | Your VPS builds and serves its own index. | Do not configure the node to exchange index material with peers. | Maximum control over what enters the index and where queries go; discovery is limited to your crawl. |
| Peer-to-peer participation | Your node still stores its local index, while selected index information can be exchanged. | Uses YaCy’s built-in peer-to-peer network. | Potentially broader discovery, with additional network traffic and less isolation. |
Decide this before setting crawl and network policies. An internal company portal normally favors local operation; a node intended to contribute to a decentralized index needs an explicit sharing policy and enough bandwidth and storage for that role.
VPS prerequisites and port plan
- Administrator access: You need a VPS account with permission to install Docker or packages, create firewall rules and run a long-lived service. YaCy itself can run as a normal user; the application process does not require root.
- Supported CPU architecture: The official container page lists the amd64 image
yacy/yacy_search_server:latest, plus arm64v8 and arm32v7 tags. Select the tag that matches the VPS architecture rather than assuming every image is interchangeable. - Persistent storage: Reserve storage for the index, crawl data, logs and backups. The important path inside the container is
/opt/yacy_search_server/DATA. - Inbound ports: YaCy’s web interface uses port 8090 by default. The Docker deployment publishes 8090 and 8443. A public reverse-proxy setup normally exposes 80 and 443 at Nginx while keeping YaCy’s application port reachable only from the proxy.
- Public naming: A public service needs a domain whose DNS points to the VPS. The Unix deployment guide also lists Nginx, Certbot, Wget, OpenJDK 17 and a service manager such as systemd or runit.
- Backups: Back up the mounted DATA directory before upgrades and before changing crawl policies that could create a large or unwanted index.
There is no authoritative current “minimum VPS plan” in YaCy’s official documentation. Choose a plan based on crawl frequency, number of indexed documents, concurrent searches, retention period and whether peer-to-peer exchange is enabled; then watch resource usage and scale storage or memory when the workload demands it.
Install YaCy with Docker
Docker is the shortest repeatable path because Java is contained in the image instead of being installed on the VPS host. The official images are published on Docker Hub.
1. Confirm Docker and the VPS architecture
Install Docker using your VPS distribution’s supported method, then verify that the daemon is running and identify the machine architecture:
docker version
docker info --format '{{.Architecture}}'
Use the amd64 image on an x86-64 VPS. On an ARM host, select the corresponding arm64v8 or arm32v7 tag listed by the project instead of relying on latest if that tag does not match your architecture.
Rank #2
2. Create a named data volume
A named volume keeps YaCy’s index independent of the container lifecycle:
docker volume create yacy_data
The volume will be mounted at YaCy’s documented data path. A host bind mount is also possible, but a named volume is less likely to be accidentally deleted while replacing a container.
3. Start the container
docker run -d
--name yacy
--publish 8090:8090
--publish 8443:8443
--volume yacy_data:/opt/yacy_search_server/DATA
--restart unless-stopped
yacy/yacy_search_server:latest
Check that Docker created the container and inspect its startup output:
docker ps --filter name=yacy
docker logs --follow yacy
When startup completes, open http://localhost:8090 from the VPS itself, or temporarily use an SSH tunnel from your workstation. Do not make the administration interface Internet-wide merely to test the first login.
4. Change the default administrator password
The documented default remote account is admin with password yacy. Change it before permitting remote access. In the web interface, use the account configuration page identified by YaCy as /ConfigAccounts_p.html. For a headless workflow, the documented command is:
bin/passwd.sh <password>
Keep the new credential in your password manager. Local access behaves differently from remote access: a request originating on the YaCy host does not require a password, while remote access does.
5. Verify the persistent mount
Confirm the container is using the expected volume:
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Rank #3
docker inspect yacy --format '{{json .Mounts}}'
The result should show yacy_data mounted at /opt/yacy_search_server/DATA. If that mapping is absent, stop and correct the deployment before crawling; otherwise a later container replacement can appear to “erase” the index.
Install from source when you need more control
Choose a source build when you need to inspect or modify the code, integrate YaCy with an existing Java service layout, or avoid depending on a prebuilt container image. You will manage Java, the build tools, process supervision and upgrades yourself.
1. Install the required packages
The official Debian/Ubuntu example installs OpenJDK 17, Ant and Git:
sudo apt update
sudo apt install openjdk-17-jdk-headless ant git
YaCy requires JDK 17 or newer. Check the active runtime before building:
Free tools Windows power users keep installed
One-click scans. No signup required.
java -version
ant -version
git --version
2. Clone and build YaCy
Use the shallow clone and build sequence documented by the project:
git clone --depth 1 https://github.com/yacy/yacy_search_server.git
cd yacy_search_server
ant clean all dist
Run the application as an unprivileged account:
./startYACY.sh
After startup, open http://localhost:8090. For a permanent service, place the process under systemd or runit as described by the Unix deployment guidance, and ensure its data directory is included in your backup plan. Keep the source tree and the runtime data clearly separated so an upgrade does not overwrite the index.
Docker versus source at a glance
| Axis | Docker | Source build |
|---|---|---|
| Reproducibility | Container image, explicit ports, volume and restart policy can be recreated consistently. | Depends on the host JDK, Ant, Git, service definition and local filesystem layout. |
| Host dependencies | Docker is required; Java is supplied by the image. | JDK 17 or newer, Ant and Git are required on the host. |
| Data persistence | Mount a named or host volume at /opt/yacy_search_server/DATA. |
Back up the application’s DATA directory in the source deployment. |
| Upgrade procedure | Stop and replace the container while reusing the same volume. | Fetch or build the new source and manage process replacement yourself. |
| Observability | docker logs, container status and volume inspection provide a clear first check. |
Use the service manager, application logs and host process tools. |
| Rollback | Recreate the container with the previous image tag and the unchanged volume. | Restore the prior source build and service definition, subject to data compatibility. |
Expose YaCy safely over HTTPS
A public endpoint should terminate TLS at a reverse proxy rather than publishing the administration port directly. The official Unix guidance uses Nginx and Certbot, with a domain name pointing to the VPS.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errors1. Keep the application private behind the proxy
For a Docker deployment, publish the ports only as broadly as your topology requires. A safer layout is to allow Nginx on the host to reach YaCy while the VPS firewall exposes the public web ports. If you must publish 8090 or 8443 externally for a temporary test, restrict the source addresses and remove that rule afterward.
2. Create the Nginx proxy
Configure a server block for your domain that forwards requests to YaCy’s local HTTP listener:
server {
listen 80;
server_name search.example.net;
location / {
proxy_pass http://127.0.0.1:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Replace the example hostname with your own domain. Validate the Nginx configuration before reloading it. Keep the administration paths restricted with firewall rules, a private network or an additional proxy access policy; do not assume that a TLS certificate alone makes administrative pages safe to expose.
3. Obtain and renew the certificate
Use Certbot with the Nginx integration described in the Unix guide. After the certificate is installed, redirect HTTP to HTTPS and test renewal on the schedule provided by your distribution. The public URL should be the domain over HTTPS; the YaCy listener remains an internal hop.
4. Recheck authentication remotely
Open the HTTPS domain from a device that is not the VPS itself. Confirm that the search page loads, that remote administration asks for the changed password, and that a request to an unapproved administration path is blocked according to your policy. Test from both an allowed administrator network and an ordinary public network so an accidental firewall exception is visible.
Configure crawling, indexing and peer exchange
YaCy can crawl content, build a local index and answer searches from that index. Begin with a small, known set of sites or documents so you can observe index growth and search results. Expand the crawl only after confirming that the license, robots policy and ownership of each source permit your use.
- Set a bounded scope: Use explicit start points and avoid unintentionally crawling an entire domain when only a section is required.
- Watch storage growth: Index data, crawl queues and logs all consume disk. A full filesystem can stop indexing and destabilize unrelated VPS services.
- Control scheduling: Frequent recrawls increase CPU, bandwidth and remote requests. Match the schedule to how quickly the source content changes.
- Choose peer behavior deliberately: Local-only operation keeps the index and query flow under your control. Peer participation can broaden discovery but introduces additional network exchange and privacy considerations.
- Review results: A running crawler does not guarantee useful ranking. Check freshness, duplicate content, language handling and whether private material has entered a public index.
Because YaCy’s official sources do not provide a current performance benchmark or fixed capacity figure, measure your own workload. Record CPU, memory, disk and bandwidth during a representative crawl and during peak search activity before selecting a larger crawl scope.
Best Value
Back up and upgrade a Docker installation
The persistent volume is the key to keeping an index through container replacement. The documented upgrade pattern is stop, remove, pull the desired image and recreate the container with the same volume, ports and restart policy.
Before the upgrade
- Pause or record active crawl jobs if your operating procedure requires a quiet index.
- Back up the contents of
/opt/yacy_search_server/DATAfrom the named or host-mounted volume. - Record the current image reference, including its tag or digest, and save the exact
docker runoptions. - Check free disk space for the replacement image and the backup.
Replace the container
docker stop yacy
docker rm yacy
docker pull yacy/yacy_search_server:latest
docker run -d
--name yacy
--publish 8090:8090
--publish 8443:8443
--volume yacy_data:/opt/yacy_search_server/DATA
--restart unless-stopped
yacy/yacy_search_server:latest
Use a specific tested tag instead of latest when you need a controlled change window. The volume command is intentionally identical to the initial deployment. Creating a new volume name at this point would start YaCy with an empty DATA directory.
Verify and roll back
- Run
docker psand inspectdocker logs yacyfor startup errors. - Open the interface on port 8090 from the trusted test path.
- Confirm that the existing index, account settings and crawl configuration are present.
- Check the reverse proxy and HTTPS endpoint before restoring public traffic.
- If the new image fails, stop it and recreate the container with the previously recorded image tag while keeping the same volume. Restore the backup only if the data itself was damaged or an incompatible change requires it.
Troubleshoot the common failure modes
The browser cannot connect on port 8090
- Check
docker psor the source process to confirm YaCy is running. - Read the startup log for Java, permission or storage errors.
- Verify that the host port maps to container port 8090 and that the VPS firewall permits the intended source network.
- If access is local-only, use an SSH tunnel instead of opening the port publicly.
The index disappeared after an upgrade
Inspect the container mounts and compare the volume name with the pre-upgrade command. The usual cause is recreating the container without mounting /opt/yacy_search_server/DATA, or accidentally using a new empty volume. Stop the container, restore the original mount and recover from the DATA backup if necessary.
Remote login fails even though local access works
Local access does not require a password, while remote access does. Confirm that you changed the default admin/yacy credential and that you are entering the new password on the correct HTTPS host. If the password was lost, use the documented bin/passwd.sh <password> method from the YaCy installation context.
The VPS runs out of memory or disk
Reduce crawl scope or frequency, inspect index and log growth, and increase the VPS resources or storage. YaCy is documented as resource hungry, and no fixed minimum plan can predict the needs of your corpus. Do not treat a temporary reduction in load as proof that the original workload will fit permanently.
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 →HTTPS shows a proxy or certificate error
- Confirm DNS resolves to the VPS and that Nginx can reach YaCy on its local listener.
- Check the Nginx configuration and reload status.
- Verify that the certificate covers the exact hostname users enter.
- Ensure the firewall allows the public HTTPS port while keeping the backend port restricted.
The container will not start on an ARM VPS
Check the host architecture and use the corresponding arm64v8 or arm32v7 image tag listed by the official image documentation. An amd64-only assumption can produce an incompatible image or an emulation-dependent deployment with poor performance.
Quick Recap
Operate the service safely after installation
- Daily or per-deployment check: Confirm the container or service is running and that the search page returns results.
- After every restart: Review logs, verify the DATA mount and check that the index is visible.
- Weekly or on your chosen schedule: Test a backup by listing its contents and, periodically, restoring it to an isolated test instance.
- Before upgrades: Record the image or source version, back up DATA and confirm rollback capacity.
- For public nodes: Review firewall rules, certificate renewal, administrator access logs and crawl scope.
- When changing peer settings: Reassess privacy, bandwidth and whether shared index information is appropriate for the material being indexed.
A practical decision framework
Choose Docker if
- You want the fastest repeatable installation on an amd64 or supported ARM VPS.
- You prefer Java to be packaged with the application rather than maintained on the host.
- You want upgrades and rollback to be a container replacement while preserving one named volume.
Choose a source build if
- You need to modify YaCy or integrate the build with an existing Java operations model.
- You are comfortable maintaining JDK 17 or newer, Ant, Git and a service supervisor.
- You need direct control over the source tree and runtime layout.
Keep the service private if
- The index contains internal documents or the purpose is personal experimentation.
- You do not yet have a domain, TLS and a tested backup process.
- You want to measure resource use before accepting public search traffic.
Publish it when
- The domain resolves correctly and HTTPS is enforced.
- The default credentials have been replaced and administration is restricted.
- The VPS firewall exposes only the ports and source networks required by your design.
- A tested DATA backup and a documented image or source rollback exist.
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.




