On this repository, you will find guides about Signal Setup that might help people who want to run their own signal server.
- SSL Certificate of your server's domain (For secure communication, can be bypassed but it will be less secure)
- Google Recaptcha (For anti-spam in authentication)
- Firebase (For push notification, if not used, the notification will not work correctly)
- Twilio (For SMS OTP, can be by passsed by priting the OTP to another means to user)
- Amazon Web Service (For Profile Picture / Avatar, Attachments, and CDS Queue. Can be subtituted with MinIO & LocalStack)
What's proven works
- Signal Server
- Signal Android
- Signal Desktop
- Postgres & Redis for Signal Dependency on Docker
- Turn Server with CoTurn
- Nginx for Port Forwarding
- Signal with AWS S3 CDN & SQS
- Signal with MinIO CDN
- Signal IOS
What's not proven work
- Contact Discovery Service (CDS), you still can use your signal server without CDS. If you want to implement CDS, please refer to the guide written by @konglomerat-id here
If you have do some modification to your code and want to get update from the official git repo, you can follow UPDATING
For the new guide please see Signal v3.21 Guide.
There is a new way to implement MinIO in v3.21 using a cleaner way than older version, please see the guide
Q: Will I be able to do ... with Signal?
A: My suggestion is first you need to setup normal signal server and check if it will fulfill your need.
Q: My chat only goes one way or can't send chat even when the server already set properly.
A: Probably caused by keystore haven't contain your SSL certificate / certificate did not match the url / you have not setup the Unidentified Delivery properly in the client. Will be explained in each guide of the server & clients.
Q: How to setup Turn Server? I can't do voice/video call.
A: Probably related to your port, either it is not allowed by the firewall or it is not properly set. See my example config on Coturn Server
Q: Can I subtitute AWS to MinIO?
A: I tried it here signal-minio using modification created by kondal789rao . Someone also did a pull request here: Use MinIO instead of the AWS. Also you can try to look into Localstack for local development.
Q: Can I disable / change Twilio? (by getting the generated OTP on the server)
A: Yes, it is possible, you need to change TwilioSmsSender Class, see example on Signal Server Without Twilio.
Q: Can I use Signal in localhost / internal IP / self-signed certificate (by trusting all certificate)
A: Yes, it is possible but it is not secure, see example on Signal Server Self Signed Certificate.
Q: Can I remove Google Mobile Service (GMS) from Signal?
A: Yes! A Signal user named "tx-hw" did it on their Github Fork of Signal-Android. You can read more about it on their Signal Community Post
- CDS Server: Find server with Intel SGX to try to setup custom CDS Server.
- Load Test: I want to see the performance of the custom server under stress, will update later.
This guide has been written by the help of the developers from community.
- konglomerat-id wrote the configuration and steps to setup signal server 2.55
- LiteSpeedDev wrote nginx configuration and turn/stun server
- kondal789rao modified AWS to MinIO.
- madeindra compiled the guide, improve the steps, and wrote more guide on uncovered topics
- buddhikajay wrote turn server configuration example
- sinholic wrote iOS guide
- amargarido helped to improve the readme
You are welcome to contribute on this guide, please fork the repository and create a Pull Request.
If you have any questions please create a discussion instead of issue.
You are recommended to open a discussion thread here if you face a difficulties to let the communities help you too and contributing to the communities in the process.
You can donate to me if you think this guide has helped you, your donation will greatly appreciated.
Bitcoin (BTC):
16xY3wXVNmRqBzbyQpE3VpYawbjuXkyDe2