Sharing my Fly Templates: Minio, Mattermost, Directus, SFTPGo

Finally got a chance to build proper templates from all of the Fly apps I’ve built.

Wanted to share them here to get feedback and hopefully help others.

Minio
My updated version built from the original Fly AppKata. Added my notes for how I create public buckets.

SFTPGo
SFTPGo is amazing and my favorite way to run FTP or SFTP servers (among other things). Shared my initial config.

You can configure your storage to be backed by a S3 bucket which makes this even more useful.

Mattermost
I hate paying the Slack Tax - so I’ve started using Mattermost. Runs great and it’s easy to work with.

Here’s my repo for a ChatGPT Bot on Mattermost hosted on Fly Machines as well.

Directus
I use Directus to provide a self-hosted API that has a nice admin panel for users to log into. Throw a Next.js Website in front of this thing and you’ve got a pretty flexible stack.

Hope it helps a few people! Contributions welcome.

7 Likes

Hi, thank you for sharing your set up , this is very useful.

But I find out after I use outlook for smtp mail in mattermost hosted on fly using your setting. The test email can be send successfully and receive successfully in gmail. But any notification cannot be receive in gmail. In my outlook mail, it shown in the sent item.

I suspect this is related to SSL related, as those notification mail include links to my mattermost instance. But at the same time the link should be safe as it is under *.fly.dev

May I know how did you handle the email notification part. Thanks!

After investigation, Outlook wont send out email with “weird link”, I would send for my case, are those mattermost email with html and hyper link to xxxxooo.fly.dev

Using gmail for SMTP solve the problem

reference : outlook won’t send emails with links in them

I’m playing with deploying Directus. Thanks for the repo! I saw your comment in the README:

I’d love to scale this out to a High Availability solution using clustering across multiple regions on Fly. If you have any ideas on how to do this, please let me know! PR’s welcome!

Have you discovered any solutions for this? I know that fly volumes are unique per instance, although Postgres databases can be replicants of each other.

Check out the Directus config options - with Redis, S3 and Postgres you can pretty easily scale to multiple nodes

Mike Hostetler
Managing Director
Office: 1.872.216.1185
Cell: 1.303.803.2929
EPIC CREATIVE, Inc.
PO Box 7156
Algonquin, IL 60102

This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received this e-mail by mistake and delete this e-mail from your system. E-mail transmission cannot be guaranteed to be secure or error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses. The sender therefore does not accept liability for any errors or omissions in the contents of this message, which arise as a result of e-mail transmission. If verification is required please request a hard-copy version. Epic Creative, Inc., PO Box 7156, Algonquin, IL 60102, http://epicfirm.com

Thanks! If you don’t mind, I have a question since I’m not familiar with using Redis: Would using a single Redis instance (if I decide to self-host Redis) defeat the purpose of having Directus scaled to multiple nodes (e.g. would that cause a bottleneck)?

I’d use openstash redis on Fly - that solves the problem and that’s what I’m using - we are way under the free limit

1 Like

gotcha, thank you. I’m assuming you mean upstash, and not openstash.

btw I think learned the answer to my question, about whether a single Redis for multiple Directus instances would cause a bottleneck, is “no”: At least in low-volume applications, while each Directus instance may share a single Redis, API calls go to the Directus instance(s), not the shared Redis, so heavier traffic shouldn’t be a problem. I think

1 Like