I believe what the grandparent comment meant was that you can't run a server that participates in the public network, not that you can't run a private server. That was my prior understanding, at least.
I might very well be wrong, and if so, someone please correct me.
That is correct. I should have been clearer in my distinction. You can run your own server but that server won't connect to the official Signal network. You're completely fine to run your own[0]. FWIW I've seen other software roll their own servers and use the Signal protocol. I mean WhatsApp uses the Signal protocol but I think they've diverged a lot since.
[0] There's always talk about the big deal breaker for Signal being that it isn't federated. So I've always wondered why this passion isn't used to generate a federated Signal network and is more focused on Matrix (who only recently started being E2EE). I don't know how these things work, I'm not that kind of programmer, but I can't see why you couldn't modify the server code to work in a federated fashion and edit the app code to be able to connect to both? I'm actually interested to know why if someone actually has an answer.
From my understanding, they're not a fan of it (not sure if it's officially against their TOS or not) but they don't go out of their way to stop them. At least as long as you don't use the Signal name and make it clear you're not an official app.
Even in this blog post about usernames, they clearly make sure to mention them: "This means that in about 90 days, your phone number privacy settings will be honored by everyone using an official Signal app."
Why can't you run your own? Sounds like it is not entirely open. (Never looked into it, so would be interesting to understand what is missing.)
> But you can compile the app and desktop clients yourself.
This has been talked at length here in HN before, they prohibit any clients other than their proprietary binary distribution.
If that has changed, I'd be thrilled. Can anyone point at it having changed?