v0.17.0

sleep3r/mtproto.zigv0.17.0Apr 13, 2026by sleep3r

Upgrading?

AI Summary

Improves IPv4/IPv6 predictability by adding explicit bind address support and fixes IPv6 deep-link generation.

Key Highlights

  • New `--bind` flag and `bind_address` config option for specific IP binding.
  • IPv6 deep-link generation now correctly handles brackets and encoding.
  • Public IP detection now prefers IPv4 over IPv6.

New Features

  • Custom interface binding for proxy startup.
  • Corrected URL encoding for IPv6 in generated links.
  • Automatic dashboard redeployment during updates.

Full Release Notes

### 🇷🇺 Что нового (RU)

**Что решает этот релиз**

• Установка и ссылки стали предсказуемее в mixed IPv4/IPv6 окружениях.
• Появилась возможность привязать прокси к конкретному IP/интерфейсу.
• Обновление теперь корректно переустанавливает dashboard, если он уже был включен.

**Что изменено**

• **Новый bind address в установке и рантайме**
  • `mtbuddy install --bind <ip>`
  • `[server].bind_address` в `config.toml`
  • Прокси слушает ровно указанный IPv4/IPv6 адрес; при невалидном адресе старт останавливается с понятной ошибкой.
  • Если параметр не задан, поведение прежнее: попытка `[::]` с fallback на `0.0.0.0`.

• **Исправлены ссылки подключения для IPv6**
  • `tg://` и `t.me` ссылки теперь корректно URL-encoded для IPv6/скобок.
  • Исправление применено в `mtbuddy` summary, startup banner прокси и dashboard.
  • Убрана тихая обрезка адреса при формировании ссылки.

• **Авто-детект публичного IP теперь предпочитает IPv4**
  • Сначала проверяются IPv4-сервисы, затем fallback на IPv6.
  • Это снижает число кейсов, когда Telegram-клиенты не принимают IPv6-only deep link.

• **Обновление dashboard при `mtbuddy update`**
  • Если сервис `proxy-monitor` уже активен, dashboard автоматически переdeployится после обновления.
  • Во время update это делается в quiet-режиме, без лишнего summary-шума.

• **Документация**
  • Обновлены `README.md` и `config.toml.example` для `--bind` / `bind_address`.
  • Добавлена явная подсказка про ручной IPv4 override через `[server].public_ip`.

> [!IMPORTANT]
> Если клиент не принимает ссылку с IPv6, задайте IPv4 вручную в `/opt/mtproto-proxy/config.toml`:
>
> ```toml
> [server]
> public_ip = "203.0.113.10"
> ```

**Примеры**

```bash
# Установка с привязкой к конкретному адресу
sudo mtbuddy install --port 443 --domain wb.ru --bind 127.0.0.1 --yes
```

```toml
[server]
bind_address = "10.0.0.5"
public_ip = "203.0.113.10"
```

--------

### 🇬🇧 Release notes (EN)

**What this release addresses**

• Setup and generated links are now more predictable on mixed IPv4/IPv6 hosts.
• You can bind the proxy to a specific interface address.
• `mtbuddy update` now keeps dashboard deployments in sync when monitoring is already enabled.

**What changed**

• **New bind address support in install + runtime**
  • `mtbuddy install --bind <ip>`
  • `[server].bind_address` in `config.toml`
  • Proxy now binds to the exact IPv4/IPv6 address you set; invalid values fail fast with a clear startup error.
  • If not set, default behavior stays the same: try `[::]`, then fall back to `0.0.0.0`.

• **IPv6 deep-link fixes**
  • `tg://` and `t.me` links now URL-encode server addresses correctly (including IPv6/brackets).
  • Applied in `mtbuddy` post-install summary, proxy startup banner, and dashboard.
  • Removed silent truncation when building encoded server links.

• **Public IP detection now prefers IPv4**
  • Installer/runtime first query IPv4 endpoints, then fall back to IPv6.
  • Helps in environments where Telegram clients/networks reject IPv6-only deep links.

• **Dashboard redeploy on update**
  • `mtbuddy update` now redeploys dashboard automatically when `proxy-monitor` is already active.
  • This path runs in quiet mode to avoid noisy extra summary output.

• **Docs updates**
  • Updated `README.md` and `config.toml.example` for `--bind` / `bind_address`.
  • Added explicit guidance for forcing IPv4 via `[server].public_ip`.

> [!IMPORTANT]
> If a client rejects IPv6 links, force an IPv4 public endpoint in `/opt/mtproto-proxy/config.toml`:
>
> ```toml
> [server]
> public_ip = "203.0.113.10"
> ```

**Examples**

```bash
# Install and bind to a specific interface address
sudo mtbuddy install --port 443 --domain wb.ru --bind 127.0.0.1 --yes
```

```toml
[server]
bind_address = "10.0.0.5"
public_ip = "203.0.113.10"
```

--------

### Changelog

* feat: mtbuddy enhancements and custom bind IP ([#177](https://github.com/sleep3r/mtproto.zig/issues/177)) ([8c6796f](https://github.com/sleep3r/mtproto.zig/commit/8c6796f69030557f422d2aa6480ab440db9e2432))

Related Repositories