Prerequisites for a building a coop-cloud

Getting a Coop-Cloud running is a bit more challenging than buying a bit of soft- and hardware and plugging it in. After all, you’re doing your own hosting! If you’re completely new to that, it might be nice to have someone nearby to help. But I’ll try to write this in such a way that you can follow along even if you’re not doing it yourself.

The beginning: a computer

To have cloud services on your computer, you need a computer. You can either rent one in a datacenter (a virtual private server, a dedicated system, an old computer you can move to a co-location space, ...), or you can use a computer at home.

In my case, I stumbled on the coop-cloud around the same time I decided to buy a small computer as a home server and to play around with (to sharpen my linux skills, to experiment with software, etc). Home servers and home (network) labs come in various sizes and can be endlessly complicated (if you think “how complicated could that be?” just go over to /r/homelab and look at what is considered a simple setup there). If you're new to this: look for something with low power consumption (and ideally silent). If you, like me, don't have reasonably efficient old hardware: these days, there are small form factor and virtually silent machines out there for as little as 150€ (plus taxes). Good search terms NUC (next unit of computing, an Intel-thing) and SFF (small form factor). I went with a GMKtec device based on a recommendation from a friend.

Network

You should be aware that for this setup to work well, you'll need to expose your computer to the internet, so that others can talk to it. This is not an issue in a datacenter, but in a home network, you should be aware that your exposed computer can talk to any device on your network. This means you'll need to keep an eye on it and update it regularly (or shut it off). If you want to operate something long term for other people to use, consider investing in a firewall (a network device that separates your new computer from the rest of your network).

Internet Service Provider

For home network use, you may need to contact your internet service provider: some use a technique called DS-Lite/dual-stack Lite by default to save on IPv4 addresses. Simply put, this means your home router doesn't actually get a normal IPv4 address (which means you can't host locally). In my case, a brief call to the ISP and a router reset was enough to get DS-Lite disabled. If you have DS-Lite, you may still be able to get a working IPv6-only setup – it looked to me as though this were not straight-forward, but I haven't looked into it.

Domain

If you don't have a domain name, you'll need one. There are tons of services that offer domains – there are some things to look out for:

1. Being able to set either a wildcard A-Record or CNAME-Record. An A-record is a DNS entry that contains the (sub) domain name and the associated IP address, while a CNAME-Record is like a reference to another A-Record.

2. if you're setting up on a home network: support for dyndns/dynamic DNS. The reason for this is that many internet service providers regularly change IP addresses. DynDNS is a feature where your home router tells your domain name provider the new IP regularly.

Putting it all together

Connect your computer to the network, ideally by cable and not by wifi if it is your home network. You may want to tell your router to always assign it the same IP (for convenience).

If you're using a home network, you'll need to set up your domain and dyndns. Otherwise, follow your providers' instructions on how to assign your domain to the IP address of your system. Domain and dynDNS setup also depend on your router and provider, but basically the idea is 1) configure DNS, 2) prepare dynDNS, 3) set up the dynDNS automatic update. For the latter, your provider will have an update URL of some form, which you will need to tell your router. Your router will use the URL to tell your provider the new IP. Here's a tutorial from provider OVH here is a dynDNS setup guide for the FRITZ Box router.

Next: if you're using a home network, expose your computer to the internet, ideally via port forwarding (though some routers have a feature that exclude the entire system from their rudimentary firewall). You'll most likely want tcp ports 80 and 443 (for HTTP/web server traffic with and without encryption/tls respectively – we'll get to this, but unencrypted is not critical and recommended to get certificates via letsencrypt). If you want to manage your personal cloud remotely, you'll also need tcp port 22 (for SSH). You can also configure all this network stuff later, but you’ll need it once you set up abra.

Next up: install linux on your new machine.