I think the biggest issue is HTTP Signatures - they're not part of the standard, they're not well-documented, and without them your server won't federate with anything and so you have no idea whether it works.
Plus sometimes an implementation works with Mastodon but not something else. I think Mastodon just uses certain headers when calculating the signature, but Bridgy Fed also includes the URL or something. The C# code I'd copied was programmed to exclude the URL always, so I had to change that, but it took a while to figure out that that was the issue.