Download and Install YaCy

Choose one installation method. After YaCy starts, open http://localhost:8090 in your browser.

YaCy runs on desktop and server systems, not on phones. If you are reading this on mobile, use this page to choose an installation method and continue on the computer or server where YaCy should run.

Choose an Installation Method

Packaged Downloads

Use a packaged download if you prefer an installer or archive instead of building from Git.

Windows Installer

YaCy requires Java. Install Java 17 or newer before installing YaCy. For example, download the Windows .msi installer for the Temurin JDK and run it.

After installing Java, open a new Command Prompt and check that Java is available:

java -version

Then install YaCy:

macOS App

YaCy requires Java. Install Java before starting YaCy. The easiest way to do this from Terminal is with Homebrew, a package manager for macOS.

First check whether Homebrew is already installed:

brew --version

If the command is not found, install Homebrew with its official installation command:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Follow the instructions shown in Terminal. Homebrew may ask you to run an additional command to add brew to your shell's PATH. Run that command, then open a new Terminal window and check again with brew --version.

Now install the Temurin Java Development Kit:

brew install --cask temurin

Check that Java is available:

java -version

Then install YaCy:

The macOS application stores its index in ~/Library/Application Support/net.yacy.YaCy/DATA/, not inside the application bundle.

Linux Package

tar xfz yacy<VERSION>.tar.gz
cd yacy<VERSION>
./startYACY.sh

Install from Git

This installs the latest YaCy code directly from the Git repository and is currently the preferred installation path.

This installation path is usually just a few commands:

Requirements

On Linux, install these with your package manager (apt, dnf, etc.). On macOS, install a recent JDK and ensure git and ant are available in your shell. On Windows, use a shell environment such as Git Bash (or WSL) with JDK 17+, Ant, and Git installed.

Common build and start commands

Run the following commands:

git clone --depth 1 https://github.com/yacy/yacy_search_server.git
cd yacy_search_server
ant clean all dist
./startYACY.sh

After starting YaCy, open http://localhost:8090.

Platform Notes

Linux

Example package install (Debian/Ubuntu):

sudo apt-get update
# Use the most recent JDK available in your distribution (minimum: JDK 17)
sudo apt-get install -y openjdk-17-jdk-headless ant git

macOS

Windows

Install with Docker

If you run YaCy with Docker, Java does not need to be installed on the host system.

If you do not have Docker installed, get it from https://docs.docker.com/get-docker/ (macOS, Windows, Linux) or read https://www.docker.com/blog/getting-started-with-docker-for-arm-on-linux/ for Raspberry Pi and other ARM devices.

The official YaCy images are hosted on Docker Hub at https://hub.docker.com/r/yacy/yacy_search_server

We provide amd64, arm64v8 and arm32v7 versions with the following tags:

To install YaCy in Intel/AMD64 environments, run:

docker run -d \
  --name yacy_search_server \
  -p 8090:8090 \
  -p 8443:8443 \
  -v yacy_search_server_data:/opt/yacy_search_server/DATA \
  --restart unless-stopped \
  --log-opt max-size=200m \
  --log-opt max-file=2 \
  yacy/yacy_search_server:latest

The default login for YaCy on Docker is admin:yacy

To upgrade YaCy, follow the default upgrade pattern for Docker images:

docker stop yacy_search_server
docker rm yacy_search_server
docker pull yacy/yacy_search_server:latest

Then restart the container with the same command that you used initially:

docker run -d \
  --name yacy_search_server \
  -p 8090:8090 \
  -p 8443:8443 \
  -v yacy_search_server_data:/opt/yacy_search_server/DATA \
  --restart unless-stopped \
  --log-opt max-size=200m \
  --log-opt max-file=2 \
  yacy/yacy_search_server:latest

This reuses the existing data volume with the upgraded YaCy instance.

Configuration with Environment Variables

All of the environment variables (see https://github.com/yacy/yacy_search_server/blob/master/defaults/yacy.init ) can be overwritten with the docker run command. The environment variables are named like those in the yacy.init files, with all . (dot) replaced with _ (underscore), all uppercase and prefixed with YACY_.

For example: the default peer name can be set with network.unit.agent in yacy.init. To pre-set this value during docker run time, set the environment variable YACY_NETWORK_UNIT_AGENT. The corresponding run command would be:

docker run -d \
  --name yacy_search_server \
  -p 8090:8090 \
  -p 8443:8443 \
  -e YACY_NETWORK_UNIT_AGENT=Choomba \
  -v yacy_search_server_data:/opt/yacy_search_server/DATA \
  --restart unless-stopped \
  --log-opt max-size=200m \
  --log-opt max-file=2 \
  yacy/yacy_search_server:latest

This can also be used when restarting a previously created container to overwrite stored configuration values.

Backup and restore the DATA folder

YaCy stores its data in the Docker volume yacy_search_server_data. To back up that DATA folder to /tmp/DATA.tar.xz, run:

docker stop yacy_search_server
docker run --rm -v yacy_search_server_data:/opt/yacy_search_server/DATA -v /tmp:/tmp openjdk:17-jre-slim bash -c "cd /opt/yacy_search_server && tar -cf - DATA | xz -q -3v -T0 > /tmp/DATA.tar.xz"
docker start yacy_search_server

To restore the DATA folder from /tmp/DATA.tar.xz, run:

docker stop yacy_search_server
docker run --rm -v yacy_search_server_data:/opt/yacy_search_server/DATA -v /tmp:/tmp openjdk:17-jre-slim bash -c "cd /opt/yacy_search_server && rm -rf DATA/* && tar xf /tmp/DATA.tar.xz"
docker start yacy_search_server

This restores the data volume contents for the YaCy instance.

For all installation variants: open http://localhost:8090 in your web browser after starting YaCy.

Post-Installation

After YaCy starts:

If you have problems, get help from the YaCy community:

Support YaCy

YaCy is free software. If YaCy is useful to you, please consider supporting ongoing development.

Support on Patreon Sponsor on GitHub