DIY Fediverse Server - Odroid M1 + NVMe Drive

Picture of Odroid C2 Boards and Audio Modules on the Workbench

 


Thanks to the recent TwitterMigration, Mastodon and Fediverse SelfHosting is a thing. This DIY OpenSource recipe is not for casual users. If you are having difficulty with your Fediverse provider (aka server/instance) try to work it out or change servers. ActivityPub is designed with your account ownership and mobility in mind. For newbies, pick any server that appears to fit your hashtag interests. Community size doesn't matter, your instance' transparency, philosophy and responsiveness does. Backup/Export your follows and lists to a safe place.

Moderation can be approached in two ways, scale up or scale down. Scaling up has a hard limit since real live people have to make complex ethical and moral decisions. Scaling down has a limit since not every person is wiling to manage their own instance. Somewhere between 7000 and say 20 members is the instance range we're talking about. I believe small organizations and organic social groups should pool resources and get an instance based on shared interests. So let's further refine the limits to 2000 at the upper and 50 at the lower. The hardware here in this post is a perfect fit for this load. 

For those tech-adjacent persons who want complete control of their Fediverse experience and are willing to tackle a steep learning curve, this post is meant to provide a place to start. You will need a domain name, of course, and reliable bandwidth. Feedback is appreciated. AMA on https://faf.social/imklg or @[email protected].

Hardware Recipie:

  • 8G Odroid-M1 SBC (Single Board Computer) - https://wiki.odroid.com/odroid-m1/odroid-m1 I usually buy from AmeriDroid on eBay. Rockchip based, long support life, industrial design ruggedness, fanless. Guaranteed Rockchip supply for 15, yes fifteen years.
  • NVMe Flash Drive - Verified Compatible list - https://wiki.odroid.com/odroid-m1/hardware/nvme Fast, Stable, Did I mention Fast?
  • Headless, no touchscreen required - here's the one I would use: https://wiki.odroid.com/accessory/display/vu_series/vu8m You would have to build your own enclosure if you go that route. In fact, I consider that touchscreen as part of a completely separate system. This is a single use kind of device to be setup and managed via ssh console as needed. Don't mix desktop and backend functions in one embedded device. These are not general purpose devices. Take some time to wrap your head around this idea. One device, one function. Over time administering your system(s) you will come to appreciate this choice.
  • Nifty Metal Case https://www.hardkernel.com/shop/m1-metal-case-kit/ - I wouldn't buy the plastic case since the M1 is fanless aluminum assists heat dissapation.

There is more than one way to do this, so use this as a starting point. I don't think the Amazon Web Services is viable for tech like this. Also, don't buy from sketchy sellers. Take your time. Be patient and thorough in your research. Make a full plan, then execute. Test before going live. When you do go live, lock the instance down. Block everybody, selectively open to known safe instances only. Make sure you have a solid firewall/proxy/load balancer in front of your services. I use https://pfsense.org http://haproxy.org and sometimes https://nginx.org/en

If this seems like too much for such a seemingly simple thing, know that you're only scratching the surface of self-hosting. There is always that option to pay someone to build and manage it for you. :) I'm sure that there are many lining up to offer just such a service. Good luck and enjoy the ride! td;dr at https://durastudio.com

#TwitterMigration #Mastodon #Fediverse #SelfHosting #DIY #OpenSource #ActivityPub #Newbies #AMA #BlackMastodon