Deploying websites is fun again

Deploying websites is fun again

Disco is taking out the bad and keeping only the good.

Making websites stopped being fun #

When I started making websites it was a pretty simple setup - nginx and maybe /etc/init.d scripts to keep things up to date. But then SSL came, and Docker came along. Then things got more complicated and needed orchestration and I started dabbling in the “solutions”, like Kubernetes, Azure Keyvault, Amazon, Vercel, Redshift, HELM charts, etc.

Nothing is too bad if you only do it once or twice or three times. But I’ve made probably 200+ websites at this point - all self-served (to save on costs) and it’s become a bit of a chore.

Making websites just started being fun again #

Enter Disco.

Disco makes deploying websites so easy it is fun.

Disco calls itself a self-hosted Heroku alternative. But to me it’s simplified everything I need for hosting, deployment, orchestration - with all of the good parts and none of the bad.

At the heart, Disco takes a repository that has a Dockerfile, and a server you own, and manages all the deployments, swapovers, secrets management, logging, statistics, SSL certificates. And you own it. So I can still use my $5/month server to run all the websites.

Another cool thing: it has an az/gh like utility called disco that you can manage things on the terminal, and a great web interface to manage them in the web.

Another really cool thing: it is fast. Really fast. Like I run git push and usually by the time I open my browser and goto the production website it has already deployed. And with zero downtime.

Different stack, same idea #

I’ve used Disco with a bunch of different stacks. Golang based servers, Django + Postgres, Next.js, React apps. The only difference between each deployment is a Dockerfile, but that’s easy nowadays to configure. The rest is the same: git push once I’ve created the Disco instance and pointed it to a URL.

Future #

Nowadays, I look forward to deploying. It’s so fun to just see how fast a website updates on the internet after I type git push locally. Also I don’t dread the server migration. I know I can just re-up disco on a new server and everything will still just work.

I didn’t get into much specific here, but I highly recommend the Disco blog which specifies exactly how to migrate from Heroku, or migrate from Vercel, in addition to specific guides for a bunch of frameworks. Those are just icing though because the Dockerfile is really all you need and it can be as simple as

FROM golang:1.22.1
ADD . /code
WORKDIR /code
CMD ["go", "run", "server.go"]

All my new websites are deployed with Disco, and man, it’s easy. It’s fun. Try it.