Tutorial: Host Ghost 5 + MySQL 8 on Fly.io Free Tier

Excellent! Glad to hear it.

Unfortunately I don’t. Maybe try Official Ghost + Cloudinary Integration & GitHub - eexit/ghost-storage-cloudinary: A fully-featured and deeply tested Cloudinary Ghost storage adapter ?

I used to have all my images on GitHub pages to externalise some of the bandwidth and complexity, and give more control over the SEO of the image URLs. But Ghost doesn’t allow setting post images to a URL anymore, so now I just use Ghost, which is less hassle.

I tried to install ghost-storage-cloudinary but after restarting my app I get this error:

chown: cannot dereference ‘/var/lib/ghost/content/adapters/storage/ghost-storage-cloudinary/node_modules/.bin/image-size’: No such file or directory

and my app crashed and needs volume restore from snapshot. Maybe this is because ghost is in docker image, I’m not sure. I follow all steps but have this error.

In my site I give author privileges to my paid members to post content, and I want images to be stored anywhere else, but not sure how to do it.

Hmm. Perhaps @eexit might have an idea, since he’s using Cloudinary on fly, and wrote the adapter?

DigitalOcean to Fly.io

1 Like

@curiositry I have some issues with loading time of my site. Sometimes is really slow. If I restart my apps It’s faster, but after some time slows down again. Do you know why is that and how to fix it?

Does is fix when you redeploy the MySQL server? If so, try scaling to 512MB RAM on your MySQL instance and let me know if that fixes it.

I sometimes noticed intermittent performance degradation on my DB. I assumed that it was related either to higher load days, or a bug somewhere in my software stack or configuration. It usually was fine for ~5-7 days after the last deploy. It seemed like it was maybe correlated with intensive activity (saving a post a over and over again, creating large numbers of bookmark cards in a short time) in the admin panel. But it never became much of an issue because a new version of Ghost is released so often I was redeploying quite a bit anyway. (And when the instance actually runs out of memory, it restarts and sends you an alert.)

Does it happen regardless of traffic levels?

This is email I received today:

Hello! Your “ekniga-mysql” application hosted on Fly.io crashed because it ran out of memory. Adding more RAM to your application might help!
Here’s the raw log message:

Out of memory: Killed process 528 (mysqld) total-vm:1066484kB, anon-rss:196536kB, file-rss:0kB, shmem-rss:0kB, UID:999 pgtables:824kB oom_score_adj:0

It’s working now, I guess It just restarts itself. I publish a lot of content right now, so I guess this is the problem. If slows down again, I’ll try to redeploy database app. Do I need to keep backup before deployment?

Is that with 256MB RAM or 512MB? Is it the default config from my tutorial? (I think I’ve had my Ghost app OOM and restart once or twice, and I’ve had my MySQL degrade, but my MySQL instance hasn’t OOMed and restarted. Odd.)

Chris on the Fly forum gave some pointers on setting up swap, which may help (I haven’t tried it, though).

Thanks but I already migrate my site from fly.io to oracle cloud since I can’t find a way to install cloudinary storage adapter but I need more space for images. In oracle cloud I use aapanel and still deploy my ghost blog as docker image but at least I have much more storage on free tier and automatic backups of my site to google drive with aapanel. Also in oracle cloud I don’t need to create two separate instances for the site and database.