Deploy YaCy

Search engine that crawls and indexes the sites you choose

Deploy YaCy

Just deployed

/opt/yacy_search_server/DATA

Deploy and Host YaCy on Railway

Self-host YaCy to run a search engine you own end to end. YaCy is a free, GPL-licensed search engine in Java that does the whole job itself: it crawls the sites you point it at, parses what it finds — HTML, PDF, Office documents, RSS — indexes the text into an embedded Apache Solr, and serves a search interface with ranking, faceting and snippets over it. There is no third-party search API, no key to rotate and no per-query bill.

Deploy YaCy on Railway and this template gives you a single yacy service holding the web interface, the crawler and the Solr index, with a persistent volume at /opt/yacy_search_server/DATA for the index, crawl queues and configuration. The public domain routes to YaCy's own port, while the health check watches a separate endpoint that queries Solr directly, so a container that runs but cannot answer queries is reported unhealthy.

The YaCy service and its data volume on Railway

Getting Started with YaCy on Railway

Set YACY_ADMIN_PASSWORD when you deploy — at least 8 characters — then open the generated Railway URL. YaCy uses HTTP Digest authentication, so the browser shows a native login dialog: sign in as admin with the password you chose; there are no default credentials to change afterwards. The first useful action is a crawl: open Production → Crawler, paste a site URL and press Start New Crawl. The crawler monitor shows live queue depth, pages per minute, index size and a link-structure graph — the quickest way to confirm the deployment works. Once a few dozen pages are indexed, use the search box, or /yacysearch.html?query=your+terms, for ranked results with domain, author, filetype and language facets. Monitoring → Index Browser lists which paths were stored.

By default the whole portal, search included, sits behind that admin login. Set YACY_PUBLIC_SEARCH=true to publish the search pages to anonymous visitors while the administration pages stay protected.

YaCy search results with domain, filetype and language facets YaCy crawler monitor showing a running crawl and index size YaCy index browser listing indexed paths of a crawled host

About Hosting YaCy

Developed since 2003, YaCy is one of the few open-source projects shipping a complete search stack rather than one layer of it. Self-host it when you want search over content you choose, with no query quotas and no data leaving your infrastructure.

Key features:

  • A polite crawler with robots.txt obedience, per-host delays, depth limits and scheduling
  • Parsers for HTML, PDF, Office formats, archives and RSS, so a PDF becomes full text
  • An embedded Apache Solr index with faceting, ranking profiles and a JSON/XML search API
  • A search portal UI, plus OpenSearch and RSS output
  • Blacklists, crawl profiles, an index browser and a re-crawl scheduler
  • An optional peer-to-peer mode joining YaCy's public network

This template runs YaCy as a standalone portal: one service, one volume, no peer-to-peer exchange, which keeps the index yours and its size predictable. Jetty, the crawler, the parsers and Solr all live in one container.

Why Deploy YaCy on Railway

Railway removes the operational work around a Java search server.

  • One-click deploy with the volume, ports and health check wired
  • Persistent storage for the Solr index
  • Automatic HTTPS on a generated domain, or bring your own
  • Heap and thread pools sized from the container's limits, not the host's
  • Vertical scaling from the dashboard as your index grows
  • Logs, metrics and rollbacks without extra tooling

Common Use Cases

  • Documentation and intranet search — crawl internal or vendor sites and give staff one search box
  • A searchable PDF archive — full-text search over reports and papers
  • Niche public search portals — a curated index of a topic or community
  • Research and monitoring — scheduled re-crawls of sites you track, with an API for what changed

Dependencies for YaCy

  • yacy — the only service. Built from gridalpha/yacy-railway, a thin layer over the official yacy/yacy_search_server:latest image that renders YaCy's configuration at boot, sizes the JVM from the container's limits and adds the health endpoint.
  • A persistent volume at /opt/yacy_search_server/DATA — index, crawl queues, configuration and HTTP cache. Without it, every redeploy starts empty.

No database, cache or object storage is required: Solr is embedded and stores everything on that volume.

Environment Variables Reference

VariableDefaultPurpose
YACY_ADMIN_PASSWORDRequired. Administrator password, minimum 8 characters
YACY_ADMIN_USERadminAdministrator login name
YACY_PUBLIC_SEARCHfalsetrue publishes the search pages to anonymous visitors
YACY_ADMIN_REALMYaCy-AdminUIHTTP Digest realm in the login dialog
YACY_HTTP_PORT8090Port YaCy serves on; the public domain targets it
YACY_NETWORK_UNITdefaults/yacy.network.webportal.unitFirst boot only. Set defaults/yacy.network.freeworld.unit to join YaCy's peer-to-peer network instead

Deployment Dependencies

Hardware Requirements for Self-Hosting YaCy

ResourceMinimumRecommended
CPU1 vCPU2–4 vCPU while crawling
RAM1 GB4 GB or more for indexes past a few hundred thousand documents
Storage5 GB volume20 GB+; ~1 GB per 100k pages, plus the cache
RuntimeJava 17+Java 24, as shipped in the image

Crawling is the demanding phase; serving queries is cheap. The heap is derived from the container's memory limit, so raising the service's memory raises the JVM heap on the next deploy.

Self-Hosting YaCy with Docker

The official image runs YaCy in one command, given a volume so the index survives a restart:

docker run -d --name yacy -p 8090:8090 \
  -v yacy_data:/opt/yacy_search_server/DATA \
  yacy/yacy_search_server:latest

Then open http://localhost:8090 and sign in with the image's default credentials, admin / yacy, which you should change immediately under Administration → Use Case & Account. The Railway template removes that step: it computes the credential from YACY_ADMIN_PASSWORD before the server starts, so no default password is ever live.

To build from source instead, YaCy uses Apache Ant and a JDK:

git clone https://github.com/yacy/yacy_search_server.git
cd yacy_search_server
ant compile
./startYACY.sh -f

Configuration lives in DATA/SETTINGS/yacy.conf, which the server rewrites while running — edit it with the server stopped, or use the web interface.

Is YaCy Free?

YaCy is free and open source under the GPL — no paid tier, licence key or hosted plan, and every feature is in the same build. On Railway you pay only for infrastructure: one service plus the volume holding the index. The cost grows with how much you index and how hard you crawl.

YaCy vs Other Self-Hosted Search

YaCySearXNGElasticsearch / Meilisearch
Builds its own indexYes, built-in crawlerNo, queries other enginesYes, you supply documents
Works if upstream engines block youYesNoYes
Ships a search UIYesYesUsually not
Needs a crawler of your ownNoN/AYes

SearXNG fits when you want private, aggregated results from existing engines. Pick YaCy when you need an index of your own.

FAQ

What is YaCy? An open-source search engine combining a web crawler, document parsers, an Apache Solr index and a search interface in one Java application.

What does this Railway template deploy? A single yacy service built from the official image, with a persistent volume for the Solr index, a public HTTPS domain, an administrator credential generated from your password, and a health check that queries the index.

Why does this template need a volume? The index, crawl queues and configuration are files on disk, and containers are replaced on every deploy — without a volume each redeploy would start empty.

How do I make my self-hosted YaCy search page public? Set YACY_PUBLIC_SEARCH=true and redeploy. Anonymous visitors can then search, while the administration pages stay behind the login.

Can I join the YaCy peer-to-peer network from this deployment? Yes. Set YACY_NETWORK_UNIT=defaults/yacy.network.freeworld.unit before the first boot and the peer joins the public network rather than running standalone. It applies on first boot only, and a peer-to-peer index grows on its own, so give it a larger volume.

How do I query my index from another application? /yacysearch.json?query=terms returns JSON, /yacysearch.rss returns RSS, and /solr/select takes standard Solr queries. Requests use the same authentication as the interface, so send the admin credential unless the search pages are published.


Template Content

More templates in this category

View Template
Rocky Linux
Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
47
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51