v0.9.3

sleep3r/mtproto.zigv0.9.3Apr 8, 2026by sleep3r

Upgrading?

AI Summary

Fixes proxy link generation in AmneziaWG tunnels and adds a `public_ip` configuration option.

Key Highlights

  • Fixes incorrect proxy link (shows VPN exit IP instead of server IP)
  • Adds `[server].public_ip` config parameter
  • Faster startup when `public_ip` is set
  • Fixed crash in `setup_tunnel.sh` on re-run

New Features

  • `public_ip` configuration option
  • AmneziaWG link fix

Full Release Notes

## [0.9.3](https://github.com/sleep3r/mtproto.zig/compare/v0.9.2...v0.9.3) (2026-04-08)


### 🇷🇺 Release notes (RU)

**Что решает этот релиз**
- Исправляет неправильную ссылку на прокси при работе через AmneziaWG туннель: вместо IP сервера подставлялся IP точки выхода VPN.
- Добавляет параметр `public_ip` в конфиг для явного указания адреса (IP или домена), который используется в сгенерированных `tg://` ссылках.

**Что изменено**
- **Конфиг: `[server].public_ip`**: новый параметр, позволяющий зафиксировать IP-адрес или доменное имя (например `proxy.example.com`) в стартовом баннере и connection-ссылках. Если не задан — поведение прежнее (авто-определение через `ifconfig.me`).
- **Баннер**: при наличии `public_ip` HTTP-запросы к внешним сервисам пропускаются — быстрее старт, нет зависимости от сети.
- **`setup_tunnel.sh`**: автоматически определяет реальный IPv4 хоста (`curl -s4`) **до** запуска прокси внутри network namespace и инжектит `public_ip` в `config.toml`. Ранее `curl` мог вернуть IPv6 хоста или ничего.
- **`setup_tunnel.sh`**: исправлен краш (`set -e`) при `cp` конфига AmneziaWG, когда source и destination совпадают (повторный запуск скрипта).
- **Документация**: `config.toml.example` и README Configuration reference обновлены описанием нового параметра.

**Важно**
- Миграция `config.toml` **не требуется**: параметр `public_ip` опционален, старое поведение сохранено.
- При первом перезапуске `setup_tunnel.sh` на существующем сервере `public_ip` пропишется автоматически.
- Для стабильных ссылок рекомендуется использовать доменное имя: `public_ip = "proxy.example.com"`.

### 🇬🇧 Release notes (EN)

**What this release addresses**
- Fixes incorrect proxy link when running behind an AmneziaWG tunnel: the VPN exit IP was printed instead of the server's real address.
- Adds a `public_ip` config parameter to explicitly set the address (IP or domain) used in generated `tg://` links.

**What changed**
- **Config: `[server].public_ip`**: new parameter to pin an IP address or domain name (e.g. `proxy.example.com`) in the startup banner and connection links. When unset, behavior is unchanged (auto-detect via `ifconfig.me`).
- **Banner**: when `public_ip` is set, external HTTP requests are skipped — faster startup, no network dependency.
- **`setup_tunnel.sh`**: now detects the real host IPv4 (`curl -s4`) **before** launching the proxy inside the network namespace and injects `public_ip` into `config.toml`. Previously `curl` could return the host's IPv6 or fail silently.
- **`setup_tunnel.sh`**: fixed crash (`set -e`) on `cp` when AmneziaWG source and destination config are the same file (re-running the script).
- **Docs**: `config.toml.example` and README Configuration reference updated with the new parameter.

**Important**
- No `config.toml` migration required: `public_ip` is optional, existing behavior is preserved.
- On first `setup_tunnel.sh` re-run, `public_ip` will be auto-injected.
- For stable links, use a domain name: `public_ip = "proxy.example.com"`.

### Bug Fixes

* public IP in AmneziaWG tunnel mode ([#97](https://github.com/sleep3r/mtproto.zig/issues/97)) ([119705b](https://github.com/sleep3r/mtproto.zig/commit/119705b5d5dd5d01585ed5798c908c61aea15ff9)), closes [#96](https://github.com/sleep3r/mtproto.zig/issues/96)

Related Repositories