For those unaware, Cloudron is a platform that makes it easy to run web apps on your server and keep them up-to-date. Think SaaS for self-hosted apps.
Cloudron works best on public VPS providers like Digital Ocean, Vultr, Linode. This is simply because those servers come with a public IP out of the box and the default firewall allows incoming traffic from all TCP ports to the server.
A little known secret is that Cloudron works just fine on a Home Server! It just needs a little technical know how of your home network.
In this post, we will see how to install Cloudron on a home server. The setup described here is for a home server installation that can be accessed from outside home as well.
Cloudron requires the following:
A public IPv4 address. This IP address does not need to be static. Cloudron has a feature where it will continually keep your DNS updated with a dynamic IP address. You can visit this site to view your current public IP address.
Forward port 443 from your router to the Home Server IP. For this, you have to login to your router and setup port forwarding in the firewall. See this site for router specific instructions on how to setup port forwarding.
Cloudron supports a variety of DNS providers like Cloudflare, Route53, DigitalOcean, Namecheap and so on. If you decide not to use of those providers and instead use Wildcard or Manual DNS, then you must also forward port 80 from your router to the server. This is required for Let's Encrypt to work.
NAT loopback support in your router. Cloudron apps are accessed using domain names and the DNS entries point to the public IP of your home network. When apps are accessed with the DNS name from inside your home, the router needs to be capable of routing the public IP back ('hairpinning') to your home server. Most modern routers support this.
Create a fresh server (VM or baremetal) with Ubuntu Bionic (18.04 x64) and run these commands:
wget https://cloudron.io/cloudron-setup chmod +x ./cloudron-setup ./cloudron-setup --provider generic
Once installation is complete, navigate to
https://IP. If you meet the pre-requisites above,
you should be able to use your current public IP address. If you are unable to access with
the public IP address, now is a good time to investigate what is failing.
Provide a domain name to complete the installation:
Once DNS is setup, Cloudron will redirect to https://my.domain.com. The browser address bar will show a green lock to indicate that the connection to your Cloudron is now secure (It does this by automatically getting a certificate via Let's Encrypt).
You are now ready to start installing apps! When you click on the App Store link in the UI, you will be prompted to create a cloudron.io account. This account is used to manage your subscription & billing.
If you have a setup where you have a dynamic public IP, the Cloudron has to be configured to keep the
DNS updated. For this, go to
Domains view and enable Dynamic DNS.
Note: If you use the wildcard or manual DNS with a dynamic IP address, you have to setup some mechanism external to Cloudron to keep the DNS in sync with your public IP.
Cloudron requires port 443 (HTTPS). Cloudron serves web pages and requests only on 443 (HTTPS).
Cloudron requires x86 and does not work on Raspberry Pi.
Remember to port forward TCP ports from the router to the server when using non-HTTP(S) ports. For example, you might have to forward SSH ports for git to work when using Gogs, Gitea & GitLab.
Comments/Suggestions/Feedback? Discuss in our forum.