GetPublicIP vs Cloudflare Tunnel vs Tailscale — Which Is Best for Self-Hosting?

If you're self-hosting behind CGNAT or a restrictive ISP, you need a way to make your server reachable from the internet. The three most popular solutions are GetPublicIP, Cloudflare Tunnel, and Tailscale — but they work in fundamentally different ways and each has trade-offs.

Here's the short version: Cloudflare Tunnel is free but only handles HTTP/HTTPS traffic and terminates your SSL. Tailscale is a private mesh VPN that doesn't give you a public IP. GetPublicIP gives you a real dedicated public IP address with full port and protocol access.

Quick Comparison

FeatureGetPublicIPCloudflare TunnelTailscale
Dedicated public IPYesNoNo
Email / SMTP hostingYesNoNo
All ports (TCP + UDP)YesHTTP/HTTPS onlyWithin tailnet only
SSL/TLS terminationNone — your traffic passes unmodifiedCloudflare terminates SSLE2E within tailnet
Public accessFull — real public IPYes — via reverse proxyLimited — Funnel (HTTPS only)
Protocol supportAll (TCP, UDP, ICMP)HTTP/HTTPS (Spectrum for TCP, paid)All within tailnet
Reverse DNS (rDNS)YesNoNo
Pricing$8.99/month per IPFreeFree (personal, up to 3 users)
Setup complexityLow — install WireGuard, import configLow — install cloudflaredLow — install Tailscale client

What Each Service Does

GetPublicIP

GetPublicIP assigns you a real, dedicated public IPv4 and IPv6 address that is routed to your server through an encrypted WireGuard VPN tunnel. Your server receives traffic exactly as if the public IP was configured directly on your machine — all ports, all protocols, with zero modification or inspection of your packets. It works behind CGNAT, across ISP changes, and supports automatic failover.

Cloudflare Tunnel

Cloudflare Tunnel (formerly Argo Tunnel) creates an outbound-only connection from your server to Cloudflare's edge network using the cloudflared daemon. Cloudflare acts as a reverse proxy — it receives incoming HTTP/HTTPS requests on your domain, terminates the TLS connection at their edge servers, inspects the traffic, then forwards it to your origin server through the tunnel. You do not get a public IP address. Traffic is limited to HTTP and HTTPS protocols on the free plan.

Tailscale

Tailscale is a mesh VPN built on WireGuard that connects your devices in a private network (tailnet). It excels at securely connecting your own devices to each other — for example, accessing your home server from your laptop. However, it is not designed for public-facing services. Tailscale Funnel can expose a service publicly, but it is limited to HTTPS traffic only and routes through Tailscale's infrastructure.

SSL/TLS and Privacy

This is one of the most important differences and is often overlooked.

Cloudflare Tunnel terminates your SSL

When you use Cloudflare Tunnel, Cloudflare decrypts your HTTPS traffic at their edge servers, inspects it, and then re-encrypts it before forwarding to your origin. This means Cloudflare can see the plaintext content of every request and response passing through your tunnel. Cloudflare uses this capability for features like their WAF, bot detection, and caching — but it means a third party has access to your unencrypted traffic.

For some users this is acceptable. For others — especially those self-hosting for privacy reasons, running a personal email server, or handling sensitive data — this is a dealbreaker.

Tailscale encrypts end-to-end (within your network)

Tailscale uses WireGuard encryption between your devices. Traffic stays encrypted and private within your tailnet. However, if you use Tailscale Funnel to expose a service publicly, traffic routes through Tailscale's DERP relay servers, which adds latency and means your traffic passes through their infrastructure.

GetPublicIP never sees your plaintext traffic

GetPublicIP routes traffic through an encrypted WireGuard tunnel directly to your server without terminating SSL/TLS. We never decrypt, inspect, or modify your packets. You implement your own SSL/TLS encryption end-to-end, maintaining complete control over your privacy and security. Packets arrive at your server exactly as they were sent — with full visibility of source IPs and original traffic data.

Email and SMTP Support

If you want to self-host an email server (Mailcow, Mail-in-a-Box, Postfix/Dovecot, or similar), your choice of tunnel service matters a lot.

Cloudflare Tunnel — No email support

Cloudflare blocks port 25 (SMTP) and does not proxy email traffic through tunnels. You cannot run a public-facing email server behind a Cloudflare Tunnel. This is a fundamental architectural limitation — Cloudflare Tunnel only handles HTTP and HTTPS traffic on the free plan. The Spectrum add-on supports TCP but is paid, enterprise-tier, and still does not support email on port 25.

Cloudflare's own documentation states that they do not proxy SMTP traffic unless Spectrum is configured, and even then port 25 is restricted.

Tailscale — No public email support

Tailscale is a private mesh network. While you could theoretically run an email server accessible within your tailnet, there is no way to receive email from the public internet through Tailscale. Tailscale Funnel only supports HTTPS — not SMTP, IMAP, or any email protocol.

GetPublicIP — Full email support

GetPublicIP gives you a real dedicated public IP address with all ports available, including port 25 (SMTP), 465 (SMTPS), 587 (submission), and 993 (IMAPS). You can configure reverse DNS (rDNS / PTR records) through the management console, which is essential for email deliverability — most receiving mail servers verify that your sending IP has a valid PTR record.

This makes GetPublicIP the only option in this comparison that supports running a fully functional, public-facing email server from your home or office.

Port and Protocol Access

CapabilityGetPublicIPCloudflare TunnelTailscale
HTTP (80)YesYesFunnel (HTTPS only)
HTTPS (443)YesYesFunnel
SSH (22)YesVia Access (browser-based)Within tailnet
SMTP (25)YesBlockedNo
Custom TCP portsYes — all portsNo (Spectrum, paid)Within tailnet
UDPYesNoWithin tailnet
ICMP (ping)YesNoWithin tailnet
Game serversYesNo (UDP required)Within tailnet only
VoIP / SIPYesNo (UDP required)Within tailnet only
DNS serverYesNoWithin tailnet only

If your use case involves anything beyond HTTP/HTTPS — game servers, DNS, email, VoIP, custom TCP services, or any UDP-based protocol — Cloudflare Tunnel cannot help you. Tailscale works for these protocols within your private network but cannot expose them publicly.

GetPublicIP supports all ports and all protocols because you receive a real public IP address. There is no reverse proxy or application-layer gateway — traffic is routed at the network layer, just like having a static IP from your ISP.

Pricing

PlanGetPublicIPCloudflare TunnelTailscale
Free tierNoYes — HTTP/HTTPS onlyYes — 3 users, 100 devices
Paid$8.99/month per IPFree (Spectrum: enterprise pricing)From $6/user/month
What you getDedicated public IPv4 + IPv6, all ports, all protocols, rDNS, failover, firewall, management consoleHTTP/HTTPS reverse proxy, WAF, DDoS protection, cachingMesh VPN, Funnel (HTTPS), MagicDNS, ACLs
ContractsNo — cancel anytimeNoNo

Cloudflare Tunnel is hard to beat on price — it is genuinely free for HTTP/HTTPS use cases with no usage limits. If all you need is to expose a web application, it's an excellent choice.

Tailscale's free tier is generous for personal use (up to 3 users and 100 devices). For teams, pricing starts at $6/user/month.

GetPublicIP costs $8.99/month per IP address with no contracts. While it's not free, you get capabilities that neither Cloudflare nor Tailscale offer at any price: a real public IP, full port and protocol access, email hosting support, rDNS, and connection failover.

When to Use Each

Use Cloudflare Tunnel when:

  • You only need to expose web applications (HTTP/HTTPS)
  • Free is a priority and you don't need email, UDP, or custom ports
  • You want built-in DDoS protection and WAF
  • You're comfortable with Cloudflare terminating your SSL and inspecting your traffic
  • You don't need a real public IP address

Use Tailscale when:

  • You need private access between your own devices (phone, laptop, home server)
  • You want a mesh VPN with zero configuration
  • You don't need to expose services to the public internet
  • You want to share access with specific people within your tailnet

Use GetPublicIP when:

  • You need a real, dedicated public IP address
  • You want to self-host an email server with reverse DNS
  • You need full port and protocol access (TCP, UDP, ICMP — all ports)
  • You want complete privacy — no SSL termination, no traffic inspection
  • You need connection failover — keep your IP when your ISP changes
  • You're running game servers, VoIP, DNS, or custom TCP/UDP services
  • You're behind CGNAT and need a solution that works like having a static IP from your ISP, without the ISP

Can I combine these services?

Yes — many self-hosters use more than one. A common setup is:

  • GetPublicIP for your public-facing services (web server, email, game server) that need a real IP address and full port access
  • Tailscale for private remote access to your devices (SSH into your server from your phone, access admin panels privately)

These two services complement each other well. GetPublicIP handles the public-facing side, while Tailscale handles private device-to-device access.

Frequently Asked Questions

Can I host an email server with Cloudflare Tunnel?

No. Cloudflare Tunnel blocks port 25 (SMTP) and only proxies HTTP/HTTPS traffic on the free plan. You cannot run a public email server behind a Cloudflare Tunnel. GetPublicIP is the only option in this comparison that supports email hosting with all required ports and reverse DNS.

Does Cloudflare Tunnel give me a public IP address?

No. Cloudflare Tunnel acts as a reverse proxy — your domain points to Cloudflare's IP addresses, not yours. You share Cloudflare's IP space with millions of other sites. GetPublicIP gives you a dedicated public IP that is yours alone.

Can Tailscale expose my server to the public internet?

Tailscale Funnel can expose HTTPS services publicly, but it is limited to HTTPS only, routes through Tailscale's relay servers, and has undisclosed bandwidth limits. It is not designed for production public-facing hosting. For full public access with all protocols, you need a real public IP from a service like GetPublicIP.

Is GetPublicIP a VPN?

GetPublicIP uses a WireGuard VPN tunnel to route a dedicated public IP address to your server, but it is not a privacy VPN like NordVPN or Mullvad. It does the opposite — instead of hiding your IP, it gives you a public IP so your server is reachable from the internet. Your existing internet connection continues to work normally for outbound traffic.

Which is best for self-hosting behind CGNAT?

All three bypass CGNAT, but they solve different problems. Cloudflare Tunnel works for HTTP/HTTPS websites. Tailscale works for private access to your devices. GetPublicIP works for any use case that needs a real public IP — web hosting, email, game servers, VoIP, or any other protocol. See our complete guide to self-hosting behind CGNAT for more detail.

Check out our other guides

Explore Guides & Categories