You decide which services we may enable for analytics, personalization, and external content.
We use cookies and similar technologies on our website to personalize content, embed external media, and better understand how individual areas are used.
Necessary cookies
These entries support essential functions such as security, stability, and form processing.
Optional sections
AnalyticsMarketingPersonalizationExternal media
Your data may be processed with your consent or on the basis of legitimate interests. In the cookie settings, you can reject or explicitly allow each optional category.
Some services process personal data in third countries. By consenting, you also agree to this transfer. You can find more information in our Privacy Policy.
You can reopen and change your selection at any time. · 1.0.2
Set up Supabase on a Windows Server: install WSL2 with Ubuntu, configure Docker, start Supabase, and make it accessible externally → Learn more now
10 November 20266 min read3 Views0 helpful
Introduction
Supabase is an open-source Postgres development platform that provides a full Postgres database plus authentication, instant APIs, realtime, and storage—an open-source alternative to Firebase.
Supabase consists of several Linux containers. These containers cannot run directly on a Windows Server. Instead, they run in a Linux system that you set up with the Windows Subsystem for Linux (WSL2). In this guide, we’ll show you how to install WSL2 with Ubuntu, set up Docker in it, and start Supabase.
Tip
An easier option: use a Linux VPS
On a Linux VPS (Debian or Ubuntu), you can install Supabase in just a few clicks using One-Click Apps in the VPS web interface, or manually by following our guide Set Up Supabase on a Linux Server. This is the option we recommend: on Windows, WSL2 also runs as its own virtual machine inside your VPS, using memory and CPU resources and requiring more maintenance. One-Click Apps are not available on Windows VPSs.
Requirements
Before installing Supabase, make sure your hosting environment meets the following requirements. Windows and the WSL2 environment also need their own resources in addition to those used by Supabase.
Hardware
Minimum
ZAP-Hosting recommendation
CPU
2 vCPU cores
4 vCPU cores
RAM
8 GB
16 GB
Disk space
60 GB
80 GB
Operating system: Windows Server 2022 or Windows Server 2025
Dependencies:WSL2 with Ubuntu 24.04, with Git and Docker (Engine and Compose) installed in Ubuntu
Warning
No Docker Desktop or Windows containers
Docker Desktop is not supported by Docker on Windows Server. The Docker Engine from our guide Set Up Docker on a Windows Server only runs Windows containers, so it is not suitable for Supabase. Install Docker inside Ubuntu in WSL2 as described below.
FAQ
Frequently asked questions
Supabase runs in Linux containers. On Windows Server 2022 or 2025, first install WSL2 with Ubuntu, set up Docker Engine and Docker Compose in Ubuntu, then start Supabase with docker compose. One-Click Apps are only available on Linux VPSs.
Supabase is an open-source Postgres development platform that provides a full Postgres database plus authentication, instant APIs, realtime, and storage—an open-source alternative to Firebase.
Because Windows and the WSL2 environment need additional resources, plan for at least 2 vCPU cores, 8 GB of RAM, and 60 GB of disk space. ZAP-Hosting recommends 4 vCPU cores, 16 GB of RAM, and 80 GB of disk space.
No. Docker Desktop is not supported on Windows Server, and the Docker Engine for Windows only runs Windows containers. Install Docker inside Ubuntu in WSL2 instead.
Yes. On a Linux VPS running Debian or Ubuntu, you can install Supabase in just a few clicks using One-Click Apps in the VPS web interface. This is the option we recommend.
Feedback
Was this article helpful?
Your feedback helps us prioritize and improve content.
0 of 0 Users found this article helpful.
Personal support
Need more help than the guide provides?
Our ZAP support team knows your product — briefly describe your issue and we'll help you personally.
Navigation
Software
Preparation
Install WSL2 and Ubuntu
Connect to your server as an administrator using Remote Desktop (RDP). Open PowerShell as an administrator and install WSL2 with Ubuntu 24.04:
Code
wsl --install -d Ubuntu-24.04
Then restart the server. After it restarts, open PowerShell again and start Ubuntu once with wsl -d Ubuntu-24.04. On the first launch, create a Linux username and password.
Info
The message Nested virtualization is not supported on this machine may appear on startup. It only affects virtual machines inside WSL and does not affect Supabase.
Use wsl -l -v to check that Ubuntu is running and using version 2.
Update the system
Run all the following commands in the Ubuntu console (wsl -d Ubuntu-24.04). First, update the packages and install Git:
Exit the Ubuntu console with exit, run wsl --shutdown in PowerShell, and then reopen Ubuntu so the group membership takes effect. Check the installation with docker version and docker compose version.
For a detailed guide to using Docker on Linux, see our Docker guide.
Installation
Once all the requirements are met, you can install Supabase. In the Ubuntu console, clone the Supabase repository, create a project directory, and copy the Docker files and example environment file into it:
Switch to the project directory, pull the latest container images, and start the stack in the background:
Code
cd supabase-project
docker compose pull
docker compose up -d
You can now access Supabase Studio in a browser on the server itself at http://localhost:8000. You’ll be prompted for a username and password. The default credentials are:
Default credentials
Your app is now running with the default credentials. Change them as described in the Configuration section before making Supabase accessible externally.
Make Supabase accessible externally
WSL2 has its own internal network. To access Supabase Studio and the API using your server’s IP address, forward the port from Windows to WSL. First, find Ubuntu’s internal IP address in PowerShell:
Code
wsl -d Ubuntu-24.04 hostname -I
Then configure port forwarding and a firewall rule. Replace [WSL-IP] with the first address shown:
You can now access Supabase Studio at http://[your-ip]:8000.
Info
WSL’s internal IP address may change after a restart. Check it again and update the forwarding rule with netsh interface portproxy set v4tov4 listenport=8000 listenaddress=0.0.0.0 connectport=8000 connectaddress=[WSL-IP].
Keep Supabase running continuously
WSL shuts down Ubuntu as soon as no window or command is accessing it. To keep Supabase running, create the file C:\Users\<Benutzername>\.wslconfig in Windows with the following contents:
Then run wsl --shutdown in PowerShell and restart Ubuntu. The Supabase containers will start automatically as soon as Docker is running in Ubuntu.
To make sure Supabase starts again after a server restart, create a task in Task Scheduler that runs at system startup under your administrator account (select Run whether user is logged on or not). Set wsl.exe as the action, with the arguments -d Ubuntu-24.04 -u root -- systemctl start docker.
Configuration
Never go live with default or example values. Replace all placeholders with strong, unique secrets, review the configuration against your security requirements, and restart all services for the changes to take effect.
Generate secure API keys before making a service public. Start with a 40-character JWT secret. You can use the provided value or create your own. Store the secret locally in a safe place. Don’t share it or commit it to version control. Use the secret to generate a JWT, then derive the anon and service API keys using the form in the Supabase documentation: https://supabase.com/docs/guides/self-hosting/docker#generate-api-keys
Run the form twice to generate both keys. Update the .env file in your ~/supabase-project directory with:
ANON_KEY: anon key
SERVICE_ROLE_KEY: service key
Set the required secrets in the same .env file. These values must be set for the installation to work:
POSTGRES_PASSWORD: password for the postgres role
JWT_SECRET: used by PostgREST and GoTrue
SITE_URL: base URL of your site
SMTP_*: credentials for your mail server
POOLER_TENANT_ID: tenant ID used by the Supavisor pooler
Protect the dashboard with new credentials before using it in production. To do this, also edit the .env file:
DASHBOARD_USERNAME: dashboard username
DASHBOARD_PASSWORD: dashboard password
You can define multiple dashboard users in volumes/api/kong.yml in the project directory:
To use all dashboard features outside localhost, set SUPABASE_PUBLIC_URL in the .env file to the URL or IP address you want to use to access the dashboard.
Apply the configuration changes by restarting the stack from the project directory:
Code
docker compose down
docker compose up -d
Conclusion and further resources
Congratulations! You’ve successfully installed and configured Supabase on your Windows Server using WSL2. We also recommend checking out these resources to help with your server configuration: