This app serves a webhook that forwards messages to a Telegram bot.
Designed to work with SMS to URL Forwarder (Android app).
Other potential use cases include automated notifications from server monitoring systems, Grafana, etc.
This bot is multi-user, meaning you can connect with different Telegram accounts, and forward messages separately.
- Do not use other people's servers or bots. They will have access to your messages.
- Configure HTTPS! Either with an Nginx reverse-proxy or use the built-in HTTPS support. Even without a valid certificate, it offers partial security.
- Run the server
Prebuilt image is available on dockerhub: https://hub.docker.com/r/alex3iii/messageredir
docker run -d --name messageredir-inst -e MREDIR_TG_BOT_TOKEN="YOUR_TELEGRAM_BOT_TOKEN" -v "$(pwd)/messageredir.db:/root/app/messageredir.db" -p 8089:8080 alex3iii/messageredir:latest
This will serve HTTP by default. You can pass MREDIR_TLS_CERT_FILE
and MREDIR_TLS_KEY_FILE
environment variables to enable HTTPS.
i. Copy docker-compose.yaml to an empty directory on your server.
wget https://github.com/AlexIII/messageredir/raw/refs/heads/main/docker-compose.yaml -O docker-compose.yaml
ii. Create an .env
file in the same directory and set your configuration there. Example:
MREDIR_TG_BOT_TOKEN=<YOUR_TELEGRAM_BOT_TOKEN>
MREDIR_LOG_USER_MESSAGES=true
MREDIR_TLS_CERT_FILE=tls/tls.crt # Self-signed certificate is generated by Docker Compose. When MREDIR_TLS_* are specified, the app will serve HTTPS.
MREDIR_TLS_KEY_FILE=tls/tls.key
iii. Run:
docker compose up -d
Remove -d
on the first try to see the app log (errors, etc).
The default HTTP(S) port is 8089. Create docker-compose.override.yaml
to override the port and/or other settings.
See logs with docker compose logs
.
iv. Later, if you want to update to the latest version:
docker compose down
wget https://github.com/AlexIII/messageredir/raw/refs/heads/main/docker-compose.yaml -O docker-compose.yaml
docker pull alex3iii/messageredir:latest
docker compose up -d
-
After the server is running, write to the bot from your Telegram account. The
\start
command will return an access token. -
Configure the SMS to URL Forwarder app to use this URL:
http(s)://<SERVER_IP_OR_HOSTNAME>:<SERVER_PORT>/<TOKEN_THE_BOT_ISSUED_FOR_YOU>/smstourlforwarder
When using HTTPS with a self-signed certificate, check the "ignore certificate" checkbox in the SMS to URL Forwarder app.
All properties are optional, except tgBotToken
/ TG_BOT_TOKEN
.
YAML Property | Environment Variable | Type | Description |
---|---|---|---|
tgBotToken |
MREDIR_TG_BOT_TOKEN |
string | Telegram bot token |
dbFileName |
MREDIR_DB_FILE_NAME |
string | Database file name |
userTokenLength |
MREDIR_USER_TOKEN_LENGTH |
int | User token length |
logUserMessages |
MREDIR_LOG_USER_MESSAGES |
bool | Log user messages |
restApiPort |
MREDIR_REST_API_PORT |
int | REST API port |
tlsCertFile |
MREDIR_TLS_CERT_FILE |
string | TLS certificate file |
tlsKeyFile |
MREDIR_TLS_KEY_FILE |
string | TLS key file |
logFileName |
MREDIR_LOG_FILE_NAME |
string | Log file name |
MyHost |
MREDIR_MY_HOST |
string | Hostname:Port |
HTTP POST http://<SERVER_IP_OR_HOSTNAME>:<SERVER_PORT>/<TOKEN_THE_BOT_ISSUED_FOR_YOU>/smstourlforwarder
Body format:
{
"from": "%from%",
"text": "%text%",
"sentStamp": %sentStampMs%,
"receivedStamp": %receivedStampMs%,
"sim": "%sim%"
}
MIT License © github.com/AlexIII