This is the deployment process for my personal website. Some sections of the site are kept in separate repositories, but this script ties everything together.
I previously had my site hosted on Google Kubernetes Engine, which is an absolute pleasure to work with in terms of convenience. Once the setup was finished, it was easy to write scripts to update and manage the server. However, I was a bit unhappy with the price/performance ratio I was getting and ended up renting a server. I'll be able to host more services at a lower cost this way, though I will likely have a bit more downtime.
I use Cloudflare for their excellent DNS and CDN service. The only extra feature on my wishlist with Cloudflare is the ability to proxy wildcard DNS entries on the free plan, but I can live without that.
- NGINX as a reverse proxy for all other services and any static content.
- Tiny Tiny RSS as a feed reader/aggregator.
- Gitea for git repos.
- PostgreSQL as my database engine of choice.
- Calibre Web for browsing and reading books.
- MPD to serve music.
- Plex to serve video.
- Custom file storage application written in Go.
- Set up a server with Docker and any other quality-of-life tools you would like.
- Build the docker images you would like to deploy and transfer them to the server.
- SSH into the server and deploy those images.
- Transfer any static files you would like to serve to the server.