Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Self-hosting Supabase on a VPS means running the Supabase Docker stack on your own Linux server instead of using a hosted project. The supported path is to obtain the repository’s docker/ directory, create its .env file with your own secrets and public URLs, and start the services with sh run.sh start. A VPS with at least 4 GB RAM and 2 CPU cores is the documented minimum; 8 GB RAM and 4 cores is the recommended production-scale starting point.

What you need before installing

The self-hosted stack is a collection of containers, not a single Supabase binary. Your VPS must have enough CPU and memory for the database, API, authentication, storage, Studio and supporting services to run together. The official self-hosting guide lists these baseline resources:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Use case Memory CPU How to interpret it
Minimum installation 4 GB RAM 2 CPU cores Suitable for getting the stack running and for light workloads.
Production-scale recommendation 8 GB RAM 4 CPU cores Provides more headroom for concurrent requests, database work and background services.

These figures are Supabase’s stated minimum and recommendation. They are not capacity guarantees: traffic, database size, real-time subscriptions, file storage and enabled services can require more resources. No authoritative disk-size figure is specified in the guide, so choose a VPS disk large enough for Docker images, database growth, uploads, logs and backups rather than relying on a fixed minimum.

Software prerequisites

  • Git to obtain the Supabase repository.
  • Docker. On a Linux VPS, install Docker Engine with Docker Compose support. On a desktop or Mac used for a local trial, Docker Desktop supplies the required runtime.
  • SSH access with permission to install packages, create files and run Docker commands.
  • A DNS name or otherwise stable public address if clients will connect over the internet.

Use a supported Linux distribution for the VPS and keep the operating system updated. Create a separate non-root administrator account where possible, grant it Docker access according to your distribution’s security model, and reserve root for system administration.

#1 Best Overall
Sale
Compressed Air Duster,130000RPM Super Power Cordless Air Duster,Rechargeable Brushless Blower,3 Gear Adjustable Blower with LED Light,Dust Remover for Computer/House/Outdoor/Car
  • Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
  • With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
  • Wide Application:Upgraded attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
  • Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
  • Warranty & Support: Our Electric air duster comes with 5 years warranty and 24/7 customer service. During this period, if you have any questions,pls kindly feel free to contact us.

Choose the installation route

The official workflow offers two practical routes. Select one before changing configuration so you know which files and versioning method you are using.

Route What it does Best for Important trade-off
Linux quick-start script Installs Docker when needed, generates secrets and asks for the URLs used by the deployment. An administrator who wants an interactive first setup on Linux. Less manual work, but you still need to review the generated configuration and record the selected version.
Manual repository setup Clones the repository, enters docker/, copies the example environment file and edits it directly. Teams that want explicit configuration, repeatable provisioning or a controlled release tag. You are responsible for Docker installation, secret creation, URL values and keeping the checked-out tag current.

The manual instructions in the current guide show the tag self-hosted/v0.8.2. Release tags change, so treat that value as an example of the versioning mechanism: check the current Supabase self-hosting documentation and use the tag it presently specifies instead of assuming this tag remains current.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Prepare the VPS and its network

Connect and update the operating system

Log in over SSH, apply the operating system’s security updates, and confirm that the server has the documented resources. Check memory and CPU with your distribution’s normal tools before downloading images; starting below the minimum can lead to containers being killed or never becoming healthy.

Install Docker and Compose

On Linux, install Docker Engine and the Compose component from the Docker documentation for your distribution. Confirm both are available before continuing:

docker --version
docker compose version

On a local Mac or desktop test machine, use Docker Desktop instead. The commands used by the Supabase project are still Docker Compose commands, but the Docker daemon is supplied by Desktop rather than a Linux Engine package.

Plan DNS, ports and TLS

Decide which hostname will represent the API and dashboard before filling in .env. Point DNS records at the VPS only after you know the public URLs you will use. A reverse proxy that terminates HTTPS is a common production practice; it is not a substitute for correct Supabase URL configuration, and the exact proxy and certificate procedure depends on your chosen web server and certificate authority.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
EVEO® Screen Cleaner Spray Kit (Streak-Free) TV Screen Cleaner for Smart TV, Lcd, LEd, Oled | Computer Screen Cleaner Spray and Wipe Microfiber Cloth - TV, Monitor, Laptop, iPad, Car - 6.7oz 1 Pack
  • Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
  • Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
  • Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
  • Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
  • Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth

Restrict the VPS firewall to the SSH port and the web ports exposed by your proxy. Do not expose database or internal service ports directly to the internet unless a specific integration requires it and you have an access-control plan.

Install with the Linux quick-start script

The quick-start route is intended for a Linux server. It automates several repetitive tasks, but read each prompt and review the resulting files before making the service public.

  1. Connect to the VPS as the administrator account that will run Docker.
  2. Obtain the official self-hosting quick-start script from the current Supabase documentation. Run it only after verifying that you are on the intended server and that you trust the downloaded content.
  3. Allow the script to install Docker if the VPS does not already have it.
  4. When prompted, provide the public URLs that your browser clients and API consumers will use. These values must match the DNS and reverse-proxy design you intend to deploy.
  5. Let the script generate secrets rather than retaining example or placeholder values.
  6. Change into the generated project’s docker/ directory, inspect .env, and confirm that the values are appropriate for the environment.
  7. Start the services with sh run.sh start, then verify the result with docker compose ps.

Automation does not remove the need for change control. Save a protected copy of the final configuration without exposing secrets, record the Supabase release used, and document who can rotate credentials or restore the database.

Install manually from the repository

The manual route gives you a visible, version-controlled sequence and works on any operating system that can run Docker. The repository contains the self-hosting files; the deployment itself is performed from its docker/ directory.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Install Git, Docker Engine plus Compose on Linux, or Docker Desktop on a desktop system.
  2. Clone the official Supabase repository using its current repository address.
  3. Check out the self-hosting release tag documented for the version you intend to run. The guide currently shows self-hosted/v0.8.2; verify the live documentation before selecting it because tags are volatile.
  4. Change into the repository’s docker/ directory.
  5. Copy the supplied environment template:
cp .env.example .env
  1. Open .env in a text editor. Replace every placeholder secret with a strong, unique value and set the public URLs to the addresses clients will actually use.
  2. Read docker/CONFIG.md while editing. It documents each environment variable and identifies whether it applies to the command-line tooling, self-hosting, or both.
  3. Start the stack and wait for health checks:
sh run.sh start

The project documents this as equivalent to:

docker compose up -d --wait

Finally, inspect service state:

docker compose ps

A manual setup is easier to reproduce when you keep the repository checkout, the selected tag and any local configuration changes in an administration record. Do not commit the populated .env file to a public Git repository.

Configure the environment file safely

Use the template as a checklist, not as production configuration

The example file shows the variables expected by the release, but example values are not safe credentials. The official analytics reference specifically warns against starting the stack with placeholder values from .env.example. Replace them before the first public deployment, including values that appear to work during a local test.

Rank #3
BladeHawks RGB Gaming Mouse Pad Extra Large Extended 31.5x12 Inch-Black
  • 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
  • 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
  • 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
  • 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
  • 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.

Configuration names are case-sensitive. A spelling or capitalization error can leave a service using a default, prevent a container from starting or make one service disagree with another. Work through docker/CONFIG.md for the exact release you checked out instead of copying a variable list from an older blog post. The set of variables changes between releases, and third-party lists can omit newer settings.

Secrets and URLs

Generate independent, high-entropy values for the database credential, signing material, dashboard access and encryption settings required by your release. Keep them in a password manager or another restricted secret store. Never send them in support tickets, paste them into shell history or reuse a development secret in production.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Set the public site, API and any other externally visible URL values to the canonical HTTPS addresses users will enter. If a reverse proxy changes the external scheme or hostname, the values in .env must describe the external address, not an internal container name. Changing signing or encryption material after users and tokens exist can invalidate sessions or make encrypted data inaccessible, so plan rotations as a controlled migration.

Rootless Docker requirement

If Docker is running in rootless mode, set DOCKER_SOCKET_LOCATION in .env. The official guidance notes that the Vector container exits without this setting in a rootless installation. Use the socket path for the Docker user that actually runs the Compose project, then restart the stack and check container status.

Start, inspect and stop the stack

Start and wait for health

Run the command from the project’s docker/ directory:

sh run.sh start

This starts the containers in the background and waits for the Compose health conditions. The equivalent Compose command is docker compose up -d --wait. The first run can take longer because Docker must download images and create networks and volumes.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Sale
Vaydeer Wrist Rest for Keyboard and Mouse, Computer Ergonomic Wrist Support Pad, Soft Memory Foam Arm Cushion for Desk, Palm Hand Office Laptop Typing
  • 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
  • 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
  • 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
  • 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
  • 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.

Check service state

docker compose ps

Look for services that are running and healthy. A container that is restarting, exited or missing health information needs attention before you put traffic through the proxy. To investigate a specific service, use the standard Compose log command from the same directory:

docker compose logs --tail=200 SERVICE_NAME

Replace SERVICE_NAME with the service shown by docker compose ps. Avoid posting logs publicly until you have removed tokens, credentials, email addresses and user data.

Stop without deleting data

When you need a maintenance window, stop the project from its directory with the project’s normal Compose controls. Do not remove volumes simply to clear an error: volumes hold database and storage data. Treat any command that includes volume deletion as a destructive operation and take a tested backup first.

Enable Logs & Analytics only when you need them

Logs & Analytics are disabled by default to conserve memory. The optional configuration adds Logflare and Vector and enables Log Explorer in Studio. On a server close to the 4 GB minimum, leave analytics disabled until you have confirmed that the core stack is stable and that the VPS has capacity for the extra containers.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

From the docker/ directory, enable the feature and restart:

sh run.sh config add logs
sh run.sh start

Then run docker compose ps again and verify the additional services become healthy. If the Vector container exits on a rootless Docker installation, correct DOCKER_SOCKET_LOCATION before troubleshooting the analytics configuration itself. Analytics increases observability, but it also increases memory use and the amount of log data you must protect and retain.

Best Value
Sale
Under Desk Cable Management Tray No Drill, Metal Mesh Cable Management Under Desk with Clamp Mount, 2 Hole Cable Tray with Wire Management and Cord Organizer for Home Office Standing Desk
  • 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
  • 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
  • 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
  • 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
  • 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Put the deployment behind a production network boundary

A direct container endpoint may be useful for a short private test, but an internet-facing deployment normally uses a reverse proxy for TLS termination, hostname routing, request limits and controlled exposure. The proxy should forward only the public Supabase endpoints you intend to offer and keep internal container networks private.

  • Use HTTPS certificates and redirect plain HTTP where appropriate.
  • Allow administrative Studio access only from trusted networks, through VPN, or behind an additional identity layer.
  • Keep SSH restricted by firewall rules and key-based authentication.
  • Expose no database port to the public internet unless there is a documented requirement.
  • Set DNS records and Supabase public URL variables consistently so browser origin checks, redirects and email links point to the same canonical host.

The exact proxy syntax and certificate commands are outside the Supabase Compose stack and vary by proxy, Linux distribution and certificate provider. Follow the documentation for the proxy you select, then test HTTP status codes, WebSocket or real-time connections, authentication redirects and large file uploads through the public hostname.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Backups, upgrades and operational ownership

Back up before changing containers

Self-hosting makes you responsible for the database, uploaded objects, configuration and secrets. Establish a backup schedule before accepting important data. Store backups outside the VPS, restrict access to them and perform restoration tests on a separate environment. A snapshot of only the VPS disk is not a substitute for a database-aware backup if your provider’s snapshots are not guaranteed to be consistent.

Upgrade deliberately

Do not update images or switch release tags blindly. Read the release notes and the current self-hosting guide, compare the new .env.example and docker/CONFIG.md with your existing configuration, and identify added, renamed or removed variables. Back up data and record the currently working tag. Test the new tag on a staging VPS when the service is important, then deploy during a maintenance window and check health, authentication, database migrations, storage and real-time behavior.

The manual route’s pinned tag makes this process explicit: you know which files are running and can roll back to the previous checkout if the new release fails, provided the data migrations are reversible or you have a restore plan. Keep the tag current rather than leaving a documented example such as self-hosted/v0.8.2 in production indefinitely.

Monitor capacity

Watch memory pressure, CPU saturation, disk consumption, container restarts, database growth and backup success. The 8 GB/4-core recommendation is a production starting point, not a fixed ceiling. If analytics, large uploads or sustained real-time traffic push the VPS into swap or repeated restarts, resize the server or separate workloads instead of repeatedly restarting containers.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Troubleshooting common failures

Symptom Likely area Action
The start command fails immediately. Docker, Compose, permissions or wrong directory. Run docker --version and docker compose version, confirm you are in docker/, and verify the account can access the Docker socket.
Containers restart or remain unhealthy. Insufficient resources, invalid environment values or a dependent service still starting. Check docker compose ps, inspect the affected service’s logs, verify .env against CONFIG.md, and confirm the VPS meets at least 4 GB RAM and 2 cores.
Vector exits only with rootless Docker. Missing Docker socket location. Set DOCKER_SOCKET_LOCATION to the rootless daemon socket in .env, then run sh run.sh start again.
Studio or API links use the wrong host or scheme. Public URL values do not match DNS or the reverse proxy. Correct the canonical external URLs in .env, reload the stack and retest through the public hostname.
Analytics services consume too much memory. Logflare and Vector are enabled on a small VPS. Disable optional logs until the core services are stable or resize the VPS; do not treat analytics as mandatory for the base stack.
A deployment works with the template but is rejected or unsafe in production. Placeholder secrets remain. Replace every example value with unique secrets, review the configuration, and restart. The example file is a reference, not a production secret set.

A go-live checklist

  • The VPS has at least 4 GB RAM and 2 CPU cores; production-scale workloads have been sized toward 8 GB and 4 cores or higher.
  • Git and Docker with Compose are installed and tested.
  • The intended Supabase release tag is recorded and is not an unverified old example.
  • The project was started from the repository’s docker/ directory.
  • .env was created from .env.example and reviewed against the matching docker/CONFIG.md.
  • All placeholder secrets were replaced with unique protected values.
  • Public URLs, DNS and the reverse proxy agree on hostnames and HTTPS.
  • Rootless Docker deployments define DOCKER_SOCKET_LOCATION.
  • docker compose ps shows healthy services after startup and after a reboot test.
  • Backups, restoration tests, upgrade ownership and secret-rotation procedures are documented.
  • Logs & Analytics are enabled only if the VPS has capacity and the additional data is covered by your retention and access policies.

Following this sequence keeps the supported deployment path visible: obtain the official Docker files, configure the release-specific environment, start with sh run.sh start, and verify health before exposing the services. The operational work afterward—network protection, backups, upgrades and capacity planning—is what turns a successful Compose launch into a dependable self-hosted Supabase installation.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.