Installing Multiple Ghost Blogs—Docker Image On Dokku + CloudFlare On One DigitalOcean Droplet—Solutions
For the Administrator who wants the flexibility the ability to install multiple Ghost instances as well as other webapps on One DigitalOcean server, and would love a detailed step-by-step guide... This is the article for you!
This disclaimer informs readers that the views, thoughts, and opinions expressed in the following article belong solely to the author, and not necessarily to the author's employer, organization, committee, or other group or individual. The following write-up is a personal perspective based on the author's personal experience and account.
The author shall take no responsibility or be affiliated with any of the readers' own take or experiments to replicate the results expressed in this article. Readers are reminded to practice self-caution, safety, and calculated risks prior to any experimentations, as well as to double-check on details prior to any potential actions or purchases.
Why Install Ghost On Dokku?
Despite Dokku being my most preferred setup choice, it may not be the most ideal option for multiple Ghost installations, as it does not offer the full range of customisations available to Ghost, as well as the ease of Ghost management through Ghost-CLI, as these are critical criteria for me.
However, if customisation or full management controls of Ghost does not matter to you at all, this "Ghost Docker Image on Dokku", may be a viable option for you.
Nonetheless, this option does offer me the significant ability to use Dokku, where besides being able to install Ghost, I can also choose to install other self-built webapps, in the near-to-long-term, that will run easily from the same Dokku server.
If this doesn't represent your choice of setting up multiple Ghost-installs on ONE Server, you should check out this article I wrote about the other option(s) that are available to you.
- Monthly Cost-Savings—Save on additional costs running multiple servers. However, if you do expect high-traffic to your website, then please skip this guide entirely. You will be better off tapping on a Ghost(PRO) Subscription.
- Dokku: Heroku Commands—Having the ability to easily run git-like commands to push code updates to Dokku server and automate processing to compile and publish code to production.
- Dokku: Flexible Extensibility—Able to handle not just multiple instances of Ghost but even other webapps setups like WordPress / ReactJS / AngularJS / Ruby / Go / or any other setups.
- Dokku: Powerful WebApps Management Platform—Use one SSH login to manage all webapps, in place of multiple, confusing connections to multiple servers to handle multiple maintenances of multiple webapps like Ghost.
- Very Tedious To Setup—Will require significant Technical knowhow, persistency and lots of patience! This is quite true given the need to understand a little of both Dokku & Docker environments, on top of Ghost.
- No Ghost Control Thru Ghost-CLI—Having Ghost-CLI would have been very useful as it allows each individual Ghost instance to be easily managed, upgraded or uninstalled where necessary. Too bad, it isn't available on a Ghost Docker Image installation.
- No Customisation Where Needed—Sadly, this option is a critical-killer for me, as a Ghost Docker Image is non-editable, which totally killed off the idea for customisations per Ghost instance, such as implementing a Custom Storage Adapter where needed.—Local storage data is slightly hard to access but the good thing is that it is held privately within your Dokku server.
- Limited Ghost Installs On 1GB-Memory Server—DigitalOcean Baseline 1GB-Memory (USD5.00) Server might only be able to handle a maximum of 2x Ghost installations at one time. I have been testing the server for >1 month and do frequently experience
Request Timeout Errors, where either (a) Ghost lost connection with Server due to maxed out memory usage, or (b) Ghost is unable to automatically-save the work I've typed, or (c) Ghost faced the occasional problem of uploading multiple images at once or large images that are >1MB.
The solution is to do a Forced
Power Cycleprocess via Droplet > Power > Power Cycle.
This issue can also be easily mitigated by upgrading to a server configuration that has significantly more memory, which does add more to your monthly costs.
This setup requires Significant technical-knowhow on how to use the following toolset:
- Terminal (macOS) or Command Prompt (Windows),
- Command Line Interface (CLI),
- GitHub, and
- Dokku (Smallest PaaS)
However, this guide is designed to be "Intermediate-friendly", and should not pose as a challenge to many as long as you are willing to try. ✌🏻
Should you decide that this setup may be too much of a hassle and you don't mind just running through with ONE Ghost installation on ONE DigitalOcean Droplet, you can check out How To Install Ghost With Custom GitHub Storage Adapter On DigitalOcean + CloudFlare—Solutions.