mirror of
https://github.com/DarthJahus/mtproxy-docker.git
synced 2026-05-17 00:06:00 +03:00
Create README.md
This commit is contained in:
268
README.md
Normal file
268
README.md
Normal file
@@ -0,0 +1,268 @@
|
|||||||
|
# An Up-to-date Telegram MTProto Proxy
|
||||||
|
|
||||||
|
[](https://hub.docker.com/r/jahus/mtproxy)
|
||||||
|
[](https://hub.docker.com/r/jahus/mtproxy)
|
||||||
|
|
||||||
|
An up-to-date MTProto proxy for Telegram, built from official sources with automatic configuration updates.
|
||||||
|
|
||||||
|
## Why this image?
|
||||||
|
|
||||||
|
The official `telegrammessenger/proxy` image is **outdated** and no longer maintained. This image:
|
||||||
|
|
||||||
|
- Built from the **latest sources** from Telegram's GitHub repository
|
||||||
|
- **Automatic configuration updates** daily at 3 AM
|
||||||
|
- Support for **random padding** to avoid detection
|
||||||
|
- Simple configuration via environment variables
|
||||||
|
- Integrated healthcheck
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
### 1. Generate a secret
|
||||||
|
|
||||||
|
```bash
|
||||||
|
head -c 16 /dev/urandom | xxd -ps
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Run the proxy
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name mtproxy \
|
||||||
|
--restart unless-stopped \
|
||||||
|
-p 443:443 \
|
||||||
|
-e SECRET=your_generated_secret \
|
||||||
|
-v ./mtproxy-data:/data \
|
||||||
|
jahus/mtproxy:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. With docker-compose (recommended)
|
||||||
|
|
||||||
|
Create a `docker-compose.yml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
mtproxy:
|
||||||
|
image: jahus/mtproxy:latest
|
||||||
|
container_name: mtproxy
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "443:443"
|
||||||
|
- "8888:8888"
|
||||||
|
environment:
|
||||||
|
- SECRET=${SECRET}
|
||||||
|
- PROXY_TAG=${PROXY_TAG:-}
|
||||||
|
- WORKERS=2
|
||||||
|
- PORT=443
|
||||||
|
- STATS_PORT=8888
|
||||||
|
volumes:
|
||||||
|
- ./data:/data
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a `.env` file:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Generate with: head -c 16 /dev/urandom | xxd -ps
|
||||||
|
SECRET=your_secret_here
|
||||||
|
|
||||||
|
# Tag from @MTProxybot (optional)
|
||||||
|
# PROXY_TAG=your_tag_from_mtproxybot
|
||||||
|
```
|
||||||
|
|
||||||
|
Run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## Environment Variables
|
||||||
|
|
||||||
|
| Variable | Description | Default | Required |
|
||||||
|
|----------|-------------|--------|--------|
|
||||||
|
| `SECRET` | 16-byte secret in hex | - | Yes |
|
||||||
|
| `PROXY_TAG` | Tag from @MTProxybot | - | No |
|
||||||
|
| `WORKERS` | Number of workers | 1 | No |
|
||||||
|
| `PORT` | Client port | 443 | No |
|
||||||
|
| `STATS_PORT` | Statistics port | 8888 | No |
|
||||||
|
|
||||||
|
## Proxy Registration
|
||||||
|
|
||||||
|
**What is random padding?**
|
||||||
|
It's a technique that adds random data to mask MTProxy traffic patterns and avoid detection by ISPs. Recommended in countries with censorship. Just add `dd` before your SECRET in the URL you share or use.
|
||||||
|
|
||||||
|
### 1. Register with @MTProxybot
|
||||||
|
|
||||||
|
Send your host or IP to [@MTProxybot](https://t.me/MTProxybot) on Telegram
|
||||||
|
|
||||||
|
You will receive a **proxy tag** and a link you can share.
|
||||||
|
|
||||||
|
## Statistics and Monitoring
|
||||||
|
|
||||||
|
### View proxy statistics
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl http://localhost:8888/stats
|
||||||
|
```
|
||||||
|
|
||||||
|
### View logs
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose logs -f
|
||||||
|
```
|
||||||
|
|
||||||
|
### Healthcheck
|
||||||
|
|
||||||
|
The image includes a healthcheck that automatically verifies the proxy is running:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker inspect --format='{{json .State.Health}}' mtproxy
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration Updates
|
||||||
|
|
||||||
|
### Automatic
|
||||||
|
|
||||||
|
Telegram configuration (`proxy-secret` and `proxy-multi.conf`) is **automatically updated daily at 3 AM**.
|
||||||
|
|
||||||
|
You can check update logs:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker exec mtproxy cat /data/update.log
|
||||||
|
```
|
||||||
|
|
||||||
|
### Manual
|
||||||
|
|
||||||
|
To force an immediate update:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker exec mtproxy /usr/local/bin/update-config.sh
|
||||||
|
docker restart mtproxy
|
||||||
|
```
|
||||||
|
|
||||||
|
## Advanced Configuration
|
||||||
|
|
||||||
|
### Use a custom port
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
environment:
|
||||||
|
- PORT=8443 # Instead of 443
|
||||||
|
ports:
|
||||||
|
- "8443:8443"
|
||||||
|
```
|
||||||
|
|
||||||
|
Don't forget to open the port in your firewall.
|
||||||
|
|
||||||
|
### Increase number of workers
|
||||||
|
|
||||||
|
For a powerful server with high traffic:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
environment:
|
||||||
|
- WORKERS=4 # or more
|
||||||
|
```
|
||||||
|
|
||||||
|
### Network host mode (alternative)
|
||||||
|
|
||||||
|
If you have connectivity issues:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
mtproxy:
|
||||||
|
image: jahus/mtproxy:latest
|
||||||
|
container_name: mtproxy
|
||||||
|
restart: unless-stopped
|
||||||
|
network_mode: host
|
||||||
|
environment:
|
||||||
|
- SECRET=${SECRET}
|
||||||
|
- PROXY_TAG=${PROXY_TAG:-}
|
||||||
|
- WORKERS=2
|
||||||
|
- PORT=443
|
||||||
|
- STATS_PORT=8888
|
||||||
|
volumes:
|
||||||
|
- ./data:/data
|
||||||
|
```
|
||||||
|
|
||||||
|
## File Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
~/mtproxy/
|
||||||
|
├── docker-compose.yml
|
||||||
|
├── .env
|
||||||
|
└── data/
|
||||||
|
├── proxy-secret # Telegram config (auto-updated)
|
||||||
|
├── proxy-multi.conf # Telegram config (auto-updated)
|
||||||
|
└── update.log # Update logs
|
||||||
|
```
|
||||||
|
|
||||||
|
## Security
|
||||||
|
|
||||||
|
### Restrict stats access
|
||||||
|
|
||||||
|
By default, port 8888 (stats) is exposed. To limit it to localhost only:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
ports:
|
||||||
|
- "443:443"
|
||||||
|
- "127.0.0.1:8888:8888" # Accessible only locally
|
||||||
|
```
|
||||||
|
|
||||||
|
## Image Updates
|
||||||
|
|
||||||
|
To update to the latest version:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose pull
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage Examples
|
||||||
|
|
||||||
|
### Simple proxy for personal use
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
mtproxy:
|
||||||
|
image: jahus/mtproxy:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "443:443"
|
||||||
|
environment:
|
||||||
|
- SECRET=abc123def456...
|
||||||
|
volumes:
|
||||||
|
- ./data:/data
|
||||||
|
```
|
||||||
|
|
||||||
|
### High-performance proxy
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
mtproxy:
|
||||||
|
image: jahus/mtproxy:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "443:443"
|
||||||
|
- "127.0.0.1:8888:8888"
|
||||||
|
environment:
|
||||||
|
- SECRET=abc123def456...
|
||||||
|
- PROXY_TAG=xyz789...
|
||||||
|
- WORKERS=8
|
||||||
|
volumes:
|
||||||
|
- ./data:/data
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '4'
|
||||||
|
memory: 2G
|
||||||
|
```
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
- Report bugs: [GitHub Issues](https://github.com/darthjahus/mtproxy-docker/issues)
|
||||||
|
- Discussions: [GitHub Discussions](https://github.com/darthjahus/mtproxy-docker/discussions)
|
||||||
|
|
||||||
|
This image is not officially affiliated with Telegram.
|
||||||
Reference in New Issue
Block a user