A high-performance, stealthy Signal proxy written in Go, designed to provide resilient access to the Signal network.
In some regions, access to secure communication platforms like Signal is restricted or blocked. The official Signal TLS Proxy was created to help users bypass these restrictions.
SignalGoProxy is a powerful, alternative implementation of that concept. We ported the core mechanics of the official proxy to Go a language known for its performance and concurrency and added unique features to make the proxy more robust, efficient, and harder for censors to detect. It is fully compatible with the official Signal clients.
- 🚀 High Performance: Built with Go, it's lightweight, fast, and can handle a large number of concurrent connections with minimal resource usage.
- 🛡️ Stealth Modes: Camouflage your proxy traffic as a standard web server. If someone (or a censor's bot) visits your proxy's domain in a browser, they will see a generic webpage instead of revealing the proxy.
- Nginx Mode: Simulates a default Nginx welcome page.
- Apache Mode: Simulates a default Apache welcome page.
- Proxy Mode: Forwards all non-Signal traffic to a legitimate website of your choice, making your server appear completely unrelated to Signal.
- 🔒 Automatic TLS: Integrates with Let's Encrypt to automatically provision and renew TLS certificates for your domain, ensuring all traffic is securely encrypted.
- 🧩 Zero Dependencies: Distributed as a single, static binary with no external dependencies required.
- 💨 Easy Deployment: Get your proxy up and running in minutes with a simple installation script.
SignalGoProxy intelligently inspects incoming connections to differentiate between legitimate Signal traffic and other activity. This is achieved by examining the Server Name Indication (SNI) in the initial TLS handshake.
- If the SNI matches a known Signal server (e.g.,
chat.signal.org), the connection is transparently forwarded to the actual Signal server. - If the SNI does not match, or if the request is plain HTTP, the proxy serves a decoy response based on the configured "Stealth Mode".
This mechanism ensures that only genuine Signal traffic reaches its destination, while probes from network censors are diverted, protecting the proxy from being easily discovered and blocked.
- A VPS (Virtual Private Server) running a modern Linux distribution (like Debian 12/13).
- A domain name (e.g.,
signal.mydomain.com) with its A record pointing to your VPS's IP address. - Ports 80 and 443 must be open on your server's firewall.
An easy-to-use script automates the entire installation process, including downloading the binary, setting up the configuration, and creating a systemd service.
bash -c "$(curl -sL https://raw.githubusercontent.com/MrShitFox/SignalGoProxy/main/debian_x86_Installer.sh)"The script will guide you through the configuration.
-
Download the Binary: Go to the Releases page and download the latest
SignalGoProxy-v1.1.0-linux-amd64.ziparchive. -
Install the Binary:
# Unzip the archive unzip SignalGoProxy-v1.1.0-linux-amd64.zip # Move the binary to a system path sudo mv signalgoproxy /usr/local/bin/ # Make it executable sudo chmod +x /usr/local/bin/signalgoproxy
-
Run the Proxy: Run the following command, replacing the arguments with your values.
/usr/local/bin/signalgoproxy -domain YOUR_DOMAIN -stealth-mode nginx
You can configure SignalGoProxy using command-line flags:
-domain(Required): Your domain name for the TLS certificate.-stealth-mode: The camouflage mode. Options arenginx(default),apache,proxy, ornone.-proxy-url: If usingproxystealth mode, this is the full URL to which non-Signal traffic will be forwarded.
Examples:
- Nginx Mode:
signalgoproxy -domain my.domain.com -stealth-mode nginx
- Proxy to another website:
signalgoproxy -domain my.domain.com -stealth-mode proxy -proxy-url https://example.com
To ensure the proxy runs automatically on boot, create a systemd service file at /etc/systemd/system/signalgoproxy.service:
[Unit]
Description=SignalGoProxy Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/signalgoproxy -domain YOUR_DOMAIN -stealth-mode nginx
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.targetReload systemd and enable the service:
sudo systemctl daemon-reload
sudo systemctl enable signalgoproxy
sudo systemctl start signalgoproxyOnce your proxy is running, configure your Signal client to use it:
- Open Signal.
- Go to Settings > Data and storage.
- Scroll down to Use proxy click and enable it.
- Enter your full domain:
https://your.domain.com - Save the settings. Signal will automatically connect through your proxy.
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.