# IPv4 and IPv6 on SupaHost

> SupaHost instances have a static IPv4 address, so IPv4-only networks, CI runners and hosts work. How this differs from Supabase Cloud's IPv6-only direct database host.

Source: https://supahost.app/kb/ipv4-ipv6 · Updated 2026-11-11

Every SupaHost instance has a static IPv4 address, and its hostnames are published as IPv4 (A) records. That means IPv4-only networks, CI runners, Docker containers and hosting platforms can reach your projects without an add-on or a workaround.

## How this differs from Supabase Cloud

On Supabase Cloud, the direct database host (`db.<ref>.supabase.co`) resolves only to an IPv6 address unless you buy the IPv4 add-on. On an IPv4-only network, connecting to it fails with errors like:

```
connection to server at "db.abcdefghijklmnopqrst.supabase.co" (2600:1f18:...), port 5432 failed: Network is unreachable
```

The usual fix there is to switch to the connection pooler's IPv4 address or pay for a dedicated IPv4 address.

On SupaHost there's nothing to switch. These hostnames all resolve to your instance's IPv4 address:

| Hostname | Used for |
|---|---|
| `acme.supahost.space` | The instance itself, SSH, export downloads |
| `app-one.acme.supahost.space` | A project's API: REST, Auth, Storage, Realtime, Functions |
| `app-one.studio.acme.supahost.space` | That project's Studio |

You can check from any machine:

```bash
dig +short app-one.acme.supahost.space A
```

## Direct Postgres

There's no public Postgres host on SupaHost, IPv4 or IPv6. Direct connections (Business and Enterprise) go through an SSH tunnel to the instance's hostname, which works over IPv4:

```bash
ssh -N -L 5432:127.0.0.1:5432 supahost@acme.supahost.space
```

Your tools then connect to `127.0.0.1:5432` on your own machine. See [Connecting directly to Postgres](/kb/direct-postgres-connection).

## Static means stable

The instance's IP address doesn't change for the life of the instance. Changing plans resizes the VM but keeps the address. That's useful when:

- you point a custom domain with A records instead of a CNAME (all A records must equal the instance IP);
- a partner or firewall needs to allowlist where your API lives.

You'll find the address by resolving your instance hostname, as above.

## Importing from Supabase Cloud

The same IPv6 issue is why SupaHost's one-click import asks for your Supabase project's **Session pooler** connection string (`*.pooler.supabase.com`, port 5432) and rejects the direct `db.<ref>.supabase.co` host. See [Importing from Supabase Cloud](/docs/platform/import-from-supabase).

## On SupaHost

- Your instance's hostnames are published as A records. If you need native IPv6 reachability for a specific reason, email support.
- Outbound traffic, such as Edge Functions calling third-party APIs, is a separate question. See [Static outbound IP for Edge Functions](/kb/static-egress-ip).

## Related

- [Instances](/docs/platform/instances)
- [Custom domains](/docs/platform/custom-domains)
- [Connection refused or timeout when connecting to Postgres](/kb/connection-refused)
