/signal-setup-guide

Setup guide for Signal (OpenWhisper) server & client. Please refer to the discussion section for questions & difficulties.

Primary LanguageJavaMIT LicenseMIT

Setup Guide for Signal

On this repository, you will find guides about Signal Setup that might help people who want to run their own signal server.

Disclaimer

This repository is not an official Signal Guide and there is no relation to the team behind Signal. It's just a guide written outside my work-time to help people.

These guides are provided as-is, please refer to Issue section of this readme file for more information regarding this guide.

Please do not contact me through my personal line or social media.

Requirements

  • SSL Certificate of your server's domain (For secure communication)
  • Google Recaptcha (For anti-spam in authentication)
  • Firebase (For push notification)
  • Twilio (For SMS OTP & Voice Call)
  • AWS S3 & Cloudfront (For Attachments & CDN. Can be subtituted with MinIO & LocalStack)
  • AWS SQS (For CDS queue)
  • AWS DynamoDB (For nosql database)
  • Micrometer (For monitoring)
  • Fixer (For payment)

Content

What's proven works

What's not proven work

Updating

If you have do some modification to your code and want to get update from the official git repo, you can follow UPDATING

FAQ

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

Contributor

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
  • sinholic wrote iOS guide
  • amargarido helped to improve the readme
  • jacob-pro added v4.xx guide & helped improving v5.xx
  • tronbiniyam added sms otp subtitute to use to replace Twilio

You are welcome to contribute on this guide, please fork the repository and create a Pull Request.

Issue

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.