6 ms·
I run an Akkoma server for a few friends in Hetzner: - Cloudflare DNS - 2x CPU 2GB RAM application server with snapshots - 2x CPU 2GB RAM postgres server wit
by pimeys 4y ago
I run an Akkoma server for a few friends in Hetzner:
- Cloudflare DNS
- 2x CPU 2GB RAM application server with snapshots
- 2x CPU 2GB RAM postgres server with automated backups
- 2x CPU 8GB RAM elastic search server to provide a full-text search for the known Fediverse
The search is not mandatory, but super nice to have. It is about 20€ a month, not counting the domain costs due to having it already for other purposes.
Akkoma is written in elixir and is much better in handling async messaging. No need for Sidekiq or Redis. My CPU usage hovers around 6-12% and memory around 55%. Postgres uses about the same.
I've never tried Mastodon, but having been a Ruby developer in my past life, I needed to find something else to install when I joined the Fediverse. Couldn't be happier with my setup. It just works, I never really need to do any maintenance.
All the normal clients work with it.
https://akkoma.social/ https://akkoma.social/
- aprdm 4y agoCan Akkoma talk with Mastodon? Otherwise I think I miss the point of your post
- bongobingo1 4y ago> Communicate with all your friends on the fediverse, no matter if they're on mastodon, pleroma, or any other fediverse software. Probably? (Maybe it explodes if you try.)
- resonious 4y agoIt says it implements ActivityPub on the site so yes it should talk to Mastodon.
- pimeys 4y agoTalks with Mastodon, Pleroma, PeerHub, Pixelfed, Misskey, Friendica and every other software using the ActivityPub protocol.
- zimpenfish 4y ago> every other software using the ActivityPub protocol. Even GotoSocial now that they've put special handling in to work around their bizarre key-handling design decision.
- pimeys 4y agoDo you know anybody running GotoSocial? I'd love to try it, but I don't see that many servers in the Fediverse yet...
- zimpenfish 4y agoOffhand, no, other than myself and that's mainly for educational purposes (the source is Go and I understand most of it[1].) fediverse.observer points to https://gotosocial.fediverse.observer/gotosocial.sequentialread.com https://gotosocial.fediverse.observer/gotosocial.sequentialr... as being open. [1] Unlike honk, which is also in Go, but was written with little regard for readability.
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- danw1979 4y agoWhat type and size of storage are you using for this ?
- pimeys 4y agoAh, I forgot to add that: I use Wasabi's S3 storage for files. This is probably the most amount of money I pay and a bit wasteful. We have about one or two images per month in uploads, but Wasabi is 5 euros a month for the first terabyte of storage. Egress is free though.
- robga 4y agoRe “egress is free”. Note that “If your monthly egress data transfer is greater than your active storage volume, then your storage use case is not a good fit for Wasabi’s free egress policy”. There are reports of bill shock from mastodon users as a result of the costs due to the policy. https://wasabi.com/paygo-pricing-faq/#free-egress-policy https://wasabi.com/paygo-pricing-faq/#free-egress-policy
- pimeys 4y agoI'm all ears for a better solution. We probably will have less than a gigabyte of storage needs, and egress is what it is with some local caching from the servers. The only thing I want is to not store the files in the application server.
- robga 4y agoLooks like backblaze b2 and cloudflare as a cdn may have a more liberal egress policy. Your profile with wasabi may suit your needs, however. Another option is minio.
- squaresmile 4y agoYep, b2 and cf is a great combo for hobby project. Note that you still need to pay for transactions so depending on your usage pattern, b2 might range from very cheap to a nice discount. I recommend turning on tiered cache on cf [0]. Our b2 bill went from $7 to $4. [0] https://developers.cloudflare.com/cache/about/tiered-cache/ https://developers.cloudflare.com/cache/about/tiered-cache/
- INTPenis 4y agoWell what kind of federation is it handling atm? Because saying Elixir is awesome means nothing until you have 1000 MAU's all tooting and hollering at the same time, and you have to federate a bunch of messages. That's where I actually like having the sidekiq component separate and scalable. Because it means I can make use of dynamic scaling in a cloud to work through the queues, then scale down when the queues are empty. The Mastodon web service can run on minimal resources, even with 1000 MAU's, it's only Sidekiq that needs to scale, and that also only when there is large amounts of messages to federate.
- pimeys 4y agoMy question is, why do you need separate processes to handle mostly async operations? You need to do HTTP requests and database queries, that is mostly waiting, there is no CPU needed for this. You can do it with one process and millions of tasks operating in concurrent fashion. I don't really know how Mastodon does this with the Sidekiq, but what I've seen people with a very small amount of activities (we're talking about hundreds of thousands, or a few millions), need to do manual scaling of Sidekiq processes or threads. As a user, you should not be tuning these metrics to handle this kind of activity. A single beam process could handle all the WhatsApp messaging back in the days, so it can easily handle our relatively tiny fediverse servers with much less users.
- rektide 4y agoOne of the main wins I've contributed to company after company is taking monoliths & making multiple instances of them. Yes it can run one big process of everything, and does when I find it. But some routes or subservices are slow or hog cpu or use way more memory than the other routes. We'll have a handful of infrequently used routes that use >1GB while typically the monolith stays inder 200MB of ram. We'll have some expensive route that hog the even loop for a second. Mixing these routes in with the well behaved normal routes means we have to way over-provision, and means sporadic performance degredation once se lesser behaved routes start firing. Separating your stuff up is a huge win. Being able to see ingest, egress, and web traffic separately & to manage them separately is a huge win. Im not sure what the win is from a single process. I have a hard time thinking of advantages. There's some small wins to memory, but a well designed forking architecture works around most of these advantages.