The hardest thing to move off Discord is not the software but the community itself, and how much of it you can carry with you. Discord offers no complete server export that recreates channels, roles, threads, reactions, and permissions somewhere else, so a switch is mostly a rebuild. That makes the architecture choice the real decision. Stoat, a continuation of Revolt, gives you the closest thing to a familiar Discord-style server you host yourself, with servers, channels, and real-time chat on a Rust backend you run through Docker.
If keeping your existing bots and integrations matters more than a fresh start, Spacebar takes a different route: it reimplements the Discord backend so that many clients and bots built for Discord.com can connect to a server you control. Because it reverse-engineers the API rather than reusing it, some clients will not connect cleanly, so test your specific bots early. For a small, private group that wants no server at all, Quiet syncs directly between member devices over Tor, though it is early software and not yet audited, so weigh that against your security needs.
Whichever you pick, plan the human side as carefully as the technical one. Build the new channel structure first, remap roles by hand, archive the announcements and threads worth keeping, and move bots one integration at a time. Run both communities briefly while you redirect invites and set a clear cutoff date, and test mobile push on real devices, because that is where members feel the difference first.