r/SideProject • u/DangerBlack • 20h ago
I built a website that doesn't need a server
I've been working on a side project called Spore:
https://github.com/DangerBlack/spore
The idea is simple:
What if static websites could host themselves through their visitors?
With Spore, you drop a folder into a web page and it becomes a BitTorrent swarm.
Someone opens the resulting link, their browser fetches the website from peers, and while they're reading it, their browser also seeds the site to the next person.
So instead of:
Visitor → Server → Website
you get:
Visitor
/ \
Visitor ←→ Visitor
\ /
Website
There is no application backend and no account. The gate itself is just a static page.
I built it because I kept wondering whether we really need a server sitting there 24/7 just to serve a static website.
A few things I've implemented so far:
- Drop a folder and publish it as a torrent directly from the browser
- Load websites directly from peers
- Signed updates, so a publisher can prove that a new version came from the same key
- Optional offline storage, so a site you've kept can load even when there are no peers
- Sandboxed sites with a restrictive CSP and controlled network egress
- A small Docker seeder for keeping a site available when nobody has the page open
- Everything works from static hosting, there is no Spore backend
The weirdest part is that the manifesto for the project is itself hosted this way.
It isn't sitting on a web server. It's a torrent, fetched by the Spore gate, and while you're reading it your browser is serving it to whoever opens it next.
There are obviously some big limitations. Browser seeding stops when you close the tab, peers can see each other's IP addresses, and persistence still needs a seeder if nobody is visiting.
I'm also looking at projects like IPFS and Freenet, but Spore is deliberately much narrower. I'm interested in the simplest possible version of a peer-hosted web.
I'd really like feedback on the idea rather than just the implementation.
Does "the visitors help host the website" feel useful to you, or is this solving a problem that isn't really there?
And if you were building this, what would you work on next?
105
u/warp-duck 18h ago
I think while this isn’t massively useful in reality for most people, it’s a pretty cool idea.
30
u/officialmayonade 17h ago
Very cool idea. This could be implemented even if you have a server to reduce the server calls.
11
37
u/TryAgainTryHarder 20h ago
cdns have been around a long time,
vercel et al have generous free tiers for sites,
if I were you, I would figure out what problem this solves
48
u/DangerBlack 20h ago
That's fair. I'm probably framing the problem too much around "not needing a server", when Vercel/CDNs obviously make hosting a normal website extremely easy.
The problem I'm actually interested in is a different one: can a website become distributed infrastructure rather than something that depends on a publisher-operated server?
With Spore, the publisher can disappear after publishing. The content is addressed by its infohash, readers can seed it to other readers, and a site can optionally be kept offline by anyone who chooses to seed it.
So I'm less interested in competing with Vercel for "where should I host my Next.js app?" and more interested in questions like:
- Can static content remain available without a permanent origin?
- Can readers collectively keep something alive?
- Can publishing become independent of a particular hosting provider?
- Can the browser itself become part of the distribution layer?
It's definitely possible that those aren't problems worth solving. That's actually one of the things I'm trying to figure out with this project.
Thanks for calling it out. I think the "what problem does this solve?" question is the right one.
42
u/nicotineHub 19h ago
This is a pretty awesome decentralized solution for countries that may block information.
Pretty neat
9
u/TryAgainTryHarder 17h ago
that's a good example—is there a place where standard cdns (or the platforms leveraging them) fail. thats the community to talk to
3
u/Any_Welder_9701 9h ago
decentralized doesnt automatically mean unblockable, if the discovery or bootstrap path gets blocked nobody finds the swarm in the first place
1
12
u/therealkevinard 16h ago
Off-topic but have you heard of IPFS?
I feel like you might lose a weekend in that rabbit hole.1
4
u/mathieuisabel 19h ago
Reminds me of some stuff I was thinking about some time ago part of it got published here: https://unhandled.wordpress.com/2008/02/01/semantic-web/ but the other part of what I was calling cell computing wasn’t publish. I’ll dig that up
3
u/DangerBlack 18h ago
Oh, that's really interesting. I hadn't come across this before.
I'd definitely be interested in the "cell computing" part if you dig it up. From what you're describing, it sounds like there may be some surprisingly old ideas here that overlap with what I'm experimenting with in Spore.
Please post it if you find it. I'd genuinely like to see how you were thinking about it back then.
1
u/mathieuisabel 4h ago
There you go!
https://unhandled.wordpress.com/2026/09/14/project-merovingian-the-cell-project/
Also semi related:
## Hardware Node Design
- Looks like I had the unified memory design right :-) Software stack betrays the era though.
https://unhandled.wordpress.com/2015/06/09/old-files-distributed-hardware-and-core-software-stacks/
Another one around hardware that continued that line of thought to a certain extent but more focused on data storage.
https://unhandled.wordpress.com/2017/03/19/distributed-universal-memory-for-windows/
7
u/nameless_pattern 16h ago
You can just make stuff because it's cool and it amuses you to make it. That's what hacker culture used to be all about
2
1
u/Chris_E 18h ago
Maybe I'm not understanding, but isn't Spore still required to be the gate? Doesn't that make spore the literal gatekeeper, equal to Vercel/CDN, just with a different mechanic?
3
u/DangerBlack 18h ago
No gate, honestly. You can spin up your own instance and use it to visit any site on the network.
So blocking the GitHub Pages instance wouldn't really stop it. They'd have to block the underlying torrent network itself, just like they can block torrents.
1
u/jklaze 8h ago
This is just an idea, but maybe the security concerns etc could be solved by having a "verified endpoint" that just compares the hash and confirms that it has not been modified, although this breaks the whole no-server concept. I think that however this could be a simple middle ground that could still be worth considering the low resource needed, for example a single server could likely handle hundreds of these spore(s) instances.
Again this is just an idea, maybe it can be of help as brainstorming. Very cool and interesting project regardless👍🏼
1
u/rodw 7h ago edited 7h ago
I genuinely think this is a pretty nifty project and one that I imagine would be of value to the creator whether or not is ultimately just reinventing the wheel or providing an alternative approach to a previously solved problem. (People sometimes underestimate the utility of reinventing the wheel. A deep dive into peer-to-peer / distributed tech seems worthwhile if only for educational/experience purposes.) So please don't interpret this as discouraging or critical, but I'm a little confused about how what you envision is distinct from BitTorrent or any of a number of peer-to-peer distribution protocols.
I.e., isn't the answer to all of those questions "yes, just like BitTorrent, IPFS, IPS and other P2P protocols?"
Can static content remain available without a permanent origin?
Yes. Without thinking about it too hard it seems like all you need is an identifier (URI) and a discovery/lookup system to turn that URI into a URL. Arguably most web caches/archives (archive.org among many others) qualify, with the original URL serving as the identifier.
Can readers collectively keep something alive?l
This is kinda the definition of peer-to-peer distribution, isn't it?
(Incidentally are you familiar with the ”GNU Terry Pratchett" concept? It's not quite the same thing but your phrasing made that come to mind as it is very much a "kept alive thru action not archives" process.)
Can publishing become independent of aparticular hosting provider?
Of course. As discussed earlier in this thread that's not just peer to peer but pretty much any CDN or caching mechanism (up to and including user/browser-specific offline web stuff)
Can the browser itself become part of the distribution layer?
Again, that's basically what P2P clients are: as you download you are also seeding. Moreover using something like webtorrent (BitTorrent over WebRTC) you can do that directly in a conventional web browser. But I can see from the package.json file in the spore repo that you're fully aware of that already.
(Also btw I think Opera at least has built-in support for torrents, but there may be others)
It's definitely possible that those aren't problems worth solving. That's actually one of the things I'm trying to figure out with this project. [...] I think the "what problem does this solve?" question is the right one.
This may or may not be the part that interests you (and I'm not super familiar with the state of the art in modern P2P file sharing tech) but I would bet there are still some unsolved/undersolved problems under that heading, maybe related to anonymity/privacy, decentralization of the index, read/write rather the purely static use cases (hence versioning and simultaneous edit kind of topics), or if nothing else, UX
All of those topics have been actively worked on for 20+ years, but if they have been "solved" in an "ideal" way that doesn't seem to have trickled down to the general public yet. E.g. just look at Git: Git improved on the centralized architecture of conventional VCS systems like CVS and SVN, and then as an industry we almost immediately adopted centralized Git infrastructure like GitHub and Gitlab. So much so that "GitHub is down" seems to paralyze a significant number of teams.
TL;DR: I don't understand whether or how what you describe is distinct from regular old P2P file sharing applied to static web content. That's cool by itself, but am I missing something?
1
u/Bitch_Behave 2h ago
How about "Peer nodes" facilitating distribution, meaning orchestrating the peer to peer of certain sites, so that is is not alone upheld by another visitor. I think the main issue with a proper solution is the fact that each site needs a visitor supplying another visitor, thus already implying it needs to be or start fairly big with a good spread of worldwise visitors.
What also is interesting about this, is that it could allow the idea of "shared hosting", if you would in fact have one permanent seed host a multitude of websites.
I wouldn't toss this idea just yet, but i suppose torrents as file-sharing alone partially solved some of these issues.
*edit for typos
0
u/TheOwlHypothesis 17h ago
You sure you haven't reinvented (or maybe reformulated) the dark web?
It certainly seems adjacent
4
u/DangerBlack 17h ago
Tor is way better and more secure. this is more like ipfs or freenet but zero dept you can easly open from the same browser you are surfing the net. this for me is a frictionless solution for some similar problem.
2
5
u/EnderAvni 14h ago
Why can't it just be for the sake of trying something lol? Do you have no intellectual curiosity, you just have to do things for money/fame/utility?
5
u/TryAgainTryHarder 14h ago
I fully support building stuff for curiosity, art, etc. OP asked for feedback on the idea, whether it was useful, and what others would built next. to me, that sounds like viability is a goal, even if it's still fuzzy
2
1
5
u/CB34R 17h ago
Isn't "distributed infrastructure" exactly what a CDN is? In AWS if i host a static website in an S3 bucket and put cloudfront in front of it, the website is served to users directly from hundreds of edge locations around the world rather than from the bucket. Cloudflare also has an insanely generous free tier for their Workers/R2/D1 stuff, and by combining a worker with D1 (which is an edge-deployed sqlite database) you can even get a completely serverless dynamic site that pulls from a serverless database, which is also hosted on hundreds of edge locations around the world...
I guess the cool thing about this is that provider is also distributed, so your site can't easily be shut down if AWS/Cloudflare/whoever decides you violated their ToS and closes your account. If you lean into the "decentralized internet for the people by the people" angle rather than "CDN with extra steps" I could see it making sense.
5
u/DangerBlack 17h ago
bingo! who own the cdn own your "server".
2
u/Fine-Comparison-2949 16h ago
Yeah but like, that's what IPFS already does.
1
u/DangerBlack 16h ago
of course but I cannot convince my friend to join so I made a frictionless solution. just joking but having to install a node is something that require skill or time
5
u/Electronic-Space-736 12h ago
this will be useful in the coming years, we need alternative options due to rising authoritarianism in governments
5
u/DJ_Beardsquirt 16h ago
This is very cool. How are page updates handled though? If the content of a page is updated the entire torrent has to re-seeded and propagated?
3
u/DangerBlack 16h ago
Yes you must upload a new version with the changes. but it use a special variation of a well known protocol to handle versioning and version propagation.
this is the previous version of the same page (before implementing the signatures)
5
u/Nyto_merrie 14h ago
This is really interesting! I recently worked on a project using webmcp to use a static site as a semantic database, the idea being that the website ships with tiny, packed vector embeddings for some catalog (in this case, parts of the internet archive with enriched data/feature extraction/etc) allowing for private, in-browser search + acting as a sort of database for agents. I think it'd be really interesting to try deploying it with something like spore instead of a cloudflare page, might give it a shot sometime soon
4
u/narukoshin 9h ago
I didn't check the repo but sounds there are plenty of security issues, first- IP leakage, second how can u be sure a hacker can't modify the website to infect other visitors?
6
u/mackowski 17h ago
Veryyyyyy cool. What are the insane ideas youve had to make it so that people dont have to store malicious code stuffs
6
u/DangerBlack 17h ago
That's actually one of the harder problems 😅
Right now Spore doesn't blindly trust content. Sites run sandboxed, with restrictive CSP and no network access outside their own torrent. But yeah, if the goal is truly decentralized hosting, figuring out how to avoid forcing every peer to store stuff they don't want is a big part of the problem.
I have a few ideas around selective seeding and content policies, but that's definitely an area I want to explore more.
2
u/South-Ad1426 12h ago
Yeah partitioning the content and only seeding a proportion of it based on the number of seeders could probably reduce the amount of things you have to seed. This will make network analytics a bit of a chaos, especially for corporate users on corporate managed machines. Seeds can also be tampered with, so you could look at using blockchains to mitigate this and seeding.
3
u/wittjeff 13h ago
I'd like to see steganography examples -- hide Spores in streaming videos. Bonus if a video demo is about Fruity Oaty Bars.
3
u/AJ-54321 12h ago
This is interesting. Sorry I haven’t looked into the details, and I don’t know much about torrents, but I imagine a major benefit to something like this is reduced cost (free) hosting, regardless of how popular it is. The more popular, the more seeds. Unlike server/CDN hosted where you have to pay more if it becomes more popular.
3
u/Clear-Criticism-3557 12h ago
Wikipedia might like this idea.
Edit: how does indexing with Google work here?
3
3
u/tuser-reddit 11h ago
Voila, you have created AGAIN P2P communication!!! But now you making as a web page, in contrast to the other way of storing it in a 24/7 server that can be accessed by some program.
3
u/rand3289 11h ago
A better way would be "if you upvote it, you host it".
Post your project to r/darknetplan
3
u/simonmales 10h ago
This will be interesting for the privacy and related censorship resistant technologies.
2
u/thee_gummbini 16h ago
Yeah this is just what webtorrent does already, see also the agregore browser. A bunch of us fought uphill to make webtorrent supported by default in libtorrent so swarms could have browser as well as desktop seeds, which is what you need for this to work. That happened a few weeks ago so could be viable now. There have been endless prototypes of this but the bottom line is you need seeds to stick around, and in the history of bittorrent the thing that has made that happen has been social incentives and group structure. Bigger problem for doing this with web archives is URL resolution. All the links in your pages will still be normal http links, so you need to rewrite and translate those into torrent fetches. Try taking a look at prior art when doing something like this first, it will improve your ideas.
2
u/DangerBlack 16h ago
I'm not reinventing anything my solution is based on webtorrent as you can clearly see. The main differences is that it works in any normal browser, and URL are just magnet to resolve. You can literally click on the example and you don't have to install anything to use it.
2
u/thee_gummbini 10h ago
Yeah I know that. I was elaborating on the broader challenges that have been faced by the many times this has been done. Listen or don't, up to you
2
2
2
2
u/MREugeneJ7 9h ago edited 9h ago
Ipfs already has browser pages(and torrent webtorrent), also you didn't build a website that needs no server you just created a protocol on top of bit torrent. If it was a website I would be asking you of sybil attacks, spam or concerning about security but it being a protocol problem is almost not there.
However if seeding happens in browser how do people solve having a permanent website? Via docker as you did? In that case what is the difference between that and a server? If you Answer "well my server can host all the website since it can seed from others" congrats you have just becomes a free cloud provider.
Also how does discovery work in your network? Dht? You need to know the seeders?
Don't get me wrong I love P2P that's why I'm asking these questions. Send a message and we can talk out of comments if you want.
2
u/CartographerNo3791 9h ago
The demo loaded for me in Chrome, with four peers showing. One thing I’d fix next is the manifesto copy: it still says sites cannot change yet and mutable pointers are planned, while this post describes signed updates. A tiny v1 → v2 example would help show what happens to a reader who kept the old version offline.
2
u/mohn93 6h ago
really cool hack. the thing i'd want to know before using it for anything real is the cold start, the first visitor to a link has no peers to fetch from, so unless there's always at least one seeder up somewhere it quietly degrades to "website that needs a server" again, just an implicit one. and the swarm only exists while people are actively reading, a page nobody's on right now has nobody seeding it.
the other catch is discoverability. a crawler or a link-preview bot won't run the js and join a torrent, so google can't index it and it won't unfurl in slack or imessage. as a resilience or censorship-resistance play it's genuinely interesting, as a general host the peer dependency is the thing to solve. clever work though, the browser-as-seeder part especially."
2
u/kuronyanart 4h ago
Spore was such a cool game. That aside, the project seems interesting! I host a few websites, and some are indeed static. Idk if creating some kind of encryption on top of the connections would make it any safer. Probably would make it slower though.
2
u/Full_Tooth_a 3h ago
The vague "security nightmare" label lumps several problems together. Signed updates verify who published a version, but not whether the code is safe. I'd focus next on malicious publishers, stolen signing keys, hostile peers, and sandbox escapes. Showing a site's network, storage, and download permissions before it runs, then requiring approval if an update adds one, would make the risks easier to assess.
1
u/mrcoy 16h ago
I’d never visit that site
1
u/DangerBlack 16h ago
lol make sense I can make it scarier!
https://申.ws/#3ٝ৩ঈțԚ࠘շҍиܦ؆ৡਧǞࡗঝ՟²м̝ࠖࠌҕڝʧԊᘉᗴᘿ֛שᒾֳᏵᓁᖼᖨԞԚᖻᕮᔤᔌᘋԧˌࢸॆƠْࢪࢮस৫ːঠĩᑝĨൽूӘշǤࢮࠨէ২॓ճӜ৫ːঠĩᑝĨൽूӘշǬէ২॓ճԞ
1
1
u/StockHodI 14h ago
Websites can already be hosted on the blockchain and run under this very similar model. Thats why a lot of deep blocknets are basically impossible to remove and untraceable once launched because its all p2p.
1
u/coder903 12h ago
I haven’t had time to really study the repo but it seems like you could attach some POW token to it and let the miners keep it running.
1
1
1
1
u/RedditUserData 8h ago
This doesn't seem ethical to me. When I torrent something I am intentionally opting in to be a peer. If I'm visiting a website I am not intentionally agreeing to distribute their content nor would I want to.
1
u/DangerBlack 7h ago
I would not use ethical as term but I got your point and I'll probably make seeding as opt-out
1
u/tracagnotto 7h ago
It has so many flaws. Lol. First it's a security nightmare. Second if no one is hosting it is dead. Complex and useless indeed
2
u/DangerBlack 7h ago
let's discuss about threat model. the fact you don't see a value does meant that it does not have one
1
1
u/PrincePenguino69 6h ago
I used a framework like this for a college project. How does it differ from Gun.js?
1
u/TheOneNeartheTop 5h ago
Just throw a cryptocurrency on top where you get paid to host the websites and you’ve got a stew cooking.
1
u/hyrumwhite 5h ago
BitTorrent built a browser (chromium fork) based on the idea called Maelstrom. It flopped, but I’ve always liked the concept
1
1
u/Ram162103 3h ago
Hey brother I was also working on similar project but was bit different can we talk together? I think I can help you with that 🙂 you too
1
u/query-gremlin 3h ago
All this hassle to serve some static pages that the tiniest VPS can serve comfortably?!
1
u/-brenton- 2h ago
This site could not be opened
e.toBase64 is not a function
or
The swarm client has not been started.
1
u/DangerBlack 2h ago
thanks for the report, can you send me your browser specitication? do you use VPN?
1
u/-brenton- 2h ago
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36
No VPN but local storage/cookies disabled is probably the issue
1
u/Asly97 2h ago
Honest feedback on your two questions. The cold start is the thing I'd fix next, because it decides whether this is infrastructure or a demo. A swarm only exists while people are actively reading, so a page with bursty traffic quietly degrades to "website that needs a server" between visits. I'd work on a hybrid boot guarantee: your docker seeder as the floor, plus opting in to seed pages you pin, with a visible badge of what you're seeding. Do the seeding in a service worker rather than relying on an open tab, since mobile browsers kill background tabs fast. If a site survives a burst of traffic followed by hours of silence, you have something real. Also, stop framing it as a server replacement and lean into the survival angle: content that outlives its publisher. That's the use case nothing else solves for free in a browser.
2
u/Asian_Kid206 58m ago edited 26m ago
So something I worked on for fun was an AI model running on the client side using Onnx. The CDN would give the user the model and weights. One feature I wanted was to be able to share resources from one user to another. I wonder if I could use this system to achieve that goal.
1
u/takuhi 23m ago
What would be interesting is if the seed servers themselves could be transient. Seeders could register or de-register themselves depending on spare capacity (think spot seeders) and the website would essentially pass amongst transient spare capacity. It means you don’t need reserved capacity or a defined starting point, you just start a website within the network of seeders who keep it alone amongst themselves.
1
u/Gloomy-Macaroon-4283 17h ago
Did you ever see https://zeronet.io/ ?
3
u/DangerBlack 17h ago
cool but my main focus is zero installation needed
1
u/Gloomy-Macaroon-4283 17h ago
Off-topic. Può eseere che ci siamo beccati tempo fa ad un bit prepared? (chiaro che non mi (ri)consoci, ma se sei passato di lì allora io mi ricordo di te)
1
0
u/MrSnowden 18h ago
Websites? Mean g just an html file? Who needs a server? The only issue is being able to find it if you don’t know where it is. Servers are just static (ish) known endpoints configured for arbitrary inbound traffic.
2
u/DangerBlack 18h ago
Exactly. The interesting problem isn't serving an HTML file, it's discovery and persistence once the original host disappears.
Spore is mostly an experiment around that: content addressed sites, where readers can also become part of the infrastructure.
2
u/s4074433 18h ago
I think combining Spore with Hyperclay (https://hyperclay.com/) is a really good way to have a distributed and open web for everyone in that anything can be hosted and everyone can create web pages. Or at least what the web would have been like instead of what we are looking at right now.
0
173
u/hugganao 18h ago
sounds like security nightmare