# Installation on Windows

Install Zato under Windows 10, 11 or compatible server editions.

- A WSL2 installation is recommended because that will give you better integration with Visual Studio code, and it will also let you use the same provisioning scripts as in your Linux-based environments

**Docker Desktop**

- Download and install [Docker Desktop](https://www.docker.com/products/docker-desktop/) for Windows

- Start Docker Desktop, look up an image called **zatosource/zato-4.1** and pull it to your system

- Once the image is pulled, click "play" to start a new container and fill out the settings:
  - The container's name can be "zato"
  - Map port 8183 to 8183
  - Add a new environment variable called "Zato\_Password". Provide any value and it will become the password to your environment.

- Click "Run", wait for the container to start and log in to your Dashboard at [http://localhost:8183](http://localhost:8183)
  - Dashboard: [http://localhost:8183](https://localhost:8183)
  - Username: admin
  - Password: The one that you set above

- That concludes the process - the best way to continue is to visit the [tutorials](https://zato.io/tutorials/index.html) now.

**WSL2**

- Start an admin PowerShell session:

```powershell
powershell -Command "Start-Process powershell -Verb runAs"
```

- Update WSL2:

```powershell
PS c:\Users\myuser>wsl --update
Checking for updates.
Updating Windows Subsystem for Linux to version: 2.x.yy.
...
```

- Download Ubuntu 24.04 if you don't have it already

```powershell
PS C:\Windows\system32> wsl --install --web-download -d Ubuntu-24.04
Downloading: Ubuntu 24.04 LTS
...
```

- Tell WSL2 what the default Linux distribution should be:

```powershell
PS C:\Windows\system32> wsl --set-default Ubuntu-24.04
```

- Enter Ubuntu 24.04:

```powershell
PS C:\Windows\system32> wsl
Provisioning the new WSL instance Ubuntu-24.04
...
```

- Install Docker (inside WSL2):

```bash
sudo apt-get update && \
sudo apt-get upgrade -y && \
sudo apt-get install ca-certificates curl -y && \
sudo install -m 0755 -d /etc/apt/keyrings && \
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && \
sudo chmod a+r /etc/apt/keyrings/docker.asc && \
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && \
sudo apt-get update &&
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y &&
sudo usermod -aG docker $USER
```

- Log out of WSL and log in to it again

- Clone the GitHub repository with a [blueprint Zato project](https://github.com/zatosource/zato-project-blueprint)

```bash
cd ~ && git clone https://github.com/zatosource/zato-project-blueprint
```

- Start a new container with your Zato server (change "MyPassword" to your own):

```text
Zato_Password=MyPassword ~/zato-project-blueprint/myproject/impl/scripts/run-container.sh
```

- Wait for the container to start and log in to your Dashboard at [http://localhost:8183](http://localhost:8183)
  - Dashboard: [http://localhost:8183](https://localhost:8183)
  - Username: admin
  - Password: The one that you set above

- That concludes the process - the best way to continue is to visit the [tutorials](https://zato.io/tutorials/index.html) now.

## Learn more {#learn-more}

- [Production checklist](https://zato.io/docs/admin/production-checklist.html) - What to confirm before an environment takes real traffic
- [Audit log](https://zato.io/docs/admin/audit-log/) - Every request, response and error, and what you can do with them afterwards
- [Health checks](https://zato.io/docs/admin/health-checks.html) - Have Zato ping your outgoing connections instead of waiting for traffic to fail
- [Logging](https://zato.io/docs/admin/logging.html) - What is written where, and how to ship it to Splunk, Loki, Elastic or Datadog
- [GitOps with enmasse](https://zato.io/docs/admin/enmasse.html) - Keep the whole environment in git as YAML and import it anywhere
