ngrok Alternatives: Free and Self-Hosted Ways to Expose Localhost
Share a local web server or receive webhooks: Cloudflare Tunnel, Tailscale Funnel, localtunnel, SSH reverse tunnels, frp, zrok and self-hosting.
Blog
DNS, reverse proxies, bandwidth, routing and network performance.
Share a local web server or receive webhooks: Cloudflare Tunnel, Tailscale Funnel, localtunnel, SSH reverse tunnels, frp, zrok and self-hosting.
Test bandwidth between two machines with iperf3: server and client mode, TCP and UDP tests, parallel streams, reverse direction, and interpreting the results.
Use dig to look up A, AAAA, MX, TXT, NS and CNAME records, query specific resolvers, trace delegation, check propagation, reverse DNS and DNSSEC.
See what is using your bandwidth right now: iftop shows traffic per remote host and port, nethogs per process, plus nload, bmon and what to do next.
Connect servers, laptops and home devices into one private network with ZeroTier: create a network, join, authorise members, routing and flow rules.
How TCP congestion control works, BBR vs CUBIC, enabling BBR with fq on Ubuntu, Debian and RHEL, verifying it, measuring the effect, when it helps.
Why sites hosted abroad are slow in mainland China and how to fix it: server location and routes, blocked third-party resources, fewer round trips, BBR.
Encrypt DNS with DoT or DoH: how they differ from plain DNS, DoT in systemd-resolved, a local DoH proxy, Unbound, Pi-hole or AdGuard upstreams, trade-offs.
Change DNS resolvers on Ubuntu, Debian and RHEL: systemd-resolved, Netplan, NetworkManager and resolv.conf, and check which resolver is used.
Install an OpenVPN server on a VPS with Easy-RSA certificates, routing and NAT, create client profiles for any device, and revoke access.
How QUIC works: streams without head-of-line blocking, built-in TLS 1.3, 0-RTT, connection migration, firewall and load balancer considerations, debugging.
Serve several Docker apps on one VPS under different domains: localhost-only ports, Nginx server blocks, Let’s Encrypt, WebSockets, Caddy.
Run Unbound as a private recursive, validating resolver: access control, DNSSEC, caching and prefetch, DoT upstreams, Pi-hole, and no open resolver.
Singapore or Hong Kong for Southeast Asian users? Latency by country, China connectivity, routing quirks, and how to test before you choose.
Dynamic DNS for home servers: when you need it, free DDNS services, updating Cloudflare DNS with a script or ddclient, IPv6, and when a VPS is better.
What nameservers do, registrar vs DNS host, delegation and glue records, moving DNS to Cloudflare or another provider safely, and troubleshooting.
Add extra IPv4 addresses to a Linux server: temporary with ip addr, permanent with Netplan, ifupdown or nmcli, then use them in Nginx, mail and outbound.
Why ordinary routes to mainland China slow down at peak hours, what CN2 GT and CN2 GIA are, and how to test a Hong Kong VPS route.
OpenVPN vs WireGuard for a self-hosted VPN: speed and CPU, setup effort, security design, TCP 443 for restrictive networks, user management, which to pick.
Port speed vs monthly transfer vs unmetered bandwidth: what VPS bandwidth numbers mean, how much you need, and why real speed varies.
Make Nginx or HAProxy highly available with keepalived: VRRP and a virtual IP, MASTER/BACKUP config, health checks, unicast peers, and failover tests.
Shape traffic with Linux tc: limit bandwidth per interface or IP with HTB, fair queuing with fq_codel, ingress policing, and netem for latency and loss.
Use the ip command to show and configure IP addresses, interfaces, routes and neighbours on Linux, with ifconfig and route equivalents and persistence tips.
What reverse DNS (PTR) records are, why email deliverability depends on them, forward-confirmed rDNS, setting PTR for your IP, and checking it.