We don't use github, but when our server is offline, we just spin up a VM from backup, push the latest commit to it and start using it as the new centralized server. I think what you lack is a decent policy, not technology.
OP doesn't use GitHub if I read his/her comment correctly.
However... having multiple remotes is a very easy way to get multiple distributed backups of your code. (You should do a "git fsck" on all your mirrors at least semi-regularly. The reason has to do with how push and --mirror work.)