I noticed in the documentation that there are tutorials for installing Ghost either via Docker or directly on Ubuntu without containerization. I was wondering which method is better and more efficient for tasks such as creating, updating, or migrating servers and cloud providers.
Go with docker based installation method. It would be easier to maintain and migrate in long run. Also data backup and maintainance become easier in docker realm.
The only thing is docker requires some learning so if you are familiar with docker then go for it.
Hey @hackermade, Docker is a cool options, but I personaly selected another type of container which is LXC.
If you are familiar with a Proxmox VE you should know that this is also a good option. I like it way more because I scheduled a regular backups and I can restore everything in one click. Technically you’ll do an Ubuntu installation steps, but inside LXC container.
Proxmox VE has HA if you have two or more servers at home
IMHO, for the beggining you can start with a Docker, when you’ll feel the need you can always do a backup and move it to the new installation/server/container.
As my blog shows to my because of “high” popularity I won’t move to more powerful server because there is no need to do this for the 100 users a day.
For me this is just a hobby project, I am not professional blogger.
You are right that ghost doesn’t support any form of multi server or scalable setup. To support high volume of traffic you should look into caching. We at typetale.app use cloudflare CDN caching infront of the blog to handle most of the traffic.
I say there is no need to worry about performance if you set things up to be performant. I’ve always run Ghost per the official installation instructions.
Add caching to the Nginx configuration
Extend the caching in the Ghost configuration
Add Varnish Cache before Ghost
Add CDN with complete caching
When I did synthetic benchmarks with only 1 and 2 done, I could sustain 300 concurrent sessions all hitting first the frontpage and then a random link from the frontpage. And this on a simple 1vCPU and 2GB RAM VPS.
I have not used Docker myself, but I can attest that the above works well and is easy to setup with classic install on Ubuntu. And if you run on a good cloud provider, you have both regular backup of the virtual server as well as snapshot backup. It takes <5 minutes to delete a broken virtual server and have it up and running again from either type of backup. Including the old IP-number. Setup additional rsync backup or similar to offsite storage for additional backup elsewhere. Should be easy peasy to move to another provider or server.
VPS Snapshot. Unassign the IP to the VPS you run Ghost on. Then launch a new server from the Snapshot and assign the IP to it.
VPS Backup. Same as item 1.
File backup. Install Ghost on a new server using default installation path without modifications. Copy over the backup files, then import the database and adjust Ghost configuration. Update DNS records to reflect the new IP. Restart Ghost.
I know that the first 2 methods works fine on Hetzner and Scaleway. As I recell it works on AWS and GCP too. Was too long ago since I used Exoscale, Digital Ocean, Linode & UpCloud so can’t vouch that it works there.