Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/SpaceNeuroX/proxy-turn-vk-android/llms.txt

Use this file to discover all available pages before exploring further.

wdtt-server includes a built-in Telegram bot for remote administration. Once enabled, the bot lets you create time-limited passwords, inspect usage statistics, bind or unbind devices, deactivate accounts, and generate ready-to-import connection files — all without touching the server directly. To enable the bot, set bot_token and admin_id in /etc/wdtt/passwords.json (or enter them in the Deploy tab before installing). The bot only responds to messages from the configured admin ID, so other users cannot interact with it.

Setup

1

Create a bot with @BotFather

Open Telegram, start a chat with @BotFather, and send /newbot. Follow the prompts to choose a name and username. BotFather will reply with a token in the format 123456789:ABC-....
2

Find your Telegram user ID

Send a message to @getmyid_bot (or any similar ID bot). Copy the numeric ID shown — this is your admin_id.
3

Enter both values

Either:
  • Enter them in the Secrets dialog of the Deploy tab before tapping Install, or
  • Add them manually to /etc/wdtt/passwords.json and reload: kill -HUP $(pidof wdtt-server)

Commands

CommandDescription
/start or /helpShow available commands
/newCreate a new time-limited password (interactive wizard)
/new <days>Shortcut — create a password valid for <days> days with 1 device
/new <days> <max_devices>Shortcut with device limit — e.g. /new 30 3 for 30 days, up to 3 devices
/listShow all passwords with status and inline management buttons

Creating a password

1

Start the wizard

Send /new to start the interactive flow, or use a shortcut like /new 30 to pre-fill the duration.If you used /new without arguments, the bot prompts:
📅 Enter the password validity in days (1–365) and optionally the device limit separated by a space. Examples: 30 (one month, 1 device) · 30 3 (one month, up to 3 devices)
The valid range is 1–365 days. Values outside this range are rejected.
2

Choose ports

The bot asks whether to use the standard ports (56000, 56001, 9000):
  • Yes — standard ports are used.
  • No — the bot prompts you to enter three comma-separated port numbers in DTLS,WG,TUN order, e.g. 56000,56001,9000.
The port string is stored in the ports field of the password entry and embedded in all generated links.
3

Send the VK call hash

The bot prompts:
🔑 Send the VK hash (or multiple hashes separated by commas):
Paste only the hash portion — not the full vk.com/call/join/... URL. The hash is stored in vk_hash and included in the generated connection files.
4

Receive the password and connection files

The bot replies with:
  • The generated password (16 characters drawn from ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789 — visually unambiguous, no 0/O/I/l characters)
  • Validity period and expiry date
  • Device limit
  • A wdtt:// legacy link
  • A qwdtt:// link for import into qWDTT
  • A .conf JSON file attached as a document, ready to import directly into qWDTT

Password list and management

Send /list to see all active passwords. The bot responds with a summary and an inline keyboard:
🔐 Passwords:

🔒 Main: YourStrongMainPassword (owner)

Active: 2/10

🟢 User 1 (29d)
🔗 User 2 (14d)

🟢 = free | 🔗 = bound
Status icons:
  • 🟢 — password exists but no device has connected yet (free slot)
  • 🔗 — one or more devices are bound to this password
Tap any password button to open its detail view, which shows:
ItemDescription
Name and password stringLabel and the raw password value (for copy-paste)
Quick linkwdtt:// link if vk_hash is set
Status🟢 Active or 🔴 Deactivated
ExpiryDate and days remaining, or ♾ (never expires)
TrafficDownloaded / uploaded in MB
Bound devicesDevice UUIDs, assigned IPs, and per-device traffic
From the detail view, the following actions are available:
ButtonAction
📂 Get .conf fileSends the .conf JSON import file as a document
🗑 Unbind all devicesRemoves all bound devices from WireGuard and clears device_ids; the password can be reused on a new device
⏸ DeactivateSets is_deactivated: true; all active WireGuard peers for this password are removed immediately
✅ ActivateClears is_deactivated; the password can accept connections again
❌ Delete passwordRemoves the password and all its devices from WireGuard and from passwords.json
◀️ Back to listReturns to the /list view

Generated connection files

When you tap 📂 Get .conf file or after creating a new password, the bot sends a .conf file as a Telegram document. The file contains a JSON profile compatible with qWDTT’s JSON import format:
{
  "name": "qWDTT - 203.0.113.10",
  "peer": "203.0.113.10",
  "vkHashes": "AbCdEfGhIjKl",
  "workersPerHash": 16,
  "listenPort": 9000,
  "password": "GeneratedPass01"
}
The peer field uses the server’s public IP (resolved automatically via https://api.ipify.org). workersPerHash is always 16. To import: tap the file in Telegram, choose Open in qWDTT, or use qWDTT’s Import from file option. The /list view also includes a 🔗 Link for main password button. Tapping it starts the same port-selection and hash-entry flow, then generates a wdtt:// link, a qwdtt:// link, and a .conf file for the main password — useful for sharing the owner credential with a trusted device.

Limits and cleanup

  • A maximum of 10 generated passwords can be active at any time. Attempting to create an 11th password returns an error with instructions to delete one via /list.
  • The server runs an automatic cleanup task every hour that deletes expired passwords and their WireGuard peers, and saves the updated passwords.json. Expired passwords are also cleaned up whenever /new or /list is called.
The minimum validity for a generated password is 1 day. There is no “permanent” generated password — use the main password for an always-valid credential, or set expires_at: 0 directly in passwords.json after creating the password and hot-reloading.
The bot registers /new and /list as Menu commands with BotFather automatically on startup, so they appear in the Telegram command menu without typing.

Build docs developers (and LLMs) love