Self Hosting
Besides cloud servers, We offer you a way to self-host a server. This means the data is to be put to your machine to host a website online. Self hosted feature is completely free and it's a great option for:
- Devops, who behind a corporate rule that mandates all data is self hosted to an on-premise server
- Developers, who finds our cloud services is not speedy enough or like to rent VPS elsewhere
- Hobbyst, who like a taste being sysadmins on their own gearbox or even raspis.
Go to https://github.com/domcloud/container for getting started. But if you still don't get the idea, read on.
First, self-hosted mean you rent some VPS elsewhere. We don't sell VPS, heck we don't even own one — we just rent VPS from mix of multiple cloud provides.
"If I rent my own VPS, why even I still need DOM Cloud?" Great question.
DOM Cloud vs Coolify
You must already know Coolify — it's everywhere. It's a cool piece of software to boot up any 5$ VPS to any kind of site with a single click.
If you think of it, Using DOM Cloud with self hosted does exactly the same thing as running Coolify. And both is offered free. However in the technical side it's very different.
First, DOM Cloud Portal (https://my.domcloud.co) is still online even if your server down. If your sysadmin doing something wrong, you always gonna notice it in deployments log — because the other ways to access it like using SSH and databases are never given in "root" mode.
Second, DOM Cloud servers is controlled using DOM Cloud Bridge which is a headless REST API. The REST API is used by DOM Cloud Portal to perform deployments. Unlike Coolify, we do not use Docker, and do not run your software 24/7. This means our system requirement is waaay lower — even DOM Cloud Portal (https://my.domcloud.co) runs fine with 1GB RAM of VPS right now.
Third, you get so many admin features working out of the box, things like virtualmin, database, online tools, etc.
Some exception is this:
- Backup. Backup requires S3 key, and we don't give our S3 keys to self hosted servers for security reason. You can add your own S3 key as Backup account in virtualmin backups with
domcloud-backups
as the bucket name. - DNS. DNS that propagates to nsp.domcloud.co / nss.domcloud.co* only works inside our cloud servers for security reason. You must setup your own DNS servers. This also can be configured using Webmin.
- Free domains. Free domain like
.dom.my.id
and.domcloud.dev
only allowed with cloud servers for security reason. You must use your own domains.
DOM Cloud Server
DOM Cloud server installation is described in our GitHub repo: https://github.com/domcloud/container. We support installation either from latest Rocky Linux 9 or Ubuntu 24 LTS Server. The server requirement is pretty small, you may run it on systems as low as 2GB RAM and 30 GB storage.
After your VPS or Server running, run this as root (sudo -i
):
if [ -f /etc/lsb-release ]; then OS=ubuntu; elif [ -f /etc/redhat-release ]; then OS=rocky; else OS=unknown; fi
curl -sSL https://github.com/domcloud/container/raw/refs/heads/master/install-$OS.sh | bash
curl -sSL https://github.com/domcloud/container/raw/refs/heads/master/preset.sh | bash
If you can't wait for installation to complete, use tmux
and rerun the scripts above.
After it success, reboot
and run this to reset passwords:
curl -sSL https://github.com/domcloud/container/raw/refs/heads/master/genpass.sh | bash
# Take note webmin password generated from this script
The script installs:
- Virtualmin 7
- DOM Cloud's Bridge and Proxfix
- NGINX and Passenger — Custom built described in NGINX Builder
- MariaDB, PostgreSQL and Valkey
- Multiple PHP versions installing from REMI repo or and Composer
- NodeJS, Ruby, Python installing from Rocky repo including NPM, Yarn, Pip and Pipenv
- Pathman, Neofetch and Docker for rootless mode
- Monitoring services and tools like Htop, Iftop, Btop, Ncdu, etc.
- Networking tools like Aws, Curl, Wget, Nftables, Ncurses, Socat, Whois, etc.
- File Editors like Git, Vim, Nano, Neovim, Lazygit, Ripgrep, Diff, Patch
- Many other common unix tools, C compilers, and devel libraries
Assign to a domain
You need to assign the bridge API to a domain before it can be connected. Please assign A/AAAA of your domain to IP address of your server. If you use Cloudflare, please turn off the proxy.
Let's say you've brough a mysite.com
, we'll assign bridge API to bridge.mysite.com
by first opening the Virtualmin API at https://bridge.mysite.com:2443
(note the HTTPS part!). Ignore the certificate warning for now.
If you forget the webmin root password, please run this in root SSH:
/usr/share/webmin/changepass.pl /etc/webmin root YourNewPassword
for Ubuntu (change YourNewPassword)/usr/libexec/webmin/changepass.pl /etc/webmin root YourNewPassword
for Rocky (change YourNewPassword)
Then go to the site > Manage Virtual Server > Change Domain Name.
After that, go to Setup SSL Certificate to get SSL Valid
If you get error saying The ACME server believes [email protected] is an invalid email address. Please ensure it is a valid email and attempt registration again
, please fix your hostname and restart webmin in SSH and retry.
hostnamectl set-hostname bridge.mysite.com
systemctl restart webmin
To apply the SSL to webmin, go to Tab Current Certificate and click Copy SSL Certificate to Services
and Set as Default Services Certificate
.
What If I need to ask?
You can ask me if you found problems within installation scripts.
If you want to ask me to set it up for you, that will comes with upfront fee of 100 USD per server. It includes any software that you want to install.