Compare commits

...

95 Commits

Author SHA1 Message Date
mercury 3a8a843d8c update version 2025-05-20 21:39:34 +04:00
mercury 90828d1117 improve main menu 2025-05-18 19:23:42 +04:00
mercury 37e8b96bcf improve main menu 2025-05-18 11:30:59 +04:00
mercury 306bc41813 improve main menu 2025-05-18 03:29:15 +04:00
mercury f6e5da382b reset vless stats monthly 2025-05-17 16:18:46 +04:00
mercury d7ed7042ec update version 2025-05-17 14:54:58 +04:00
mercury 4496a30552 add status process container 2025-05-17 14:49:32 +04:00
mercury ca1a596f85 fix crash vless when enable timer user 2025-05-17 14:24:22 +04:00
mercury b3edf1bdcc Merge branch 'dev' of github.com:mercurykd/vpnbot into dev 2025-05-17 13:55:28 +04:00
mercury c6306aa918 vless: check already exists user 2025-05-17 13:52:45 +04:00
Konstantin d5bbc9a564 Merge pull request #39 from legiz-ru/dev
add no overwrite key for Clash Mi
2025-05-10 12:22:57 +04:00
legiz-ru d2aab8ee4b add no overwrite key for Clash Mi 2025-05-09 22:18:30 +03:00
mercury 304217d36e Периодическое падение upstream при запуске сервисов 2025-04-26 23:37:37 +04:00
mercury 2622397542 mihomo: udp true 2025-04-18 23:40:33 +04:00
mercury 702123e39c vless: ip limit only notifies 2025-04-17 00:58:13 +04:00
mercury 01ef7707c4 fix first start 2025-04-14 11:36:26 +04:00
mercury 064d39d80b Excess image php 2025-04-09 18:12:18 +04:00
mercury 1b93d41421 cyclical rebooting panel adguardhome fix 2025-04-07 00:22:50 +04:00
mercury e41c8e30a4 fix warp 2025-04-06 23:57:46 +04:00
mercury 260f988360 Merge branch 'dev' of github.com:mercurykd/vpnbot into dev 2025-04-05 00:38:54 +04:00
mercury ca4905220d np/oc the domain is preserved when transferring 2025-04-05 00:36:08 +04:00
Konstantin 08c5ff136e Merge pull request #38 from legiz-ru/dev
new variable ~dnspath~
2025-03-04 15:45:18 +04:00
legiz-ru 8709531717 new variable ~dnspath~
new variable ~dnspath~ for client templates (required for future release sing-box 1.12)
2025-03-04 12:41:23 +03:00
Konstantin 71f53c3575 Merge pull request #37 from legiz-ru/dev
update singbox 1.11.4 windows x64
2025-03-04 12:16:19 +04:00
legiz-ru 2607f1f264 update singbox 1.11.4 windows x64 2025-03-04 10:46:56 +03:00
mercury a94cab7dc1 fix ip limit user off 2025-03-02 18:41:18 +04:00
mercury 694d446402 update version 2025-02-22 18:56:42 +04:00
mercury 6074d40643 update version 2025-02-22 18:52:17 +04:00
mercury 4b1df94325 Revert "add clash mode selector for sing-box clients"
This reverts commit fb22744fa7.
2025-02-22 18:51:49 +04:00
mercury 232c75d5bf Merge branch 'dev' of github.com:mercurykd/vpnbot into dev 2025-02-22 18:50:32 +04:00
mercury 5e860a4896 fix addruleset for block outbound 2025-02-22 18:47:36 +04:00
Konstantin 5b05486b98 Merge pull request #35 from legiz-ru/dev
add clash mode selector for sing-box clients
2025-02-13 10:13:38 +04:00
legiz-ru fb22744fa7 add clash mode selector for sing-box clients 2025-02-13 08:11:20 +03:00
mercury af812b7c93 vless: stats collect improve 2025-02-12 13:29:08 +04:00
mercury 3302ca8871 vless stats: fix delete user 2025-02-12 12:50:39 +04:00
mercury 2c5eff03d5 vless stats: fix reset user stats 2025-02-12 00:25:23 +04:00
mercury a8a203041f vless stats: fix reset user stats 2025-02-11 22:48:47 +04:00
mercury a21c9b5fe9 update version 2025-02-11 00:14:07 +04:00
mercury 696779450f ip limit: count ip 2025-02-11 00:12:21 +04:00
mercury 7c5b3dfa3a xray: fix stats user 2025-02-10 23:58:17 +04:00
mercury 74404559f9 xray: stats to separate file 2025-02-10 23:33:38 +04:00
mercury 11e8fb468b singbox: return mixed-in port 2025-02-10 10:03:27 +04:00
mercury ca92ca703f update version 2025-02-08 15:52:49 +04:00
mercury f527888db8 vless: singbox 1.11 migrate 2025-02-08 15:51:44 +04:00
mercury 0e47a771cc Reapply "update singbox 1.11 windows x64"
This reverts commit 414a67c10d.
2025-02-08 15:51:20 +04:00
mercury ff10cbefc8 vless: fix reset stats 2025-02-07 22:44:55 +04:00
mercury 3371ba4bae update version 2025-02-07 00:53:07 +04:00
mercury 621fb08467 vless stats fix 2025-02-07 00:47:52 +04:00
mercury 5153b2c94a vless stats fix 2025-02-07 00:36:49 +04:00
mercury 1e9461cc49 vless: global stats traffic 2025-02-06 17:34:25 +04:00
mercury 88f48a036c autoclean logs 2025-02-06 17:33:56 +04:00
mercury b40e052d3f vless: add user with uuid 2025-02-06 16:34:14 +04:00
mercury a43082ae27 vless: global stats traffic 2025-02-06 16:25:36 +04:00
mercury c2cd945991 hashbot migration with backup 2025-02-06 16:09:21 +04:00
mercury 0737327e4b vless ip limit: ability change window time 2025-02-05 21:34:01 +04:00
mercury f620bf12cd vless ip limit: improve message 2025-02-05 17:26:03 +04:00
mercury 8b3730c61f vless ip limit improve 2025-02-05 17:01:52 +04:00
mercury c6d9dcd47b vless: batch adding users 2025-02-05 16:13:55 +04:00
mercury d83ba51d81 vless ip limit 2025-02-05 16:00:32 +04:00
mercury 1a593100b7 update version 2025-02-02 14:24:05 +04:00
mercury 414a67c10d Revert "update singbox 1.11 windows x64"
This reverts commit 284b025881.
2025-02-02 13:29:51 +04:00
mercury f92b484011 Revert "fix singbox template"
This reverts commit 86261e6b76.
2025-02-02 11:52:02 +04:00
mercury 7af0276944 Revert "Migrate to sing-box 1.11"
This reverts commit 6d1ab0cb3a.
2025-02-02 01:56:15 +04:00
mercury 24aaa8756c update version 2025-02-02 00:05:02 +04:00
mercury 07e2beff9b xray stats improve 2025-01-31 18:15:48 +04:00
mercury 86261e6b76 fix singbox template 2025-01-31 12:30:45 +04:00
Konstantin d816582e6f Merge pull request #34 from legiz-ru/dev
Migrate to sing-box 1.11
2025-01-30 19:04:30 +04:00
legiz-ru 6d1ab0cb3a Migrate to sing-box 1.11 2025-01-30 17:55:27 +03:00
legiz-ru 284b025881 update singbox 1.11 windows x64 2025-01-30 17:51:19 +03:00
mercury 0ca93b56a3 vless: ~email~ tag in subscription 2025-01-29 18:18:28 +04:00
mercury 7bcd8de007 vless: reset stats user 2025-01-29 11:04:06 +04:00
mercury 34eb950852 ip-cidr route 2025-01-24 22:09:05 +04:00
mercury 46021855a5 improve wg client menu 2025-01-23 00:55:44 +04:00
mercury 29c18ceb9d update readme 2025-01-20 01:04:24 +04:00
mercury 49d0827b9e update version 2025-01-18 23:39:39 +04:00
mercury 07e04c384a Merge branch 'dev' of github.com:mercurykd/vpnbot into dev 2025-01-18 23:33:29 +04:00
mercury 579457b4f4 show xray stats 2025-01-18 23:33:00 +04:00
mercury 3dac9416ca fix download mihomo template 2025-01-18 23:32:31 +04:00
mercury 5b4d3b5627 reality degenerate pattern improve 2025-01-18 23:31:58 +04:00
mercury 658e125cd8 show group id 2025-01-18 23:31:01 +04:00
Konstantin 1840555573 Merge pull request #33 from legiz-ru/dev
update singbox 1.10.7 windows x64
2025-01-18 18:23:20 +04:00
legiz-ru ecdc028226 update singbox 1.10.7 windows x64 2025-01-18 16:57:39 +03:00
mercury d432bf82f2 force inclusion of xray statistics 2025-01-16 01:04:33 +04:00
mercury 211e2c079d collect xray metrics 2025-01-13 15:32:54 +04:00
Konstantin 1696c4da7b Merge pull request #32 from legiz-ru/dev
v2ray(xray) client templates update
2025-01-12 02:23:56 +04:00
legiz-ru b8d5700eba v2ray(xray) client update
return warp+block domain routes
replace rule for directing
2025-01-12 01:17:23 +03:00
mercury 7e20c14299 update version 2025-01-07 21:02:43 +04:00
mercury b9155cf674 fix show ports on start 2025-01-07 21:00:06 +04:00
mercury 159f775e12 port accounting for shadowsocks 2025-01-07 18:30:57 +04:00
mercury ae672439be return shadowsocks 2025-01-07 18:01:44 +04:00
mercury 6dafba5618 update version 2025-01-04 22:56:21 +04:00
mercury 7daf61a4f5 improve main menu 2025-01-04 21:52:26 +04:00
mercury f9266827c9 ability to install the desired version 2025-01-03 17:09:51 +04:00
mercury 9e22c64771 update readme 2025-01-03 16:22:10 +04:00
mercury a2026a4436 adaptation of the log analyzer 2025-01-03 13:55:49 +04:00
20 changed files with 1166 additions and 346 deletions
+745 -129
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -30,7 +30,7 @@ $i = [
'ru' => 'PAC', 'ru' => 'PAC',
], ],
'chat' => [ 'chat' => [
'en' => 'discussion group', 'en' => 'chat',
'ru' => 'чат поддержки', 'ru' => 'чат поддержки',
], ],
'back' => [ 'back' => [
+1 -1
View File
@@ -38,7 +38,7 @@ switch (true) {
// adguard cookie // adguard cookie
case preg_match('~^' . preg_quote("/webapp$hash/check") . '~', $_SERVER['REQUEST_URI']) && $webapp: case preg_match('~^' . preg_quote("/webapp$hash/check") . '~', $_SERVER['REQUEST_URI']) && $webapp:
setcookie('c', substr(hash('sha256', $c['key']), 0, 8), 0, '/'); setcookie('c', $hash, 0, '/');
echo "/adguard$hash/"; echo "/adguard$hash/";
break; break;
+10
View File
@@ -0,0 +1,10 @@
<?php
require __DIR__ . '/timezone.php';
// require __DIR__ . '/debug.php';
require __DIR__ . '/bot.php';
require __DIR__ . '/config.php';
require __DIR__ . '/i18n.php';
(new Bot($c['key'], $i))->analyzeXray();
+1
View File
@@ -13,6 +13,7 @@ if ($c['debug']) {
$bot = new Bot($c['key'], $i); $bot = new Bot($c['key'], $i);
$bot->selfUpdate(); $bot->selfUpdate();
$bot->ssPswdCheck();
$bot->restartTG(); $bot->restartTG();
if (!empty($bot->selfupdate)) { if (!empty($bot->selfupdate)) {
$bot->offWarp(); $bot->offWarp();
+9
View File
@@ -72,6 +72,7 @@
"uuid": "~uid~", "uuid": "~uid~",
"network": "tcp", "network": "tcp",
"flow": "xtls-rprx-vision", "flow": "xtls-rprx-vision",
"udp": true,
"tls": true, "tls": true,
"reality-opts": { "reality-opts": {
"public-key": "~public_key~", "public-key": "~public_key~",
@@ -133,6 +134,14 @@
"behavior": "domain", "behavior": "domain",
"name": "pac" "name": "pac"
}, },
{
"type": "RULE-SET",
"list": "~subnet~",
"action": "PROXY",
"interval": 30,
"behavior": "ipcidr",
"name": "subnet"
},
{ {
"type": "MATCH", "type": "MATCH",
"action": "DIRECT" "action": "DIRECT"
+24
View File
@@ -97,6 +97,18 @@ http {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 5d; proxy_read_timeout 5d;
} }
location /v2ray {
access_log /logs/nginx_v2ray_access;
proxy_redirect off;
proxy_buffering off;
proxy_http_version 1.1;
proxy_pass http://ss:8388/;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /dns-query { location /dns-query {
access_log /logs/nginx_doh_access; access_log /logs/nginx_doh_access;
proxy_http_version 1.1; proxy_http_version 1.1;
@@ -162,6 +174,17 @@ http {
# proxy_pass http://php; # proxy_pass http://php;
# } # }
# location /v2ray {
# access_log /logs/nginx_v2ray_access;
# proxy_redirect off;
# proxy_buffering off;
# proxy_http_version 1.1;
# proxy_pass http://ss:8388/;
# proxy_set_header Host $http_host;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "upgrade";
# }
# location /ws { # location /ws {
# proxy_pass http://xr:443; # proxy_pass http://xr:443;
# proxy_redirect off; # proxy_redirect off;
@@ -173,6 +196,7 @@ http {
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_read_timeout 5d; # proxy_read_timeout 5d;
# } # }
# location /dns-query { # location /dns-query {
# access_log /logs/nginx_doh_access; # access_log /logs/nginx_doh_access;
# proxy_http_version 1.1; # proxy_http_version 1.1;
+24
View File
@@ -97,6 +97,18 @@ http {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 5d; proxy_read_timeout 5d;
} }
location /v2ray {
access_log /logs/nginx_v2ray_access;
proxy_redirect off;
proxy_buffering off;
proxy_http_version 1.1;
proxy_pass http://ss:8388/;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /dns-query { location /dns-query {
access_log /logs/nginx_doh_access; access_log /logs/nginx_doh_access;
proxy_http_version 1.1; proxy_http_version 1.1;
@@ -162,6 +174,17 @@ http {
# proxy_pass http://php; # proxy_pass http://php;
# } # }
# location /v2ray {
# access_log /logs/nginx_v2ray_access;
# proxy_redirect off;
# proxy_buffering off;
# proxy_http_version 1.1;
# proxy_pass http://ss:8388/;
# proxy_set_header Host $http_host;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "upgrade";
# }
# location /ws { # location /ws {
# proxy_pass http://xr:443; # proxy_pass http://xr:443;
# proxy_redirect off; # proxy_redirect off;
@@ -173,6 +196,7 @@ http {
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_read_timeout 5d; # proxy_read_timeout 5d;
# } # }
# location /dns-query { # location /dns-query {
# access_log /logs/nginx_doh_access; # access_log /logs/nginx_doh_access;
# proxy_http_version 1.1; # proxy_http_version 1.1;
+36 -21
View File
@@ -9,12 +9,12 @@
"tag": "tun-in", "tag": "tun-in",
"domain_strategy": "prefer_ipv4", "domain_strategy": "prefer_ipv4",
"interface_name": "sing-tun", "interface_name": "sing-tun",
"address": ["172.19.0.1\/30"], "address": [
"172.19.0.1\/30"
],
"mtu": 1400, "mtu": 1400,
"gso": true,
"auto_route": true, "auto_route": true,
"strict_route": true, "strict_route": true,
"sniff": true,
"endpoint_independent_nat": false, "endpoint_independent_nat": false,
"stack": "mixed", "stack": "mixed",
"platform": { "platform": {
@@ -27,14 +27,9 @@
}, },
{ {
"type": "mixed", "type": "mixed",
"tag": "mixed-in", "tag": "in",
"domain_strategy": "prefer_ipv4",
"listen": "127.0.0.1", "listen": "127.0.0.1",
"listen_port": 2080, "listen_port": 2080
"tcp_fast_open": true,
"sniff": true,
"sniff_override_destination": false,
"users": []
} }
], ],
"dns": { "dns": {
@@ -92,23 +87,28 @@
{ {
"type": "direct", "type": "direct",
"tag": "direct" "tag": "direct"
},
{
"type": "block",
"tag": "block"
},
{
"type": "dns",
"tag": "dns-out"
} }
], ],
"route": { "route": {
"auto_detect_interface": true, "auto_detect_interface": true,
"override_android_vpn": true, "override_android_vpn": true,
"rules": [ "rules": [
{
"action": "sniff"
},
{ {
"protocol": "dns", "protocol": "dns",
"outbound": "dns-out" "action": "hijack-dns"
},
{
"inbound": "in",
"action": "resolve",
"strategy": "prefer_ipv4"
},
{
"inbound": "in",
"action": "sniff",
"timeout": "1s"
}, },
{ {
"addruleset": true, "addruleset": true,
@@ -129,6 +129,21 @@
], ],
"outbound": "~outbound~" "outbound": "~outbound~"
}, },
{
"addruleset": true,
"createruleset": [
{
"name": "subnet",
"interval": "30s",
"rules": [
{
"ip_cidr": "~subnet~"
}
]
}
],
"outbound": "~outbound~"
},
{ {
"addruleset": true, "addruleset": true,
"createruleset": [ "createruleset": [
@@ -172,7 +187,7 @@
] ]
} }
], ],
"outbound": "block" "action": "reject"
}, },
{ {
"addruleset": true, "addruleset": true,
@@ -192,4 +207,4 @@
], ],
"final": "direct" "final": "direct"
} }
} }
+111 -81
View File
@@ -4,92 +4,122 @@
"error": "", "error": "",
"loglevel": "warning" "loglevel": "warning"
}, },
"inbounds": [{ "inbounds": [
"tag": "socks", {
"port": 10808, "tag": "socks",
"listen": "127.0.0.1", "port": 10808,
"protocol": "socks", "listen": "127.0.0.1",
"sniffing": { "protocol": "socks",
"enabled": true, "sniffing": {
"destOverride": ["http", "tls"], "enabled": true,
"routeOnly": false "destOverride": [
}, "http",
"settings": { "tls"
"auth": "noauth", ],
"udp": true, "routeOnly": false
"allowTransparent": false },
} "settings": {
}, { "auth": "noauth",
"tag": "http", "udp": true,
"port": 10809, "allowTransparent": false
"listen": "127.0.0.1",
"protocol": "http",
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"],
"routeOnly": false
},
"settings": {
"auth": "noauth",
"udp": true,
"allowTransparent": false
}
}],
"outbounds": [{
"tag": "~outbound~",
"protocol": "vless",
"settings": {
"vnext": [{
"address": "~domain~",
"port": 443,
"users": [{
"id": "~uid~",
"alterId": 0,
"email": "t@t.tt",
"security": "auto",
"encryption": "none",
"flow": "xtls-rprx-vision"
}]
}]
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"serverName": "~server_name~",
"fingerprint": "chrome",
"show": false,
"publicKey": "~public_key~",
"shortId": "~short_id~",
"spiderX": ""
} }
}, },
"mux": { {
"enabled": false, "tag": "http",
"concurrency": -1 "port": 10809,
} "listen": "127.0.0.1",
}, { "protocol": "http",
"tag": "direct", "sniffing": {
"protocol": "freedom" "enabled": true,
}, { "destOverride": [
"tag": "block", "http",
"protocol": "blackhole", "tls"
"settings": { ],
"response": { "routeOnly": false
"type": "http" },
"settings": {
"auth": "noauth",
"udp": true,
"allowTransparent": false
} }
} }
}], ],
"outbounds": [
{
"tag": "direct",
"protocol": "freedom"
},
{
"tag": "~outbound~",
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "~domain~",
"port": 443,
"users": [
{
"id": "~uid~",
"alterId": 0,
"email": "t@t.tt",
"security": "auto",
"encryption": "none",
"flow": "xtls-rprx-vision"
}
]
}
]
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"serverName": "~server_name~",
"fingerprint": "chrome",
"show": false,
"publicKey": "~public_key~",
"shortId": "~short_id~",
"spiderX": ""
}
},
"mux": {
"enabled": false,
"concurrency": -1
}
},
{
"tag": "block",
"protocol": "blackhole",
"settings": {
"response": {
"type": "http"
}
}
}
],
"routing": { "routing": {
"domainStrategy": "AsIs", "domainStrategy": "AsIs",
"rules": [{ "rules": [
"type": "field", {
"outboundTag": "~outbound~", "type": "field",
"domain": "~pac~" "outboundTag": "block",
}, { "domain": "~block~"
"type": "field", },
"port": "0-65535", {
"outboundTag": "direct" "type": "field",
}] "outboundTag": "~outbound~",
"domain": "~pac~"
},
{
"type": "field",
"outboundTag": "~outbound~",
"ip": "~subnet~"
},
{
"type": "field",
"outboundTag": "~outbound~",
"domain": "~warp~"
}
]
} }
} }
+39 -1
View File
@@ -22,6 +22,15 @@
} }
}, },
"tag": "vless_tls" "tag": "vless_tls"
},
{
"listen": "127.0.0.1",
"port": 8080,
"protocol": "dokodemo-door",
"settings": {
"address": "127.0.0.1"
},
"tag": "api"
} }
], ],
"log": { "log": {
@@ -40,6 +49,35 @@
], ],
"routing": { "routing": {
"domainStrategy": "AsIs", "domainStrategy": "AsIs",
"rules": [] "rules": [
{
"inboundTag": [
"api"
],
"outboundTag": "api",
"type": "field"
}
]
},
"stats": {},
"api": {
"services": [
"StatsService"
],
"tag": "api"
},
"policy": {
"levels": {
"0": {
"statsUserUplink": true,
"statsUserDownlink": true
}
},
"system": {
"statsInboundUplink": true,
"statsInboundDownlink": true,
"statsOutboundUplink": true,
"statsOutboundDownlink": true
}
} }
} }
+77 -6
View File
@@ -42,8 +42,18 @@ services:
depends_on: depends_on:
php: php:
condition: service_healthy condition: service_healthy
ng:
condition: service_started
ad: ad:
condition: service_started condition: service_started
ss:
condition: service_started
xr:
condition: service_started
oc:
condition: service_started
np:
condition: service_started
env_file: env_file:
- path: ./.env - path: ./.env
required: true # default required: true # default
@@ -77,9 +87,6 @@ services:
- 80:80 - 80:80
hostname: nginx hostname: nginx
container_name: nginx-${VER} container_name: nginx-${VER}
depends_on:
up:
condition: service_started
env_file: env_file:
- path: ./.env - path: ./.env
required: true # default required: true # default
@@ -93,6 +100,9 @@ services:
xray: xray:
ipv4_address: 10.10.1.2 ipv4_address: 10.10.1.2
logging: *default-logging logging: *default-logging
depends_on:
php:
condition: service_healthy
php: php:
image: mercurykd/vpnbot-php:1.7 image: mercurykd/vpnbot-php:1.7
build: build:
@@ -145,7 +155,7 @@ services:
timeout: 5s timeout: 5s
retries: 5 retries: 5
service: service:
image: mercurykd/vpnbot-php:1.6 image: mercurykd/vpnbot-php:1.7
build: build:
dockerfile: dockerfile/php.dockerfile dockerfile: dockerfile/php.dockerfile
args: args:
@@ -162,6 +172,7 @@ services:
- ./update:/update - ./update:/update
- ./.git:/.git - ./.git:/.git
- ./scripts/start_service.sh:/start_service.sh - ./scripts/start_service.sh:/start_service.sh
- ./docker-compose.override.yml:/docker/compose
- /var/run/docker.sock:/var/run/docker.sock:ro - /var/run/docker.sock:/var/run/docker.sock:ro
environment: environment:
IP: ${IP} IP: ${IP}
@@ -192,6 +203,8 @@ services:
- xr - xr
- oc - oc
- np - np
- proxy
- ss
wg: wg:
image: mercurykd/vpnbot-wg:1.1 image: mercurykd/vpnbot-wg:1.1
build: build:
@@ -427,7 +440,7 @@ services:
ipv4_address: 10.10.0.12 ipv4_address: 10.10.0.12
logging: *default-logging logging: *default-logging
wp: wp:
image: mercurykd/vpnbot-wp:1.2 image: mercurykd/vpnbot-wp:1.3
build: build:
dockerfile: dockerfile/warp.dockerfile dockerfile: dockerfile/warp.dockerfile
args: args:
@@ -437,7 +450,7 @@ services:
devices: devices:
- /dev/net/tun:/dev/net/tun - /dev/net/tun:/dev/net/tun
volumes: volumes:
- ./config/.profile:/root/.ashrc:ro - ./config/.profile:/root/.bashrc:ro
- ./ssh:/ssh - ./ssh:/ssh
- ./config/sshd_config:/etc/ssh/sshd_config - ./config/sshd_config:/etc/ssh/sshd_config
- ./config:/config - ./config:/config
@@ -460,3 +473,61 @@ services:
default: default:
ipv4_address: 10.10.0.13 ipv4_address: 10.10.0.13
logging: *default-logging logging: *default-logging
proxy:
image: mercurykd/vpnbot-ss:1.2
build:
dockerfile: dockerfile/shadowsocks.dockerfile
args:
image: ${IMAGE}
volumes:
- ./config/.profile:/root/.ashrc:ro
- ./config/sslocal.json:/config.json
- ./ssh:/ssh
- ./config/sshd_config:/etc/ssh/sshd_config
- ./scripts/start_proxy.sh:/start_proxy.sh
hostname: proxy
container_name: proxy-${VER}
depends_on:
php:
condition: service_healthy
networks:
default:
ipv4_address: 10.10.0.3
environment:
TZ: ${TZ}
env_file:
- path: ./.env
required: true # default
- path: ./override.env
required: false
stop_grace_period: 1s
command: ["/bin/sh", "/start_proxy.sh"]
logging: *default-logging
ss:
image: mercurykd/vpnbot-ss:1.2
build:
dockerfile: dockerfile/shadowsocks.dockerfile
args:
image: ${IMAGE}
volumes:
- ./config/.profile:/root/.ashrc:ro
- ./config/ssserver.json:/config.json
- ./ssh:/ssh
- ./config/sshd_config:/etc/ssh/sshd_config
- ./scripts/start_ss.sh:/start_ss.sh
hostname: shadowsocks
container_name: shadowsocks-${VER}
depends_on:
php:
condition: service_healthy
env_file:
- path: ./.env
required: true # default
- path: ./override.env
required: false
stop_grace_period: 1s
command: ["/bin/sh", "/start_ss.sh"]
networks:
default:
ipv4_address: 10.10.0.6
logging: *default-logging
+3 -13
View File
@@ -1,16 +1,6 @@
FROM ubuntu:22.04 AS build FROM ubuntu:22.04
RUN apt update && apt install -y curl gpg lsb-release \ RUN apt update && apt install -y curl gpg socat jq lsb-release openssh-server \
&& curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg \ && curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg \
&& echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/cloudflare-client.list \ && echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/cloudflare-client.list \
&& apt update && apt install -y cloudflare-warp && apt update && apt install -y cloudflare-warp \
FROM alpine:3.17
ARG GLIBC_VERSION=2.34-r0
COPY --from=build /usr/bin/warp-cli /usr/bin/warp-svc /usr/local/bin/
RUN apk add --no-cache dbus-libs wget socat openssh-server jq curl \
&& mkdir /tmp/glibc-pkgs \
&& for PKG in glibc-$GLIBC_VERSION.apk glibc-bin-$GLIBC_VERSION.apk; do wget -q --directory-prefix /tmp/glibc-pkgs https://github.com/sgerrand/alpine-pkg-glibc/releases/download/$GLIBC_VERSION/$PKG; done \
&& apk add --no-cache --allow-untrusted --force-overwrite /tmp/glibc-pkgs/* \
&& rm -rf /tmp/glibc-pkgs \
&& /usr/glibc-compat/sbin/ldconfig /lib /usr/glibc-compat/lib \
&& mkdir /root/.ssh && mkdir /root/.ssh
+3 -1
View File
@@ -32,7 +32,7 @@ up: # консоль сервиса
ad: # консоль сервиса ad: # консоль сервиса
docker compose exec ad /bin/sh docker compose exec ad /bin/sh
wp: # консоль сервиса wp: # консоль сервиса
docker compose exec wp /bin/sh docker compose exec wp bash
proxy: # консоль сервиса proxy: # консоль сервиса
docker compose exec proxy /bin/sh docker compose exec proxy /bin/sh
tg: # консоль сервиса tg: # консоль сервиса
@@ -41,6 +41,8 @@ xr: # консоль сервиса
docker compose exec xr /bin/sh docker compose exec xr /bin/sh
oc: # консоль сервиса oc: # консоль сервиса
docker compose exec oc /bin/sh docker compose exec oc /bin/sh
service: # консоль сервиса
docker compose exec service /bin/sh
clean: clean:
docker image prune docker image prune
docker builder prune docker builder prune
+18 -89
View File
@@ -1,100 +1,29 @@
telegram bot to manage servers (inside the bot) telegram bot to manage servers (inside the bot)
<img src="https://github.com/user-attachments/assets/ec5faa51-987c-461a-a973-d94c7edf7115" width="300"> - VLESS (Reality OR Websocket)
- NaiveProxy
### VLESS (Reality OR Websocket) - OpenConnect
- change secret - Wireguard
- qr/config - Amnezia
- change fake domain - AdguardHome
- multiple users - MTProto
- subscriptions with routing (xray, sing-box, mihomo) - PAC
- routing templates per user - automatic ssl
- routing via rulesets (sing-box, mihomo)
- steal from yourself
- add domains to warp
### Main menu VLESS:
<img src="https://github.com/user-attachments/assets/80d2f671-fade-4819-a96a-efa253741ffd" width="300">
### User menu VLESS:
<img src="https://github.com/user-attachments/assets/5c3c5b5e-1931-4e98-a472-d303bac61a4e" width="300">
### NaiveProxy
- change login
- change password
<img src="https://github.com/mercurykd/vpnbot/assets/30900414/2127a4af-0436-452c-bfe2-c750dd5dbc06" width="300">
### OpenConnect
- change secret
- change password
- change dns
- add user
- add ip subnet
- expose-iroutes (lan between users)
<img src="https://github.com/user-attachments/assets/c3a8a78e-fe99-423c-a626-610b333a2a56" width="300">
### Wireguard / Amnezia
- create
- delete
- rename
- timer
- torrent blocking
- qr/config
- AmneziaVPN vpn:// link
- statistics
<img src="https://github.com/mercurykd/vpnbot/assets/30900414/51a79c93-8083-40ba-a14b-a6ef19f00531" width="300">
<img src="https://github.com/mercurykd/vpnbot/assets/30900414/fd6ffd9f-bd75-479c-8dca-ea6c0b938b6c" width="300">
### Shadowsocks + v2ray
- change password
- on/off v2ray
- qr
- short link
<img src="https://github.com/mercurykd/vpnbot/assets/30900414/fbe39617-63ae-4536-8ab0-e4269ed8784a" width="300">
### AdguardHome
- change password
- change upstream dns
- check dns
- check safesearch
- add custom clientID for DNSoverTLS (DOT)
- fill allowed clients (WG/AWG + OpenConnect + VLESS)
- custom ID for each user VLESS
<img src="https://github.com/user-attachments/assets/1dcdd9f9-f781-4ec2-8e32-01ce6095e0a3" width="300">
### PAC
- the ability to create your own PAC available by url with the ability to substitute the final ip and port
- Shadowsocks Android PAC
- add [antifilter-community](https://community.antifilter.download/) or [ru-bundle](https://github.com/legiz-ru/sb-rule-sets/blob/main/ru-bundle.lst) domain lists
<img src="https://github.com/user-attachments/assets/8d039dbb-6478-43a8-811a-4279e766c884" width="300">
### MTProto
- change secret
- qr/config
<img src="https://github.com/user-attachments/assets/d37b2e1c-f991-4e1c-8060-1b547eea8fe2" width="300">
### Settings
- add/change admin
- change language (en/ru)
- import/export all settings
- domain binding
- obtain ssl for domain
- fake html for domain
- ports block
<img src="https://github.com/user-attachments/assets/82b78014-eaa2-4b4c-bc90-77f58d03d57c" width="300">
--- ---
environment: ubuntu 22.04/24.04, debian 11/12 environment: ubuntu 22.04/24.04, debian 11/12
### Install: ## Install:
```shell ```shell
wget -O- https://raw.githubusercontent.com/mercurykd/vpnbot/master/scripts/init.sh | sh -s YOUR_TELEGRAM_BOT_KEY wget -O- https://raw.githubusercontent.com/mercurykd/vpnbot/master/scripts/init.sh | sh -s YOUR_TELEGRAM_BOT_KEY master
``` ```
#### Restart:
### Install as service (autoload on start):
```shell ```shell
cd /root/vpnbot make r
bash scripts/install_as_service.sh
``` ```
#### autoload:
```shell
crontab -e
```
add `@reboot cd /root/vpnbot && make r` and save
+2
View File
@@ -1,3 +1,4 @@
TAG="${2:-master}"
apt update apt update
apt install -y \ apt install -y \
ca-certificates \ ca-certificates \
@@ -13,6 +14,7 @@ apt install -y \
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
git clone https://github.com/mercurykd/vpnbot.git git clone https://github.com/mercurykd/vpnbot.git
cd ./vpnbot cd ./vpnbot
git checkout $TAG
echo "<?php echo "<?php
\$c = ['key' => '$1'];" > ./app/config.php \$c = ['key' => '$1'];" > ./app/config.php
+1
View File
@@ -2,4 +2,5 @@ cat /ssh/key.pub > /root/.ssh/authorized_keys
ssh-keygen -A ssh-keygen -A
exec /usr/sbin/sshd -D -e "$@" & exec /usr/sbin/sshd -D -e "$@" &
php service.php php service.php
php iplimit.php &
php cron.php php cron.php
+4 -3
View File
@@ -1,9 +1,10 @@
cat /ssh/key.pub > /root/.ssh/authorized_keys cat /ssh/key.pub > /root/.ssh/authorized_keys
ssh-keygen -A echo 'HostKeyAlgorithms +ssh-rsa' >> /etc/ssh/sshd_config
exec /usr/sbin/sshd -D -e "$@" & echo 'PubkeyAcceptedKeyTypes +ssh-rsa' >> /etc/ssh/sshd_config
service ssh start
off=$(cat /config/pac.json | jq -r .warpoff) off=$(cat /config/pac.json | jq -r .warpoff)
key=$(cat /config/pac.json | jq -r .warp) key=$(cat /config/pac.json | jq -r .warp)
if [ "$off" == 'null' ] if [ "$off" = 'null' ]
then then
warp-svc > /dev/null & warp-svc > /dev/null &
sleep 3 sleep 3
Binary file not shown.
+57
View File
@@ -1,3 +1,60 @@
20.05.2025 v2.20
- коррекция главного меню
- vless: опция обнуления статы ежемесячно
17.05.2025 v2.19
- фикс падения vless при одинаковом имени пользователей
- фикс падения vless при установке таймера для выключенного пользователя
- подсветка в меню работы процесса контейнера
- overwrite=no для импорта клеш подписки (legiz)
18.04.2025 v2.18
- фикс отсутствия ssl при первом старте
- iplimit уведомляет без отключения пользователя
- включение udp в mihomo-шаблоне
- удаление лишнего образа пхп
07.04.2025 v2.17
- фикс циклической перезагрузки панели adguardHome
07.04.2025 v2.16
- фикс warp
07.04.2025 v2.15
- миграция поддоменов np/oc вместе в с бэкапом
02.03.2025 v2.14
- vless ip limit: фикс выключения юзера
22.02.2025 v2.13
- vless: улучшение сбора статы
- vless: фикс добавления правил srs для block outbound
11.02.2025 v2.12
- vless: хранение статы в отдельном файле
- vless ip limit: возможность указать кол-во айпи
08.02.2025 v2.11
- vless: singbox 1.11
07.02.2025 v2.10
- vless: ip limit
- vless: общая стата
- vless: пакетное добавление профилей
- vless: при добавлении можно указывать свой uuid (name:uuid, name:uuid, ...)
- автоудаление логов
- хэш бота сохраняется в настройках и восстанавливается с бэкапом. можно накатывать бэкап на нового бота
02.02.2025 v2.9
- откат sing-box 1.11
02.02.2025 v2.8
- vless: корректировка статы юзера
- sing-box 1.11
29.01.2025 v2.7
- vless: сброс статистики юзера
24.01.2025 v2.6
- правки меню
- vless:добавлена возможность маршрутизировать список ip-сетей
18.01.2025 v2.5
- фикс скачивания шаблона михомо
- обновлен singbox.exe
- вывод статистики vless пользователей
- смягчил паттерн поиска reality degenerate в логах
07.01.2025 v2.4
- вернул shadowsocks (спасибо за донат)
04.01.2025
- возможность установить нужную версию с нуля
- корректировка автосканера под новую версию
- улучшение основного меню
26.12.2024 v2.2 26.12.2024 v2.2
- возможность менять поддомен для naive/openconnect - возможность менять поддомен для naive/openconnect
26.12.2024 v2.1 26.12.2024 v2.1