This is a start guide on how to decentralize your website(s). It does NOT provide step by step instructions on every aspect, but it should be enough to help you understand the big picture and point you to where you need to go for more details.
In this article:
Relating to a website, first we need to QUICKLY review how regular centralized websites work: There's a centralized web server that hosts the content. That web server is accessible by an IP address. If that web server hosts more than ONE website, it will need to know the domain name of the requested website so it knows which one to return to the user's browser. That website domain name is registered on the centralized domain name system that's under the control of an organization called "Internet Corporation for Assigned Names and Number" (ICANN).
So, what's WRONG with this?
Since the domain name is centrally controlled, it can and frequently IS confiscated by either ICANN or government organizations for a whole host of reasons. In short, your domain name is NOT YOURS. It belongs to ICANN since THEY have ultimate control over it.
In addition to that, you register your domain name through another centrally controlled organization called a "registrar". Registrars have recently become political and are now denying certain domain names to be registered and deleting the accounts of those they politically disagree with. GoDaddy is known for doing this.
If your domain name is gone, your users can't get to your website.
Web Hosting: Hosting your website on a 3rd party web hoster has the same problem. The web hoster may implement rules that don't allow your content and if, in THEIR SOLE judgement, deem that your content violates their policies, they can AND WILL DELETE your website! Amazon Web Services is known for doing this.
Even if you were to host your OWN website on your OWN hardware, while you've eliminated the risk of a web hoster shutting you down, your domain name is still at risk and since your hardware is a single point of attack, bad actors can launch a distributed denial of service (DDOS) attack on your site. This will overwhelm your server(s) with thousands or millions of malicious requests that you cannot distinguish between legitimate requests. Your servers will be slammed and be unable to respond to legitimate requests, effectively shutting down your site.
If THOSE problems weren't bad enough, payment processors such as PayPal, GoFundMe, Patreon, and even major credit cards and banks have been BANNING people based SOLELY on political opinions, and popular platforms such as YouTube, which have income options for creators, are now NOTORIOUS for demonetizing and deplatforming independent creators, solely on political opinions.
To resolve both the domain name problem and the centralized web server problem, you can decentralize BOTH of those services.
Web browsers access websites via domain names, such as Minds.com to get to THIS website. Of course, as pointed out above, the Domain Name System (DNS) is centrally controlled. But there are now several, alternative and decentralized domain name systems. The problem is that most web browsers don't yet fully support them. We'll go over how to overcome some of that.
For reference, here's a listing of decentralized DNS's and related services:
Decentralized Domain Names & Services
To keep this blog simple, I'll discuss and recommend just the Ethereum Domain Name System (ENS). It works with no central control from human organizations. It's completely automated in registration, payment, renewals, and actively responding to user requests.
You'll need to first acquire some Ethereum cryptocurrency, which you can do any number of ways, which I will not cover in this blog post. I do recommend the MetaMask wallet plugin for your browser. It will help you make payments to register your decentralized domain name as well as make your browser accept domain names from ENS. And, MetaMask makes your browser capable of using decentralized apps & services, so it's well worth having, regardless.
Next, you'll need a decentralized web site...
Hosting your website on a decentralized technology is much, much easier than hosting it on a centralized platform. I emphasized the word "Hosting" for a reason. Writing your web site to be decentralized requires a little bit of learning. Let's focus on hosting, to start with.
Web 3.0 sites (which is the jargon now for decentralized websites & services) are usually hosted on IPFS (InterPlanetary File System). Think of IPFS as BitTorrent on steroids. Thousands of IPFS nodes are being run by many companies and individuals around the globe. If you run one (which is super easy to do... just download and install the IPFS desktop app), you can just drag and drop your website files into a folder in your IPFS desktop app and it's now published, without even uploading anything.
But, the way IPFS works is users must request files by their hash. A hash is just a unique, short string of bytes that represent a single file. Every file will have a unique hash. A hash is created by running all the bytes of a file through an algorithm that generates a 16 or 32 byte (usually) string of bytes based on the byte passed in. Every byte of a file is fed into the algorithm, which continuously modifies the produced hash until the last byte goes through. This way, every byte in the file had an effect on the hash. This produces a unique hash that only that original file could have produced. Instead of requesting files by filename, they're requested by their unique hash. This ensures the client requesting the file is getting the exact file they're asking for since their client re-hashes the file retrieved and ensures it produces the exact same hash. If not, it considers it corrupt and ignores it.
Your decentralized website will be accessed by the hash of the root folder of your deployed files. Obviously NO ONE will know this hash, except YOU, so you must somehow publish this hash. That's what your decentralized domain name is for. Once you've registered your decentralized domain name, you can edit the record and add your IPFS hash of your content. Note that anytime you modify ANYTHING in your content, the hash of the root folder will change and you'll need to update your ENS record with the new hash or users will still be using your OLD content.
All that YOU need to publish in your customer facing email or on social media is your ENS domain name. For example, my CENTRALIZED domain name for MY website is DecentralizationCentral.com. My DECENTRALIZED domain name is DecentralizationCentral.eth/. Of course, this will ONLY work for users that have a browser that knows how to access ENS domain names. At the time of this writing, the only browsers I know of that support this natively are the Brave desktop browser and the Opera Mobile browser. Alternatively, if a user has MetaMask installed in their Desktop browser (Chrome and Chrome based browsers (like Brave) and FireFox and FireFox based browsers and Opera), then .eth/ domain names work natively.
A note about IPFS: When users load your content that you've published via IPFS, it spreads your content to other nodes. The more people that access your content, the more it spreads and contrary to centralized websites, your website actually SPEEDS UP as it becomes distributed around the globe. A DNS attack would actually HELP YOU! Note that you CANNOT DELETE content from IPFS once it's out there. The best you can do is update your ENS record to point to the new content. Over time, if no one's stored your old hashes, your old content will eventually be flushed out of the nodes' caches.
So how do regular users access your website if they DON'T have one of the browsers that support it AND don't have MetaMask installed?
If you want regular users, who have no knowledge of decentralization and are not using any of the browsers or add-ons for decentralization to access your website, there is a gateway. Simply add ".link" to your ENS domain name, such as https://DecentralizationCentral.eth.link. Please do NOT rely on this as the solution. This is a band-aid, at best. The website "eth.link" simply accepts any subdomain in front of it and then, on their web servers, loads your .eth site and serves it to the user. This is a CENTRALIZED process!!! If you want TRUE decentralization access, you need to encourage your users to use the right software and to use your .eth/ domain name. (you MUST provide the trailing "/", btw).
If you've been paying attention, you'll notice that content published to IPFS is static only content. IPFS does NOTHING but deliver files. There is no webserver backend to run code on. So how do you have dynamic content?
Decentralized Databases are the answer. There are two that are worth looking at:
Information on how to use them can be found on their respective websites.
Lastly, but certainly not least, is decentralizing your payments, or at the very least, removing your dependency on the politically motivated payment platforms of PayPal, Patreon, GoFundMe, and some credit card companies and banks. The simple answer to this is to accept cryptocurrency payments. To do this, you simply post your cryptocurrency addresses & QR codes for people to send you crypto on. That's it. No middle man. No way for anyone to intervene and stop it. If you MUST use a centralized payment processor, I recommend SubscribeStar. They are known to NOT demonetize people for political reasons.
For more information on developing decentralized apps & services, look here:
Decentralized Software Development
For more information on decentralization, in general, please refer to my mini-search engine for decentralized apps & services: