# Setting Up Supabase Using Docker Desktop

<span lang="EN">If you’re new to self-hosting or want a simple, visual setup, Docker Desktop offers the easiest way to run Supabase locally. It provides a graphical interface for managing containers, configuring ports, and ensuring your data persists across restarts—no command-line work required.</span>

### <a name="_84tuplt0hr9m"></a>**<span lang="EN">Step 1. Install Docker Desktop</span>**

<span lang="EN"><span style="mso-list: Ignore;">●<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN">[<span style="color: #1155cc;">Download Docker Desktop</span>](https://www.docker.com/products/docker-desktop/) for your operating system.</span>

<span lang="EN"><span style="mso-list: Ignore;">●<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN">Install it following the installer instructions.  
**Windows users:** Enable **WSL2** during installation and restart if prompted.</span>

<span lang="EN"><span style="mso-list: Ignore;">●<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN">Open Docker Desktop and make sure it’s running. You should see the Docker whale icon in your system tray or menu bar.</span>

<span lang="EN" style="mso-no-proof: yes;">![](https://dotroll.com/en/knowledge-base/uploads/images/gallery/2026-06/embedded-image-mwbeqrkf.png)</span>

### <a name="_19aeapssvsjc"></a>**<span lang="EN">Step 2. Prepare a Folder for Data</span>**

<span lang="EN"><span style="mso-list: Ignore;">●<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN">Supabase stores data (PostgreSQL database, file uploads) in volumes. To make your data persistent:</span>

<span lang="EN"><span style="mso-list: Ignore;">○<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>**<span lang="EN">macOS / Linux:</span>** <span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">~/supabase-data</span>

<span lang="EN"><span style="mso-list: Ignore;">○<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>**<span lang="EN">Windows:</span>** <span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">C:\\supabase-data</span>

<span lang="EN" style="mso-no-proof: yes;">![](https://dotroll.com/en/knowledge-base/uploads/images/gallery/2026-06/embedded-image-8xkdabri.png)</span>

<span lang="EN">This folder ensures your data is safe even if you remove or update containers.</span>

### <a name="_rggzn27v487n"></a>**<span lang="EN">Step 3. Pull the Official Supabase Images</span>**

<span lang="EN">Supabase uses multiple Docker images for its services: PostgreSQL, Auth, Realtime, Storage, API, and Studio. You can pull them directly in Docker Desktop:</span>

1. <span lang="EN">Open Docker Desktop and go to the **Images** tab.</span>
2. <span lang="EN">In the search bar, enter the official image names:</span>

<span lang="EN"><span style="mso-list: Ignore;">○<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">supabase/postgres</span>

<span lang="EN"><span style="mso-list: Ignore;">○<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">supabase/gotrue</span>

<span lang="EN"><span style="mso-list: Ignore;">○<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">supabase/realtime</span>

<span lang="EN"><span style="mso-list: Ignore;">○<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">supabase/storage-api</span>

<span lang="EN"><span style="mso-list: Ignore;">○<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">supabase/postgrest</span>

<span lang="EN"><span style="mso-list: Ignore;">○<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">supabase/studio</span>

3. <span lang="EN">Click **Pull** for each image to download it to your machine. Repeat for all images.</span>

<span lang="EN" style="mso-no-proof: yes;">![](https://dotroll.com/en/knowledge-base/uploads/images/gallery/2026-06/embedded-image-92ycxfwj.png)</span>

### <a name="_tpcmq792jr4t"></a>**<span lang="EN">Step 4. Create Containers for Each Service</span>**

<span lang="EN">Once the images are downloaded, you need to create a container for each service:</span>

1. <span lang="EN">Go to the **Containers/Apps** tab in Docker Desktop and click **+ Add Container**.</span>
2. <span lang="EN">Select the image you just pulled.</span>
3. <span lang="EN">Configure settings for each container:  
      
    </span>

<span lang="EN"><span style="mso-list: Ignore;">○<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>**<span lang="EN">Name:</span>**<span lang="EN"> Give it a meaningful name (e.g., </span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">supabase\_postgres</span><span lang="EN">, </span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">supabase\_auth</span><span lang="EN">).</span>

<span lang="EN"><span style="mso-list: Ignore;">○<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>**<span lang="EN">Ports:</span>**<span lang="EN"> Map the container ports to host ports:</span>

<span lang="EN"><span style="mso-list: Ignore;">■<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN">PostgreSQL: </span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">5432</span>

<span lang="EN"><span style="mso-list: Ignore;">■<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN">Supabase Studio: </span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">3000</span>

<span lang="EN"><span style="mso-list: Ignore;">■<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN">Others use default ports (check each service documentation).</span>

<span lang="EN"><span style="mso-list: Ignore;">○<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>**<span lang="EN">Volumes:</span>**<span lang="EN"> Bind your host folder to the container for persistence:</span>

<span lang="EN"><span style="mso-list: Ignore;">■<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN">Example: </span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">~/supabase-data</span><span lang="EN" style="font-family: 'Arial Unicode MS'; mso-fareast-font-family: 'Arial Unicode MS'; mso-bidi-font-family: 'Arial Unicode MS';"> → </span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">/var/lib/postgresql/data</span><span lang="EN"> for PostgreSQL</span>

<span lang="EN"><span style="mso-list: Ignore;">○<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>**<span lang="EN">Environment Variables:</span>**<span lang="EN"> Set essential keys:</span>

<span lang="EN"><span style="mso-list: Ignore;">■<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">POSTGRES\_PASSWORD</span><span lang="EN">, </span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">JWT\_SECRET</span><span lang="EN">, </span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">ANON\_KEY</span><span lang="EN">, </span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">SERVICE\_ROLE\_KEY</span>

<span lang="EN"><span style="mso-list: Ignore;">○<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>**<span lang="EN">Restart Policy:</span>** <span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">Always</span><span lang="EN"> or </span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">Unless Stopped</span>

4. <span lang="EN">Click **Run** to launch the container. Repeat for all Supabase services.</span>

<span lang="EN" style="mso-no-proof: yes;">![](https://dotroll.com/en/knowledge-base/uploads/images/gallery/2026-06/embedded-image-s03nhesy.png)</span>

### <a name="_hsgfhhdifzm"></a>**<span lang="EN">Step 5. Access Supabase Studio</span>**

<span lang="EN"><span style="mso-list: Ignore;">●<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN">Once all containers are running, open your browser and go to:  
<span style="mso-spacerun: yes;"> </span></span><span lang="EN" style="font-family: 'Roboto Mono'; mso-fareast-font-family: 'Roboto Mono'; mso-bidi-font-family: 'Roboto Mono'; color: #188038;">http://localhost:3000</span>

<span lang="EN"><span style="mso-list: Ignore;">●<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN">You now have full access to Supabase Studio and can manage your database, authentication, and storage visually.</span>

<span lang="EN" style="mso-no-proof: yes;">![](https://dotroll.com/en/knowledge-base/uploads/images/gallery/2026-06/embedded-image-a9euiyyu.png)</span>

### <a name="_loem3maz0d6p"></a>**<span lang="EN">Step 6. Updating Supabase</span>**

<span lang="EN">When new Supabase releases are available:</span>

1. <span lang="EN">Stop and remove the containers using Docker Desktop.</span>
2. <span lang="EN" style="font-family: 'Arial Unicode MS'; mso-fareast-font-family: 'Arial Unicode MS'; mso-bidi-font-family: 'Arial Unicode MS';">Pull the updated images (Images tab → Pull).</span>
3. <span lang="EN">Recreate containers using the same settings and volume mappings.</span>

<span lang="EN">Because your data is stored in persistent volumes, it **remains safe** during updates.</span>

### <a name="_rtzmsa47c7ys"></a>**<span lang="EN">Step 7. Maintenance and Monitoring</span>**

<span lang="EN"><span style="mso-list: Ignore;">●<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN">Docker Desktop lets you monitor resource usage, logs, and container health.</span>

<span lang="EN"><span style="mso-list: Ignore;">●<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN">Regularly check logs for errors and ensure your data folder has sufficient disk space.</span>

<span lang="EN"><span style="mso-list: Ignore;">●<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN">For production or long-term local usage, consider automating container updates using **Watchtower**.</span>