Deploy on your own server

Deploy your project on a server and give it a real address

A $5 VPS can run several apps. The hard part is usually not the server. It is the domain, the certificate and the proxy in front. Here is the short path, with DomainDock doing the last mile.

Get started free

1. Run the app on the server

Any language works. What matters is that the app listens on a port and on all interfaces (0.0.0.0), not only on localhost. An app bound to 127.0.0.1 answers on the server itself and refuses everyone else, which is the most common reason a first deploy "doesn't work".

Docker keeps this simple and restarts the app after a reboot:

docker run -d --name myapp --restart unless-stopped -p 3000:3000 myapp:latest

2. Open the port

Cloud servers block incoming traffic by default. Allow the port in two places: the provider firewall (an AWS security group, a DigitalOcean or Hetzner cloud firewall) and the server firewall if you use one.

sudo ufw allow 3000/tcp

3. Check it from outside

From your own machine, not the server, open http://YOUR_SERVER_IP:3000 or run curl against it. If that works, the app is reachable from the internet and the hard part is done.

curl -I http://203.0.113.10:3000

4. Give it a domain and HTTPS

Nobody wants to share http://203.0.113.10:3000. Add a domain on DomainDock, enter the IP and port and you get https://myapp.digitalweb.host with a valid certificate. We test the connection first and, if something is wrong, tell you in plain words (port closed, nothing listening, redirect loop) before anything is created.

Running several apps on one server? Give each its own port and its own address. You don't need to install or configure Nginx, Traefik or Caddy yourself.

Questions people ask

Any VPS with a public IP works: Hetzner, DigitalOcean, Vultr, AWS Lightsail or EC2, Oracle Cloud and others. 1 GB of RAM is enough for a couple of small Node, Python or Go apps.

Not for routing a domain to your app. DomainDock is the reverse proxy in front of your server. You can still run Nginx yourself if your app needs it for other reasons.

Not with DomainDock today. It forwards traffic to a server with a public address and does not open tunnels to a local machine.

We check every route every 5 minutes. When your server stops answering, visitors see a clear status page instead of a browser error and your dashboard shows the reason and how to fix it.

Keep reading

Newsletter

Developer infrastructure, in your inbox

New guides on domains, SSL certificates and deploying to your own server. A couple of emails a month at most.

No spam. Every email has a one-click unsubscribe.