A minimal backend can be extremely simple, just relaying changes, but if you want it to keep a running snapshot of the current document, you'll need the capacity to apply those changes to document, so you'd need to use the module used by the client, or a port of that.
I've actually been playing around with "translating" the server backend for share.js to Elixir, to be able to host it as part of a Phoenix app. Playing with ways of integrating with erlnode to run the actual test cases (including a fuzzer) from JS directly on my Elixir code.
If this gets opensourced, I wonder how complex the backend will be (I'm assuming it will be written in Node?), given that it seems like the front-end is doing most of the work.