Skip to content

Getting Started 🚀

Private Server 🔒

Private Server Architecture

Architecture diagram of Private Server mode

To enhance privacy and control, you can host your own private server. This keeps all message data within your infrastructure while maintaining push notification capabilities through our public server at api.sms-gate.app. This setup eliminates the need to configure Firebase Cloud Messaging (FCM) or rebuild the Android app, but it does demand some technical know-how.

When to Choose Private Mode

  • 🏢 Enterprise deployments requiring full data control
  • 🔐 Enhanced security compliance needs
  • 📈 Messaging rate exceeds Public Server limit
  • 🌐 Custom integration requirements

Prerequisites ✅

To run the server, you'll need:

  • 🗄️ MySQL/MariaDB server with empty database and privileged user
  • 🐧 Linux VPS with Docker installed
  • 🔄 Reverse proxy with valid SSL certificate (project CA supported)

Run the Server 🖥️

  1. Create configuration
    Copy the example config and customize:

    Get config.yml template
    wget https://raw.githubusercontent.com/android-sms-gateway/server/master/configs/config.example.yml -O config.yml
    
    Key sections to edit:
    gateway:
        mode: private
        private_token: your-secure-token-here # (1)!
    http:
        listen: 0.0.0.0:3000
    database: # (2)!
        host: localhost
        port: 3306
        user: root
        password: root
        database: sms
        timezone: UTC
    

    1. Must match device configuration
    2. Must match MySQL/MariaDB configuration
  2. Launch container

    Docker Command
    docker run -d --name sms-gateway \
        -p 3000:3000 \
        -v $(pwd)/config.yml:/app/config.yml \
        ghcr.io/android-sms-gateway/server:latest
    

  3. Configure reverse proxy

    Example Nginx Config
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
    

Verification

Test server accessibility:

curl https://private.example.com/health
# Should return JSON health status

Configure Android App 📱

Private Server Settings

Android app configuration for private mode

Important

Changing servers will reset credentials and require device re-registration!

  1. Access Settings
    Navigate to Settings tab → Cloud Server

  2. Enter server details

    API URL: https://private.example.com/api/mobile/v1
    Private Token: your-secure-token-here
    

  3. Activate connection

    1. Switch to Home tab
    2. Activate Cloud server switch
    3. Restart the app using the bottom button

Successful Connection

New credentials will appear in Cloud Server section when configured properly:

Username: A1B2C3
Password:  z9y8x7...

Password Management 🔑

Identical to Cloud Server mode.


Additional Resources 📚