I have paid for web hosting every month for over fifteen years. And for most of that time, I did not need to. Neither do you.

If your small business or community group runs a simple informational website (a few pages, maybe a blog, no shopping carts or customer logins), you can host that thing from a computer in your office. For free. Permanently. The old argument against doing this was security risk. That argument is basically dead now.

There are three ways to get traffic from the internet to a server in your office. I will walk you through all three, ranked from safest to riskiest, so you can pick the one that fits your situation.

The Hardware You Already Own

The biggest misconception about self-hosting is that you need server hardware. You do not. I have run production websites on a Raspberry Pi 4 that cost sixty dollars. The current Pi 5 is faster and sips power like a phone charger. Any old desktop or laptop will work. If you have a machine gathering dust in a closet, wipe it, install Linux, and you have a web server. The requirements for a basic informational site are that low.

HARDWARE CHECK
A computer with at least 2GB of RAM and a wired internet connection. A Raspberry Pi 5, an old OptiPlex off eBay for fifty bucks, or that laptop from 2018 that sits in a drawer. All of these work.
Minimum Specs
A computer with at least 2GB of RAM and a wired internet connection. A Raspberry Pi 5, an old OptiPlex off eBay for fifty bucks, or that laptop from 2018 that sits in a drawer. All of these work.

I run a handful of client sites on a Dell OptiPlex Micro I bought refurbished for $120. It pulls maybe 15 watts. That costs me about fifteen bucks a year in electricity. Compare that to $10 or $20 a month for hosting and the math gets obvious fast.

i
Note A Raspberry Pi 5 uses about 7 watts at idle. That is roughly $8 a year in electricity at average US rates. You will spend more on coffee in a week.

The Software Stack

Hardware is the easy part. The free software ecosystem for self-hosting is mature and well documented. You need a Linux distribution. Ubuntu Server or Debian. Both free, both well supported. Then a web server. Nginx or Apache. Both free, both run the majority of the internet.

That is your base. The question is how you connect that server to the world. That is where the three approaches split.

Option 1: Cloudflare Tunnel (Best)

This is what I use for almost everything now. Cloudflare Tunnel creates an outbound connection from your server to Cloudflare's network. Your server reaches out to them, not the other way around. That means you open zero ports on your firewall. No port forwarding. No static IP needed. No dynamic DNS.

The tunnel runs as a tiny daemon called cloudflared. You install it, authenticate it with your Cloudflare account, point it at your local web server, and within minutes your site is live on Cloudflare's edge with automatic SSL, DDoS protection, and a CDN. All on the free plan.

WHY IT WINS
Cloudflare Tunnel means your office router never needs to accept an incoming connection. If there is no open port, there is nothing to scan, nothing to exploit, nothing to patch on the network edge.
No Open Ports
Cloudflare Tunnel means your office router never needs to accept an incoming connection. If there is no open port, there is nothing to scan, nothing to exploit, nothing to patch on the network edge.

The setup looks like this. Install cloudflared on your Linux server. Run cloudflared tunnel login to authenticate. Create a tunnel, route your domain through it, point it at localhost:80 where Nginx is listening. Done.

I have walked multiple non-technical business owners through this over a screen share and had them live in under thirty minutes. It is that simple. Your website gets all the performance benefits of Cloudflare's global network. Caching at the edge, automatic HTTP/2 and HTTP/3, bot management, analytics. All for zero dollars.

One catch. Cloudflare Tunnel terminates TLS at Cloudflare's edge, not on your server. That means Cloudflare can see unencrypted traffic between their edge and your server if you do not set up additional encryption. For a basic informational website, this is a non-issue. If it bothers you, you can add a second layer of TLS using a self-signed certificate on the tunnel side. I do not bother for brochure sites and I would not lose sleep over it.

Option 2: Tailscale Funnel (Fallback)

Let us say you do not want to use Cloudflare. Maybe you have privacy concerns about routing traffic through their network. Or you want something simpler. That is where Tailscale comes in.

Tailscale is a mesh VPN built on WireGuard. Normally you use it to connect your devices together securely. But they also offer a feature called Funnel that lets you expose a local web server to the public internet through Tailscale's infrastructure.

Same concept as Cloudflare Tunnel. Your server makes an outbound connection to Tailscale's network. No open ports on your firewall. Automatic TLS. The difference is Tailscale also gives you a private mesh for accessing your server, your files, and your other devices without any extra configuration.

TAILSCALE LIMIT
Tailscale's free tier supports one user and up to 100 devices. Funnel is available on all plans. The main limitation is you use a Tailscale subdomain unless you bring your own domain, which requires their paid plan.
Free Tier Constraints
Tailscale's free tier supports one user and up to 100 devices. Funnel is available on all plans. The main limitation is you use a Tailscale subdomain unless you bring your own domain, which requires their paid plan.

The setup is even simpler than Cloudflare Tunnel. Install Tailscale on your server. Run tailscale up. Enable Funnel with tailscale funnel 80. Your site is live on a something.tailscale.dev URL with HTTPS.

Funnel is newer and less battle tested than Cloudflare Tunnel. I have used it for internal demos and staging sites. It works. For a production business site, I would stick with Cloudflare Tunnel for now. But it is worth knowing about because it gets you the same zero-open-ports model with almost zero configuration.

Option 3: Port Forwarding (Last Resort)

This is the old way. You open ports 80 and 443 on your office router, forward them to your server, set up dynamic DNS so your domain follows your changing IP address, and run Certbot to get a Let's Encrypt SSL certificate.

It works. I did it for years. But it is the worst option for a reason.

You have to maintain a firewall that only exposes those two ports. You need fail2ban to block scanners. You need automatic security updates because every bot on the internet will find your server and try things. You need a dynamic DNS client or a Cloudflare API script to update your DNS when your IP changes.

!
Important If you go this route, never expose SSH to the internet. Set up Tailscale or WireGuard if you need remote access. Your SSH logs will thank you.

There is nothing wrong with this approach if you are willing to maintain it. It is free, it works, and it gives you complete control. But every extra thing you have to maintain is a thing that can break. That is why I moved everything to Cloudflare Tunnel.

How to Choose

QUICK DECISION
Cloudflare Tunnel: You want set and forget. Tailscale Funnel: You want simple and already use Tailscale. Port forwarding: You want full control or do not want a middleman.
Choose Your Ingress
Cloudflare Tunnel: You want set and forget. Tailscale Funnel: You want simple and already use Tailscale. Port forwarding: You want full control or do not want a middleman.

Cloudflare Tunnel if you want the most secure and lowest maintenance option. It handles SSL, DDoS protection, CDN caching, and DNS all in one place. It is what I recommend to every client.

Tailscale Funnel if you are already in the Tailscale ecosystem, want something dead simple, or have specific reasons to avoid Cloudflare.

Port forwarding if you want maximum control, do not want to depend on a third party edge provider, or are comfortable managing a firewall and monitoring logs.

All three are free. All three work. The difference is how much work you want to do after the initial setup.

Where It Gets Tricky

I am not going to pretend self-hosting has no downsides. It does. The big one is reliability. Your office internet goes down, your website goes down. A power outage kills it. A dead SD card on a Raspberry Pi means you are rebuilding. Cloudflare Tunnel and Tailscale Funnel do not fix any of this because the failure is at your connection, not the ingress method.

You mitigate these things. A battery backup for the server. A cheap second internet line or a 4G failover. Regular backups to a separate drive or an offsite location. But you have to actually do them, which is the part most people skip.

BACKUP RULE
Three copies of your data. Two different storage types. One offsite location. This applies whether you self-host or pay for hosting.
3-2-1
Three copies of your data. Two different storage types. One offsite location. This applies whether you self-host or pay for hosting.

For the offsite copy, iDrive Online Backup backs up multiple devices to the cloud for a few dollars a year. It handles the offsite part of the 3-2-1 rule automatically so you do not have to think about it. If you prefer a fully self-hosted approach, BorgBackup is a solid open source alternative that can push encrypted backups to any remote server you control.

The other issue is time. I can set up a server in about an hour because I have done it fifty times. If you have never touched Linux, you are looking at a weekend of tutorials and troubleshooting. That might be a weekend you would rather spend on your actual business.

When Self-Hosting Makes Sense and When It Doesn't

Self-hosting fits a specific profile. You have a simple informational website. You have some technical comfort or are willing to learn. You want to save money and control your data.

It does not fit if you run e-commerce. It does not fit if you handle customer payment data, logins, or private health information. The compliance requirements for those things make self-hosting impractical for most small operations. Use a reputable paid host for anything involving sensitive data. VPS.org is a solid option for affordable managed VPS hosting if self-hosting is not right for your situation, though self-hosting remains the most private and cost-effective choice if you can manage it.

It also does not fit if you need guaranteed uptime. Your office internet goes down at 2 PM on a Tuesday and your site is unreachable until you get home. If that costs you money, pay for hosting.

I tell people to think of self-hosting like cooking at home. You can make a better meal for less money. It takes more effort. Some nights you order takeout. Both approaches are valid and knowing which one you are in the mood for is the skill.

What About Privacy and Data Control

This is where self-hosting wins hard. When you pay a hosting company, your website files live on their server alongside thousands of other sites. You trust them with your data, your customer inquiries, your content.

When you host in your office, that data never leaves your building. No hosting company employee can browse your files. No terms of service change can lock you out. No price hike forces you to migrate on short notice.

I will be honest about the tradeoff with Cloudflare Tunnel though. Your traffic routes through Cloudflare's network. Cloudflare can see the unencrypted HTTP traffic between their edge and your server by default. For a public informational website, this is not a meaningful privacy concern because the same content is visible to anyone who visits the site directly. But if it bothers you, use Tailscale Funnel or traditional port forwarding instead. The choice is yours.

i
Note If you do go with a paid host, look for one that supports self hosted alternatives. I recommend checking if they use open source infrastructure and allow easy data export. Avoid proprietary platforms that make it hard to leave.
If You Would Rather Not Deal with It

I run Sabyla Solutions. I set up self-hosted infrastructure for small businesses and community groups who want the control and cost savings without the learning curve.

I pick the hardware, install the software, set up your ingress (Cloudflare Tunnel by default unless you want something else), harden the security, and configure monitoring so I know if something goes wrong before your visitors do. You pay once for the setup and your ongoing costs are electricity and your internet bill. No monthly hosting fee.

If you have an old computer sitting around, I can probably turn it into your web server. If you do not, I will spec out a mini PC that costs less than a year of paid hosting.

All you have to do is ask.

Your Turn: Try It

Sign up for a free Cloudflare account. Install cloudflared on any computer on your home network. Run cloudflared tunnel login, create a tunnel pointed at a local HTTP server, and visit the Cloudflare dashboard to see your tunnel status as healthy. You do not even need a domain for this step. The tunnel health check alone will teach you more about how this works than reading ten articles about it.

If you get through that in under an hour, you can handle self-hosting. If it feels like a chore, that is what I am here for.

Author
JustinIT Ninja

Hi, I'm Justin, an IT consultant and open-source advocate. I specialize in building robust self-hosted infrastructure, developing tools and exploring AI-driven workflows. I write about deploying solutions to common issues, the occasional hardware failure, and everything I learn along the way.

Frequently Asked Questions
Is self-hosting really free or are there hidden costs?
The software is free. Linux, Nginx, and cloudflared all cost nothing. The hardware is something you probably already own. Your only ongoing costs are electricity (about $8 to $15 per year depending on the device) and your existing internet connection. The three ingress methods in this guide are all available on free tiers. There are no hidden costs.
Which is better: Cloudflare Tunnel or Tailscale Funnel?
Cloudflare Tunnel is better for most people. It is more mature, handles DNS and CDN caching automatically, and works with your own domain on the free plan. Tailscale Funnel is simpler to set up and gives you a private mesh for all your devices, but requires a paid plan to use a custom domain. For a production business site, Cloudflare Tunnel is the safer choice today.
Can I host a WordPress site on a Raspberry Pi?
Yes, with caveats. WordPress needs a database (MySQL or MariaDB) which adds complexity. You would run Nginx with PHP-FPM and a database server on the same machine. The ingress methods work the same way. Without a caching plugin, WordPress can be slow on low-power hardware. Static site generators like Hugo or Jekyll are a better fit for self-hosting on a Pi.
What happens if my power goes out or internet goes down?
Your site goes down until power or connectivity is restored. This is the biggest downside of self-hosting. Mitigations include a UPS battery backup, a secondary internet connection or 4G failover, and offsite backups so you can restore quickly if hardware fails. The 3-2-1 backup rule applies here. If uptime is critical to your business, self-hosting may not be the right choice.
Is self-hosting secure enough for a business website?
For a simple informational website with no logins, no payment processing, and no customer data, yes. Cloudflare Tunnel is arguably more secure than traditional hosting because there are no open ports to exploit. The security risk of self-hosting today is mostly about physical security and keeping your server software updated. For anything involving sensitive data, use a paid host.

Some links in this post are affiliate links. I may earn a commission if you purchase through them, at no extra cost to you.