Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Host a website from a living room in 2022?
135 points by tomekw on Dec 20, 2022 | hide | past | favorite | 158 comments
As in title. Is Raspberry Pi a viable option (SD card?!)? Should I get an Intel NUC? Fanless would be really, really nice.

Thank you!

EDIT: OK, a web app, not a website, the service is not critical (it's my side project, 5yearsback.com), I'm 100% technical, the app is in Clojure, but I plan to deploy Zig services as well

EDIT2: I've a static IP.



I can recommend the Rasperry Pi for self-hosting, if you pick one of the more recent models with more RAM (3 or 4 with 4GB of RAM at least). You just need to keep in mind that the availability of your website is not quite as good as if you were hosting in a datacenter.

Regarding security: you might want to have a look at cloudflared. This is a (free for small projects) service by Cloudflare where your server (Raspberry Pi) connects to cloudflare, and all HTTP traffic is proxied through Cloudflare. This has multiple advantages:

- you don't need to open a port on your router that forwards to your Pi, which is good for security and simplicity (some routers don't even have this option)

- you get all the cloudflare protection with the click of a button, including HTTPS with automatic Cloudflare certificates, DDoS protection, etc

- you don't need DynDNS to point to your dynamically changing IP


> You might want to have a look at cloudflared

I think people self-host with their ISP to get away from centralized choke-points such as Cloudflare. Unless you're fine with having Cloudflare have yet-another-datapoint.


Another option is to use a VPS + nginx + a wireguard VPN.

Your home web server can establish a VPN connection to the public IP of your VPS, meaning you still don't need to worry about dynamic addresses changing or opening ports on your router. This is essentially what a Cloudflare tunnel is.

Granted a VPS isn't usually free. But some places like Oracle Cloud do offer free-tier compute, as well as fly.io.


That's what I do, but without a real VPN (I don't want secrets on the VPS)

http://dusted.dk/pages/aWayOut/


Oh interesting, so you only drop a public key onto the VPS, and you forward TLS to the VM at home instead of terminating on the VPS. That's a neat idea.

So with your statement, "I still don't want to trust a VPS provider", is this more about having your secrets or file contents leaked? Because even in your design, if the VM is compromised, then so are your users. At some level you still have to trust that the provider isn't malicious or vulnerable.


Yes you are right.

If my VPS is broken, I don't lose any secrets, and it does not permit any additional access into my LAN or VPN.

For plain HTTP, of course all traffic would be easily intercepted and readable. For HTTPS, I guess an attacker might compromise the software and IP tables configuration on the VPS and run a MITM attack to decrypt it.

So yes, I am putting a bit of trust on the VPS, for my specific use-case, the most sensitive information they'd be able to access if they went through the trouble of decrypting HTTPS, was getting access to my music-player :)

I am thinking though, that at that point.. well, even if I hosted at home on my own ISP directly, I still need to put that same amount of trust on my ISP, since they could MITM me as well I think.


This is a great option IMO, I use it myself to host multiple services. A VPS can be had for $5 per month or less


I'd rather have someone DDoS Cloudflare than my home IP. Or just host somewhere that is not my home without Cloudflare.


Yeah for small services like game servers for my friends and I, I'll host on my home IP. But for large websites and services... no thanks.


Good point. You are not dependent on Cloudflare, though, you can use other similar services or open the port on your router if it supports it. And if you pay for it, you can get an SLA so that they can't mess with you by terminating your project.

I would still consider it very nice of them to offer this free service that let's you break free from your dynamic IP, crappy router and at the same time giving you protection that you couldn't set up yourself.

I think many people just want to be able to make their device available from the internet - this type of liberty is not really important for many people.


If you self-host with your ISP, then isn't your ISP also a choke-point? If your ISP decides to block you for some reason, you have to change ISPs or possibly your location if there is only one good ISP at your location.


Depending on your write load, the SD card could become a problem, but you could mount a USB SSD. You can even boot from a USB SSD now (https://www.makeuseof.com/how-to-boot-raspberry-pi-ssd-perma...)


Anyone know what the best practice is to guard against corruption on your SD card or your SSD if your home power goes out and your Raspberry Pi power-cycles unexpectedly (outside of just getting a UPS?)

I've had a previous RPI SD card get corrupted this way and I've been hesitant to do anything useful with home-hosting on one since I had that problem.


Get an SD card specifically labeled "high endurance." They're a tad bit more expensive, but do work.

Corruption has always been an issue with using standard SD cards as a boot system. It's just something these cards were never meant to do. I run multiple Pis at home, one of them as a scraper/site hosting/MariaDB/Wireguard. Power outages would almost always corrupt the file system, and a few times, damage the SD card. Once I switched to high endurance cards, I haven't had a problem.


I have a datalogger based on RaPi running since around 2 years. It writes every 5 minutes more or less 25 bytes to a file on a standard SD card. I have frequent black outs (and maybe brown outs, too, but never investigated this), and I never had problems with FS corruption.


The only things I can think of do involve a ups. There are battery banks that support pass through charging but I’m not sure if you’re supposed to use that constantly. A low capacity power strip style ups seems like the next best. Or don’t use a pi at all - if you have an old laptop that you don’t use, that could be the server and it has its own built in ups.

Sorry I don’t know that I’m being helpful here. I had the same issue and just ended up with an ups - but I also ended up plugging my networking rack into it (router, cable modem, switch, nas) as well. We’ve only had one real outage since I set this up, but it kept my network alive for 90 minutes or so and then the power came back up.


Enable read-only overlay for your rootfs and make your /boot readonly. Just use raspi-config, and go into performance options.

There are some gotchas - everything you write after that goes to a tmpfs. Meaning it starts cutting into your available RAM. So this overlay is only really useful if you are using the high-memory variants like the 4GB/8GB RPI4. With the 1GB Pi variants, this gets painful.

Alternatively, You could setup a cron job to reboot every night thus clearing the tmpfs.

Do remember to disable the overlay (and make /boot rw) every few weeks to apply updates.


A good alternative is to use a similar SBC with eMMC module support, such as one of the ODROIDs


I have a Toradex Colibri with 4GB of eMMC formatted with ext4. As part of a system test I've been cutting power on it every 12 hours for two years now and haven't lost a byte.


Backup, backup, backup.

Also test your backups.


Or use tmpfs for things that get written, but actually don't need to be persisted.


These days 'overlayfs' I think[1], though if you're running nginx on there to serve a site/app you might want logs?

1: https://forums.raspberrypi.com/viewtopic.php?f=63&t=253104&p...


I run much heavier networking equipment (enterprise routing/switching + rack server) but I also host at home using cloudflared on a slow DSL connection. It works very well and the CDN's caching helps with my low upstream bandwidth.

You aren't tied to Cloudflare in the sense that there are other CDN services to choose from, each with their own pros and cons. With the servers on your own infrastructure you can choose the provider you like and easily switch between them. I also have ports forwarded for services that I don't want to proxy.


Thanks. Fortunately I've a static IP.


Using a different IP than your home network might be a good idea ?

( Your ISP should give you at least a /56 : https://www.ripe.net/publications/docs/ripe-690 )


Funny man thinking ISPs everywhere just give IPv6 willy-nilly.

Even funnier that you think you'd even be accessible if you put your website on IPv6 only


I have a few personal things hosted on IPv6-only just for giggles. A few years ago those things would almost never be reachable. Now I can reach them at most places. I at least have IPv6 on cellular connectivity all the time.


Before long, not supporting IPv6 will make your website more unreachable than not supporting IPv4. (Already the case in Asia ?)


It'd be helpful for others if you clarified whether you're asking a question or making a statement.


Let's say that I am considering this too, have looked a bit into it, but I am not a network engineer, and haven't done it yet, so I am not sure how good that advice is ?

I guess this depends a LOT your ISP, and especially the router they gave you, how much IPv6-only friendly are they ?

Yes, you can buy your own router, but this come with even more complications and potentially negotiations with the ISP.


I'm starting to notice you end statements with question marks, which solves my previous question.


i concur it is unclear and hard to understand the intention.


What is unclear about question marks indicating uncertainty, especially after I explained it ?

(And to be extra clear, this question mark indicates a question, albeit a rhetorical one.)


Aren't there obvious dangers for example if I use my Macbook and host it a server?


Constantly keeping the battery at 100% can be an issue, but modern versions of macOS allow you to limit charging. There are also utilities that work on older OS versions (they just issue an SMC command to achieve the same thing), like this one: https://github.com/zackelia/bclm


I did this for a bit. The main issue was that air intake on my older model was through the keyboard, so clamshell mode was inadvisable - not sure if that’s true of the newer models and M1 should run cooler.

If you’re wiping it and installing Linux it’s like any other server, but if you’re running macOS you’re open to a wider spectrum of vulnerabilities that wouldn’t normally apply (desktop software). Your apps could also have vulnerabilities that expose access to personal credentials, etc (e.g. filesystems, apple id) depending on your setup.

You can insulate yourself a bit with tunnels/proxies to expose specific services (e.g. cloudflare, ngrok).

I had a lot more peace of mind buying an old, cheap computer, raspberry pis, and eventually NUCs.


Yes, a Raspberry is a viable option. These days I do most of my computing on a Raspberry Pi 4 attached to my home router:

https://fatcity.it/

One thing you really need is an SSD, though. I use a cheap Kingston, it works great but you must pay attention to the right USB->SATA adapter, picking one that's fully compatible with UAS drivers. For booting directly from the SSD with Ubuntu there is this useful guide:

https://jamesachambers.com/raspberry-pi-4-ubuntu-20-04-usb-m...

Performance wise, this little computer runs mostly like a common VPS, I think on par with a droplet from Digital Ocean, for example. Here some benchmarks:

https://pibenchmarks.com/benchmark/62022/

If you don't want to share your IP, a Cloudflare tunnel is a great alternative:

https://developers.cloudflare.com/cloudflare-one/connections...

Also, another essential tool is Tailscale, with it I can access my home server from basically everywhere just like a LAN connected device: https://tailscale.com/

PS: You can also do your own tunnelling with OSS alternatives, if you have enough patience/time.

Anyway, feel free to ask anything.


Thanks for the info. I'm in a similar situation as OP and I think I can get this going without an issue.


I have a fitlet2(https://fit-iot.com/web/products/fitlet2/) that I use for hosting various services. It is fanless, 16G of RAM and 500G SSD. This is my NAS, and I am currently running:

- Jellyfin - Media Server for all my tv, music, and movies

- Nextcloud

- Photoprism - Picture Manager

- Yacy - Private Search. I run this in 'robinson mode' and basically use it to replace all my bookmarks

- Homeassisant

- Frigate - Monitors my cameras and does object recognition. I use Coral USB to move detection to hardware

- Snapdrop - AirDrop replacement

- FreshRSS - RSS Server

- Bitwarden - (bitwarden_rs/vaultwarden)

- Imapfilter - Filter/tag/run external software on incoming emails

- Vikunja - Task Manager

- Dolibarr - ERP Manager for side business

- Bookstack - Wiki

- Several Static Websites

- NFS (as a NAS)

Frigate takes the most CPU, even with the Coral, but it is doing object detection on several high-res Remote Cameras. Even with that, my load is < 1.

I run all these in docker (each that needs a DB has its own DB instance too), with nginx-proxy and letsencrypt-nginx-proxy-companion in front of it.

Most of these are internal only (I use the access=internal), and have an always connected wireguard VPN on my mobile devices and laptops. A few are public, but pretty low traffic.

I have a static IP, and am running this on DSL that is 30M/7.5M. My router is a netgear with DD-WRT installed.


This looks really cool. It's the first time I've heard of fitlet, and seems like exactly what I've been looking for to replace my old noisy server.

Did you consider any alternatives when putting together this setup? Or for others reading, are there similar fanless options to compare?


The primary other I looked at was an Intel NUC.

I also use several raspberry pi for some smaller iot things, but I find it is nice to have one decently powerful server to run a whole bunch of services on.

It also has two external 8Tb drives in software raid0 that I use for my NAS storage.


Neat setup, I've considered starting down this path as well.

With this setup, how do you deal with data backups, especially if multiple of your docker instances have databases of their own?


For each service I run, I have a volume for the persistent storage. For example: Nextcloud has a maria (mysql) db and a server. In my /opt/nextcloud I have a script for creating/updating the docker images. Persistent data lives in /opt/nextcloud/srv/{db,data}. I used systemd for management/dependencies (I don't use docker compose, just simple, single instances that are easy to recreate).

Everything is backed up daily using rdiff-backup.


Very nice!

How do you handle backup?

You don’t seem to me running RAID on the NAS?


Isn't it normally a bad idea to run a NAS without ECC RAM?


I think you're referring to ZFS specifically, and how it handles bit flips[1].

A NAS is an abstracted away concept from the OS or FS, so the type of memory isn't broadly relevant.

1. https://louwrentius.com/please-use-zfs-with-ecc-memory.html


There's a few ways.

Already have an old pc hanging out somewhere? Good - don't buy anything new. Run the HTTP services from there and set up port forwards in your router, and DNS with your domain registrar (or set up cloudflared as other commenters noted). You're done.

Step further, you can go with a RasPi or a similar SBC, but just be aware running with ARM can have its' own challenges.

I'd recommend a cheap x86_64 machine from ebay, such as an HP t730 plus thin client. Native SSD support, higher/upgradeable ram capacity, and better IO would all come together to make a better server machine. The RasPi would win out on a few points (power draw, memory speed), but in this scale it likely wouldn't be noticeable.

Lastly - don't be afraid of cloud services. A GCE/EC2/vultr/hetzner server can get you pretty dang far for just a few bucks a month. Also, this makes it easy to get some exposure to infrastructure provisioning tooling (I prefer Terraform and Terragrunt) and server configuration management tooling (I prefer ansible).


There are a lot of suggestions already, so I’ll just mention two useful communities: https://reddit.com/r/selfhosted/ & https://www.reddit.com/r/HomeServer/


I would go for a secondhand old laptop. Not only will it prolong its life instead of pollution by buying even more new machines, you have integrated screen and keyboard for debugging and a battery acting as a cheap UPS. Parts are easily found. x86, so no funny business with experimental builds.


Having a battery on your server does nothing for being a UPS for your website if you don't also have one on your source of internet.


> Having a battery on your server does nothing for being a UPS for your website if you don't also have one on your source of internet.

Having a battery specific to your server allows the UPS for your network to last a lot longer.

I use one of the 1500VA class desktop UPSes to run my home network, the largest variety normally sold for use with a 15 amp circult. It's good for about 30 minutes with my server turned on, or three hours just running the router, switch, and WAP.

If I were able to use a laptop as a server I could instead have the big brick doing just the network and then the "server" could get a few hours of runtime on its own.


>I would go for a secondhand old laptop

But only if you don't live in Europe, as old laptops tend to be quite energy inefficient by modern standards, and at the current energy prices, you'll see the difference on the yearly bills, between an old laptop and a new one running 24/7 in your house.

You can get chines barebones with modern quad core 11th gen Intel Celeron chips that sip power for about 150 Euros. The best part is that some are even flanless so they're dead silent and there's no more worrying about cleaning the dust from the fan every few months. Just chuck it somewhere out of sight and you never have to thin about it physically.


It's definitely not cheaper, but it's much better for the environment. It is clear today that digital pollution happens mainly during the production stage rather than the using stage.


Lithium batteries have a finite lifetime and I wouldn't want an old lithium ion battery hanging on the charger 24/7 in my appartment. Fire risk is too big.


Keeping the laptop's battery at 100% charge on laptops will shorten its lifespan considerably and they won't find out whether the battery has gone bad until the power goes out. Some newer laptops have charge limiting that can mitigate this but a secondhand laptop likely won't.


Get a cheap vps. Set it up as a wireguard server. Stick a barebones haproxy on it. Run it in tcp mode pointing at a wireguard client ip for the backend.

Pick some machine in your house. Make it a wireguard client connecting to the vps. Run whatever web server/app you want. Make sure your home router is running something like fq_codel.

Done. You don't need dynamic dns as your home client will just reconnect. Your ISP won't see any ports open because there aren't any. Your SSL certs and all data live in your house, not on the vps. There is nothing to backup at the vps except for yanking some logs.


> Stick a barebones haproxy on it. Run it in tcp mode pointing at a wireguard client ip for the backend.

If you have just one backend server instance, you could also use a DNAT iptables rule instead, which would have the advantage of not hiding the originating IP from the backend. Or am I missing something?


I'm assuming actual priority is keeping your home internet connection usable to your family. Easier to fail gracefully under configurable loads in the haproxy config. I'd rather enormous amounts of traffic never reach the house than try to handle it there.


That's a good point, thanks!


Is it public? If you host a high traffic site from residential ISP connection, your account could get banned.

Regardless, I would host an NGINX proxy in front of some docker containers. It’s the easiest and classic way to front apps with custom domains very very easily. Traefik is also very nice and fast (Go based) reverse proxy.

If it’s purely for personal use, then check Cloudflared to tunnel into your network and access it like a VPN.

Again, if it’s Public be weary of DDOS attacks, port scans, etc. Personally I wouldn’t self-host a public web app from my house and instead would use a 4/mo VPS from Hetzner


Man, you are way too afraid dude.

It's YOUR internet connection. Who's going to ban you for opening ports and running a server? I've been doing it with comcast for 20+ years.

Maybe not all my server traffic goes through port 80 or 443, but my server is also my torrent seedbox which is high traffic and just another port. WHATEVER.

My server is just a Windows 7 PC in the living room with no monitor, no keyboard, and no mouse. Only connected power and ethernet. I remotely control it with RealVNC and it's extremely stable. The only time it goes down is a power outage because I don't use a UPS.

I use it for a website (nginx/let's encrypt), Jitsi Meet, Mumble, Ventrilo, FTP, proxy (8080), and of course torrents. Not afraid of port scans.

I use a couple of DDNS domains that I give people but I can disable the public one I give to people and change my IP any time I want.

NOT VPN. NOT Cloud. NOT VPS. NOT pay monthly to someone. You can do it all yourself for free and have been able to for decades. Quit being so scared, cell phone generation.


Your mistake is thinking that it is YOUR internet connection. It's not. It belongs to your ISP. If it belonged to you, you wouldn't have to pay for it every month. A lot of ISPs specifically forbid running a web server from your connection. Comcast is one of them. Among their restricted uses they include:

"use or run dedicated, stand-alone equipment or servers from the Premises that provide network content or any other services to anyone outside of your Premises local area network (“Premises LAN”), also commonly referred to as public services or servers. Examples of prohibited equipment and servers include, but are not limited to, email, web hosting, file sharing, and proxy services and servers;"

https://www.xfinity.com/Corporate/Customers/Policies/HighSpe...

Just because you've been getting away with it doesn't mean the risk of having your account suspended isn't real or worth considering.


I haven't read the "terms of service" in years, but this was never a thing I'm familiar with. It was known that if you pay for internet, you can do whatever you want with it (well, short of violating federal law).

Why do you think routers have PORT FORWARDING in them? Is that just for fun? Think about it. I can go to ebay and buy Microsoft Windows NT Server 4.0 from 1996 and run whatever DNS or IIS server I want, however outdated it is.

It's absolutely absurd to think you have to pay to host things even though you have all the equipment and bandwidth to do it yourself. I only have 1000/42Mbps but I've got a friend who just got fiber in CA who has 10Gbit both ways. With speeds like that, do you think we're just going to upload Linux ISOs AND not RUN servers on all sixty five thousand ports?

Ha ha ha haooowww


So, you haven't read the rules, and therefore think you can ignore them. If you're lucky, your ISP will continue not bothering to enforce their rules. Personally, I don't like relying on luck.

Again, just because you've been getting away with it doesn't mean the risk of having your account suspended isn't real or worth considering.


> Your mistake is thinking that it is YOUR internet connection. It's not. It belongs to your ISP. If it belonged to you, you wouldn't have to pay for it every month. A lot of ISPs specifically forbid running a web server from your connection. Comcast is one of them

You're not wrong, but as far as I know there is no human on earth that owns "their own internet connection", everyone's network connects to an upstream network. Every upstream service has rules their customers must abide by.


> Quit being so scared.

Unfortunately not everyone may live in a region with multiple internet providers, such that they can switch to a different one if banned.


I'm not afraid. If it ever came to that, all you'd have to do is call up next day, same address, using your girlfriend's name and sign up for new service. Bet me.


> NOT pay monthly to someone.

You pay your internet and electricity, no?


An alternative to relying on your static IP (and all that comes with it, like needing a strong firewall and awareness/monitoring of activity there) would be to use the Cloudflared proxy/tunnel. https://github.com/cloudflare/cloudflared


Get a cheap USFF (ultra small form factor) PC. Its essentially laptop components in a small headless box. For the going price of a rpi 4 you could have an i5 or i7 with 8-16G ram and a proper SSD


These seem to have laptop-style fans in them - do you know if they can be run silently?


Fan volume has never been an issue tbh


I think the best home server is the 2014 Mac Mini because:

1) internal HDD can be replaced with cheap, big SSD

2) Computer is absolutely silent

3) everything in one package, no mess of cables

4) very reliable

5) very low power usage

MacOS isn't the best OS for running a server, but I'm used to it so I don't mind setting up launch agents instead of systemd units


There are a bunch of micro SFFs like it (Dell/HP/Lenovo etc) with 6th-8th gen i5/i7s) with the same power, noise profile and are $100 off eBay.

Much better value and power over a raspi.


ServeTheHome reviews lots of small machines like the ones you mention:

- https://www.servethehome.com/introducing-project-tinyminimic...

- https://www.servethehome.com/tag/tinyminimicro/


I wonder why noone except Apple manages to build a small device with an integrated PSU.

If you put them into a cupboard, those PSUs take almost as much space as the computer itself.


Seems like one issue would be that an older Mac device is not going to be able to run new software updates once it ages out and wont get new security updates once that happens.


Yes, that is true. OpenCore [1] allows a few extra years, but at some point the 2014 mini will be too old.

That being said, if you use the Mac as a server, behind a NAT/Firewall with only some ports open, use up to date server software, and don't use it to surf the web, then the security impact of using an outdated OS is minimal.

You could of course also just install Linux on it.

[1]: https://dortania.github.io/OpenCore-Legacy-Patcher/


Go with an intel NUC i literally wrote a script to alert me on raspi stocks and luckily found 4 of them 8Gb versions. Used intel NUC (I bought a beelink one which is so quiet) for much cheaper $130, and actually runs pfSense now. My dell 7080 bought used for $160 consumes like 5$ worth power in weeks and has 32GB of ram. Raspberry Pi is purely good for prototyping, or if you have any use for GPIOs. Else, the above options are far better for cheaper.


Had the same question a year ago, researched quite a few options. Ended up buying used micro server (Fujitsu Primergy 120 S3) for around £30. Then upgraded it with low power 8 core Xeon and slowly maxed out it’s RAM. Currently it runs Proxmox with a dozen of LXC containers, Go/Node.js web apps and static websites using Caddy, mostly for home usage, only a few exposed to the internet using free Cloudflared tunnels. It also has a few VMs with k8s cluster just for the experiments. Overall I am very happy with this small setup, as a frontend developer transitioning into backend development it helped me significantly to improve my skills. I also sleep well as I don’t need to worry about spinning up quite expensive AWS services incorrectly and taking a mortgage after just to cover my learning mistakes. The only downside, though is that now you need to setup backup and pay for the electricity a little bit more than what Raspberry Pi will cost. But it’s still much much less than the price of around 20 VPSs you might buy at Vultr or Digital Ocean per month.


Do you know what the average power consumption of this box is? It sounds like you may have found a sweetspot!


Haven’t measured precisely, unfortunately. But according to my average electricity bill growth per month it drains around 50W to 60W per hour. Mostly thanks to Xeon 1265L CPU.


Coincidentally, I was thinking about this about a week ago. If you look at my post history my career traces a pre-ipo FAANG where everyone knew how to spin up a service and connect it to the internet (think bootstrapping 101). I had a thought experiment last week where if I were to ask this to new grads entering FAANGs, the majority of them probably would not be able to elucidate the steps required.


Even someone who I know was wasn't a coder or that technical (but in IT) did it back in the day (early 2000's). I guess it was the changing the engine oil of the time. That said the new kids will know their SSR for their React Hydration better than me :-)


I host personal and semi-commerical websites/apps from home on a 500/500 fiber connection. The hardware is an older HP G1 800 SFF, which you can buy refurbished for ~€150, much more bang for your bucks than a Pi. Proxmox makes it possible to host many webservers and services on LXC containers. But of course, a Pi would work too :)

I have choosen to treat IPv6 as the default stack as I can point directly to the address from outside without any NAT. A reverse proxy handles all "legacy" IPv4 requests. My IPs do change once in a while, but I have made a little bash script that updates the DNS via my domain registrars API, works like a charm!


I just have an old Dell computer [1]. They are pretty small, quiet, has an SSD, and I do not need to fiddle in having everything compiled for Arm.

I would also put your app behind CloudFlare.

Also- if you are able to afford an intel NUC ($200?), and the app is low resources enough to be able to run on a Pi. You could also consider getting a VPS ($10/month).

[1] Something like https://www.newegg.com/dell-optiplex-7090-business-desktops-... - but older, and found on a local recycling center.


A pi is a viable solution up to at least a few thousand visitors a day, depending on how spread out they are. You will need to find a way to give your pi/NUC a static IP address though. Many ISPs will give you a static IP, then you can simply set up port forwarding for port 80/443 on your router and be off. If not, ngrok or a similar service can work as well.

That said, unless you have an ideological reason for hosting it from your own home there are many platforms out there that can comfortably fit most non-critical webapps in their free tier with even less hassle than setting up a pi.


"there are many platforms out there that can comfortably fit most non-critical webapps in their free tier with even less hassle than setting up a pi."

What are "the best" at the moment? (best being whatever metric one feels is relevant for this scope)


I use netlify for serving frontend assets and have used fly.io's free tier, supabase's free tier, and all the major public cloud free tiers (though the latter is the most difficult to manage from a cost perspective).


And fly.io has a special feature to serve the static files for you so you can do it all in one place without putting load on your app server. Simply need to specify what folder to look in for the static files in your fly config file.


With AWS you can host a very robust website using API Gateway, (AWS Lambda or ECS) and either RDS or DynamoDB for a datastore. All of this can come in under their free tier for a huge amount of traffic.


Think about security on your home network. If your publicly accessible webserver gets compromised, it can be used to reach your personal computers at home.

Or the other way round, which IMO would not be so serious (ie your already compromised personal computer being used to access your public webserver...)

You could try to isolate your webserver, but would need a dedicated router with specific features to do it (best being able to do VLANs).


interesting hint – what is the percentage of infected windows boxes again? 80%?


Pi devices are more than capable of running web sites and web apps. I'm running a somewhat busy SearXNG instance on a Pi 4, for instance. Just get self-powered USB attached storage and a Flirc case, and it can be completely fanless (so long as the storage is fanless), and you don't have to worry about your SD card wearing out.

Even if you don't get storage with its own power supply, you can use a "Y" USB cable for extra power, provided the same power source is used for the Pi and for the storage. This can have the added benefit of backfeeding power to the Pi, which, again, is fine so long as the power sources are the same.

While my Pi 4 is colocated, it has a Flirc case so it can run all four cores at 100% without ever having thermal issues, and the two USB attached disks are mirrored (raidframe), and it has been 100% stable for many, many months of heavy use.


The Odroid H3 looks nice if you want x86_64, fanless, and reasonable pricing for that. Probably overkill for hosting a website, but perhaps you want to do more later.

https://www.hardkernel.com/shop/odroid-h3/


"How thick does my rope need to be?"

I serve a website for my 3D printers from a Raspberry Pi (some are 3B+, some are Zero-W). It's just for "the set of people in the house who use the 3D printers", so the Pi is fine and obviously a viable candidate.

I have an ESP32 (or it might be an ESP8266 even; I'd have to look) that serves a status page for the boiler and near-boiler temps. That's also in-house only, but even that's on the slow side. https://imgur.com/a/JmeXYnj

What is the load this site is expected to serve? To what visitors? How static/cacheable is it? For me, an RPi goes a long way for anything in-house. Out of the house traffic, I'd look at a cheap VPS pretty early in the journey.


A drawback of the Pi 4 is that if you want to do RAID with USB hard drives, I found that you need a separate powered USB hub for each disk. That's (A) to give them enough power (although I used spinning disks, it may or may not be necessary for SSDs), and (B) I found that when I had them on the same hub or on the Pi directly, when one disk went down, it would lead to the other disk becoming inaccessible as well. It seems with separate hubs, that's not an issue. (Don't ask me about the technical details why that might be so, if you know more and can explain that I'm wrong, go for it, it was simply the result of my experiments (with an n of 2 or 3 or so), and does make sense in that there's more electronics between the drives to shield, and it's indirectly addressed so maybe the kernel is less confused, whatever.)

My current setup with two hubs has been working reliably so far, but in spite of it all being USB3 it's still not that fast (about 100MB/s serially top--I'd hope that the 3.25'' disk drives (new 4 TB drives, WD Elements 2620 and Seagate Basic STJL4000400) could do more, but maybe I'm wrong). So for my next tiny servers / appliances, I want to try either of the following instead, which have SATA which should be more reliable and faster:

https://www.pcengines.ch/newshop.php?c=48881

https://www.olimex.com/Products/OLinuXino/Home-Server/LIME2-...

Also, since Pi 4's are unobtainable here (Switzerland) currently: the Tinker Board 2 seems to be a bit faster than the Pi 4, and it has its wifi board as a plug in board, and I have been wondering if that can be replaced with a SATA interface, but haven't investigated.

Edit: seeing achairapart's comment, I realize that going directly from USB to SATA and then attaching disks there might have been a better option.


You can use a RockPro64 and set up USB boot to avoid the headache of SD cards.

https://wiki.pine64.org/wiki/ROCKPro64#Booting_from_USB_or_P...


My server is literally 2 meters behind me (yes, I mind the noise, don't cohabitate with full depth 4u machines, on the other hand it does help with heating this winter..)--

Static IP is most difficult, if you got that, you're good to go... If your website or app is light enough, sure, go with a pi4 or similar, don't put a fan on it, maybe a nice enough heatsink (use real thermal glue, NOT adhesive tape, some of the cheaper stuff actually melts and the block falls off).. Consider a 3 way router, like an edgerouter lite, so you can have a DMZ for the "server" so that if someone decides to visit, they're isolated from your other LAN machines.


Depends entirely on how much power you need. Pi is fine if you don't need much, NUC is good if you need something more and, from my experience, can run comfortably with the fans off if you don't mind capping the CPU frequency a bit.


I don't know how experienced you are. Yes, you can host "a website" on a Raspberry Pi, even on something tiny like the Zero W. It all depends on your needs, a Pi 4 (if you can get a hold of one) is a great option!


I've used the Pi (both a 3 and 4) as a temporary server when moving (read: leave the old server up at home until move-day, while placing a Pi in the new home, configured to take the www load normally pointed at my old server. I'm hosting 14 sites from home, none of which are high traffic, but under those circumstances, the Pi held up just fine. Once move-day comes, I'd make the DNS change to point at the new Pi, pack my stuff, move, then reverse that process once I've brought the old server back online.

I'd say unless your web app is resource-hungry, the Pi is totally viable as an option.


Even an pi is basically in the same performance range as the average lowest tier cloud vm so if your considering something bellow say a aws t2.medium to be enough then your only real concern is if your app is iobound enough for the sd card to be a bottleneck and it's very likely that your app is not.

If you want to go with a more traditional x68 any of the many intel n4000/n5000 series systems being sold on aliexpres and similar sizes by no name brands as firewall appliances or network something do support modern m.2/nvme storage.


Yes absolutely a Pi is likely plenty assuming it's fairly light load. That said, if you prefer x86 you may have better mileage using an older thinclient or perhaps even something like the ODroid H3 (or frankly any old laptop).

Just be sure to have a decent backup system in place as consumer grade equipment like the above may fail rather abruptly with little route to recovery.

Edit: you may want to check out Jupiter Broadcasting's Self-Hosted podcast. The show is very much geared towards DIY enthusiasts/small businesses.


Is the carbon footprint better if I host my own RPI instead of using a cheap virtual server somewhere ? Having a Raspberry on all the time will consume some electricity I gues...


If you use a cheap recycled server you will be running in years old computers. If we compare that to buying something (including building and transportation) I bet that RPI have higher impact.


this depends on your datacenter i would wager.

If the energy of your server is green and the heat is reused, as some modern datacenters do, the only concern becomes EOL of hardware and how quickly they change it.

Otherwise, yeah, shared cloud vm is always more economic than single hosted hardware of any kind.


Any particular reason why? You can get a free VPS in many places, for example: micro instances on AWS free tier, Azure free tier, etc. I don't know if they give you a unique static global IP, probably not. But as another commenter said, you can proxy it to Cloudflare with their free service with cloudflared. That will protect you from others knowing your home IP and general location, and also you don't want DDoS interrupting your home connection.


> AWS free tier

Maybe I'm wrong, but I thought AWS' free tier only lasts a year. Then you have to tear everything down and spawn a new account and re-upload and re-configure everything, which is burdensome?



I don’t know about Raspberry Pi, but I went for the familiar Intel/Linux setup: mini-ITX computer, fanless, similar to Intel NUC but bought off Alibaba, 4 GB memory, reasonable 256 GB SSD, 4TB WD passport, synced to my OneDrive account. I replaced big noisy NAS setup with this and it has been great and working for many years now. I do not host any public facing web server though and connect to it only through VPN (being hosted on the same computer).


Check if your ISP allows this. Some ISPs forbid self hosting.


Raspberry Pi is hosting their own mastodon instance on one, although it's slow as hell right now, but obviously they have a lot of hits.

Security is a bigger issue IMO though.


I have experimented with many small form factor servers over the years. A Pi3 or 4 should work fine, but you as others have said you are limited by no SATA, source your own power brick, and source your own case.

My most bomb proof SFF servers are a fit-pc3, still running since 2014, and a lattepanda alpha, which has been running for about 2 years. Of the two, I’d choose a fit-pc3 or whatever the most up to date model from compulab currently is.


If your web app is not very heavy you can use a Rpi to serve it, else get something more powerful. Either way I recommend:

1. Having a no break with surge protection: I have my router and Rpi connected to a no-break, so even if the power goes down my site stays up.

2. Configure port forwarding in the router: I forward port 443 to some higher port, so in the Rpi I don't need root for anything.

3. If your traffic is very high consider getting another internet link.


You could also take a look at used fanless thin clients from HP and such. Cheap, totally silent, still fairly low electricity consumption but more power.


if you're just serving a static site you could probably serve it from a toaster


any toaster in particular?


Preferably one with NetBSD support


Most home broadband connections aren’t that good with upload bandwidth. I would suggest something like https://lowendbox.com. You should be able to easily get yourself a cheap server for 1-3$/month which would come with Linux, public IP ,x86 cpu, proper SSD and good bandwidth. It would also have much better uptime.


i have been pondering the same lately because my internet got upgraded and so far i decided against the pies because of resiliency.

My go to setup plan right now is 3 8 core 16 thread mini pcs because they dont use anywhere near as much power as a full setup and still allow me to run a small kubernetes cluster.

My main reason for the cluster is not because its fancy, but this way i can actually update my services without downtime and the underlying machines too.

As other have mentioned, make use of cloudflare and the different services it provides and you shall have a simple secure setup that can handle a magnitude of loads.

As for the app: the true enemy will be rate limiting for you. But if you decide to take a frontend that is chacheable by cloudflare you should be golden with a queue based setup. Pingdom does that perfectly for instance with their speed tests for websites.


Any of the microcomputers are perfect for hosting a web app from home, you don't even need a static IP, you can use some kind of dynamic DNS. One thing to keep in mind for a write-heavy application: it will fry an SD card, so you should use an SSD attached to it instead.


What's your goals for the project? I mean it's obviously possible, the question would be why?


Yes this would work.

There are a lot of alternative SBCs to the Raspberry that are easier to find these days.

If you plan to use the SDCard make sure you do not write logs to it or that you change it regularly. I recommend that you mount a harddrive/ssd or usb stick for the logs if you really want them.


Concerning security: look into Traefik or Nginx Proxy Manager to proxy from your server to your domain. Then, attach a Cloudflare proxy to your domain so people won't ever know your home IP. Only expose port 443, and I think you're okay. Happy to hear otherwise.


A lot of NASes can host web sites. My Synology NAS is just a computer without a monitor.

I know it's point-and-click to run Apache on it. (I personally haven't set it up.) At some point I might try to set up NodeJS to run some blog software I wrote between jobs.


My experience with Intel NUCs (but that's not recent models) is that they are very quiet as long as you don't push them, but super noisy if you push them. So I'd stay way from NUCs in a living room unless you are doing low power stuff.


You could probably even host on an old phone if you really wanted to, at the end of the day it doesn't matter what you're hosting on but how you're managing assuming internet speed and hardware latency aren't an issue.


Considering that your system, power supply, storage and connection won't be redundant, I would not recommend this if you want the website to have decent uptime.

The cost of a Pi would likely also pay for a decent low-end VPS for a years or so.


I know, but (1) it's not critical, and (2) come on! It's so fun and so web1, and I have a static IP! :)


I have my old computer doing this, it replaced a rpi in 2017. I now run a proxmox node on it, and one of the VMs serves https://poggers.website


That app depends how good your internet/power is. But between most ISPs giving poor uploads and remote chance of someone deciding to be ass and DDoSing my IP I eventually opted in for VPS.


As a slight variant of this question - how would you host a production site from your living room? Assuming you have a static IP and a business account.


If by "production" you mean it's something you intend to use to produce revenue, then you absolutely shouldn't until you've evaluated and exhausted all of your better options.


Though I personally wouldn't do this, why not? There are places where business gigabit internet is plentiful and weather is stable so power outages are very rare.

Find three of said types of places and run kubernetes and you're good, no?


Get a second redundant power line, battery backup for a couple days, multiple independent internet connections, ....?


is it even feasible to have a redundant power in a regular home? the rest is easily doable, though.


Yep. Most electric companies will be more than delighted to run a second line to your home, as they then get to collect those sweet installation costs from you. So if you're willing to pay, they're probably more than happy to let you.


I don't see how that would be redundant though, wouldn't it be just as likely to fail for the same reason the other line does?


personally i would go with some silent and cheap system: an existing old pc, a (cheap) ITX-board which already includes a CPU or a raspberry with enough ram and external storage for data.

btw. i recently watched a video, in which the creator compares different used smaller formfactor pcs from ebay

* https://www.youtube.com/watch?v=rXc_zGRYhLo


I have a mini PC (some 2010s HP Elite Desk) that runs Proxmox. You could easily have multiple VMs going on the quiet device in the corner.


While you're not concerned with uptime an old laptop isn't a bad way to go: built in battery backup!

As far as exposing to the net, ngrok seems cool.


> While you're not concerned with uptime an old laptop isn't a bad way to go: built in battery backup!

That is a sure way to kill off the battery and a fire risk as well. Laptops aren't designed to run 24/7.


Is this true? My laptop has been on 100% of the time (although usually asleep) and also plugged in much of the time since I bought it in 2014.


I doubt it, as I n++ your n=1 by experience, but also since I think it shouldn't be hard, electronics wise, to stop charging once full (or even, optionally, 80% / 90%) and fully run on AC as long as it's available. Also I'd say this is an apparent user requirement for laptops.


Battery vendors generally recommend you do not keep them on a charger all the time since the charger will keep it at 100% charge, and the longer a battery is at 100% charge, the more degradation it will experience for electro-chemical reasons. Sooner or later, that can lead to battery swelling and eventually a catastrophic thermal runoff.

Additionally, keeping a laptop shut and running usually messes with its thermal design as the heat can't escape to the top via the keyboard, further heating up the battery.


Most laptops in the last few years have an option to not fully charge the battery if it's going to sit plugged in. I know this option is available on Dell, Asus, and Apple laptops. I assume others have it as well.



Why are you asking instead of just doing it? Nobody else knows what is the exact workload you intent to put there.


> my side project

You have a lot of options here that don't involve hosting a site from your own living room. Try looking at these lists for ideas:

https://github.com/jixserver/free-for-dev

https://github.com/ripienaar/free-for-dev


a RPI 4 is a more powerful machine than most website servers were in the 00's

serve a lightweight static website from RAM or a well-optimized webapp and it will handle a decent amount of traffic


You folks arent worried about fire hazard?

I'd probably never pick having some device running 24/7 when there are 3$ VPSes


Unless you unplug everything when not in use, you already have a dozen fire hazards at home. A PC that's powered off still delivers power to a bunch of components like the Intel ME, or nic for WOL; your TV, dish washer, washing machine, fridge, Alexa, smart hub, router, PlayStation 4 have some soc running 24/7. A pi is probably very safe, I've never heard of one going up in flames just like that. It's much more likely the USB charger it's running off will blow up of it's a cheap one from Walmart.


Also worth investing in a surge protector device if you're worried about your electronics getting fried due to electricity surges.


>Unless you unplug everything when not in use

I do


I thought the same as you for a long time and have a new fear for you:

You know that water pipes are in those walls too?


Hehe, you have so many things running 24/7 in your house already. Refrigerator, freezer, heating system, laptops in standby, printers in standby, routers in standby or active 24/7, HVAC systems etc.


Why?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: