Compare commits

..

48 Commits

Author SHA1 Message Date
mercury 364dbd6408 xhttp from legiz 2025-12-02 22:41:08 +04:00
mercury 57ee403070 added hysteria 2025-12-01 00:13:19 +04:00
mercury b5ab8fb4eb command to add to cron to restart the bot when restarting the vps 2025-11-30 21:06:16 +04:00
mercury 95c6a023d0 iodine -> dnstt 2025-11-30 20:46:31 +04:00
mercury 9f196ca58e issue #36 fix 2025-11-29 22:32:50 +04:00
mercury 665b4007eb improve cron handlers 2025-11-28 02:43:29 +04:00
mercury 9c9f42e9e4 update mtproto image 2025-11-28 02:06:19 +04:00
mercury 30c260bf02 fix override html 2025-11-27 21:41:59 +04:00
mercury a3c59991ce fix override html 2025-11-27 21:35:09 +04:00
mercury 288435e2a0 support quic destination override 2025-11-27 14:29:41 +04:00
mercury 1b1acee59f Ruleset polling timeout increased to 60 seconds 2025-11-27 02:16:59 +04:00
mercury a8d121b7e1 adaptation of the warp, block list to the presence of ipcidr for all kernel configs 2025-11-27 02:15:22 +04:00
mercury f6d2c89e8d xray statistics are collected once per minute 2025-11-27 02:12:22 +04:00
mercury e4863eb645 update warp image 2025-11-26 11:54:13 +04:00
mercury bc28be571b fix warp rules for xray 2025-11-26 10:22:35 +04:00
mercury 34f5f32a82 warp list create classical ruleset for mihomo 2025-11-26 10:03:29 +04:00
mercury fc4c28edfb naiveproxy image update 2025-11-26 01:10:06 +04:00
mercury c352270b39 Fix overwriting fingerprint for vray 2025-11-26 01:03:55 +04:00
mercury 2ee6c3392b ability to add IPs and subnets to warplist 2025-11-26 00:50:43 +04:00
mercury 9bd85c9e05 empty password stoped openconnect and naive, fix 2025-11-10 00:24:35 +04:00
mercury 82e51c0d9c empty password stoped openconnect and naive 2025-11-10 00:14:04 +04:00
mercury 9051b214c5 fix reality 2025-11-09 23:52:51 +04:00
mercury 0710ef51fd fix domain in download config vless 2025-11-08 22:54:18 +04:00
mercury 597763f80a update group link 2025-11-08 19:44:38 +04:00
mercury 8398ecf736 edit announce 2025-11-08 19:24:39 +04:00
mercury 0d14061edb Merge branch 'dev' of github.com:mercurykd/vpnbot into dev 2025-11-08 19:23:05 +04:00
mercury 03218b974d download vless button 2025-11-08 19:20:50 +04:00
Konstantin 84ac1200dc Merge pull request #41 from legiz-ru/dev
Add HWID device limit support for sub page
2025-09-25 11:00:13 +04:00
legiz-ru aa64a48db2 delete overhead mkdir0777 2025-09-25 09:52:17 +03:00
legiz-ru 70c83da66a add hwid to backup 2025-09-23 20:44:42 +03:00
legiz-ru 52ff056474 fix: hwid ignore for browsers 2025-09-23 14:21:41 +03:00
legiz-ru 225260044a Add HWID device limit support for sub page
based on standart by remnawave: https://remna.st/docs/features/hwid-device-limit
2025-09-23 13:50:03 +03:00
mercury 050d1ee3eb fix start_io 2025-09-11 16:46:12 +04:00
mercury 6979cca602 iodine 2025-09-11 16:22:27 +04:00
mercury 7fc24ea4f4 add suburl, expire to subs page 2025-08-31 00:18:00 +04:00
mercury 3dff9e039f non-wiped additional nginx configurations 2025-07-19 22:48:28 +04:00
mercury e2441eb9fd update version 2025-07-16 17:18:18 +04:00
mercury 269d0e9956 mirror shell-script 2025-07-13 23:34:11 +04:00
mercury 8ba85164aa fix empty warp status 2025-07-11 20:55:38 +04:00
mercury e7cc7b66e2 add configs to subs page 2025-07-04 18:33:04 +04:00
mercury 54fa8d35b1 update version 2025-07-04 17:48:15 +04:00
mercury ffe6bb4ba8 subscription page 2025-07-04 17:45:50 +04:00
mercury 6be95533c4 improve vless menu 2025-07-04 16:42:47 +04:00
mercury 8d13bee021 improve /id 2025-07-04 16:38:39 +04:00
mercury db6a18f498 update version 2025-06-18 00:56:49 +04:00
mercury 6954a16fa2 get ip from host 2025-06-18 00:47:48 +04:00
mercury ca7a9c955d update version 2025-06-11 14:09:51 +04:00
mercury 852fbd55c6 Pagination number 2025-05-27 23:42:02 +04:00
28 changed files with 1843 additions and 350 deletions
+6
View File
@@ -10,6 +10,7 @@
/sftp-config.json
/tg.pyr
/config/wg0.conf
/config/hwid.json
/todo.todo
/app/zapretlists/*
!/app/zapretlists/.gitkeep
@@ -26,3 +27,8 @@ docker-compose.override.yml
backup.json
app/webapp/override/
.rest
subscription.php
location.conf
override.conf
i18n.override.php
+1535 -274
View File
File diff suppressed because it is too large Load Diff
+28
View File
@@ -193,6 +193,30 @@ $i = [
'en' => 'delete internal dns',
'ru' => 'удалить внутренний dns',
],
'hwid limit' => [
'en' => 'HWID limit',
'ru' => 'HWID лимит',
],
'hwid devices' => [
'en' => 'HWID devices',
'ru' => 'Устройства HWID',
],
'set hwid devices count' => [
'en' => 'set HWID devices count',
'ru' => 'установить количество HWID устройств',
],
'use default hwid limit' => [
'en' => 'use default limit',
'ru' => 'использовать лимит по умолчанию',
],
'no devices' => [
'en' => 'no devices',
'ru' => 'нет устройств',
],
'hwid notice' => [
'en' => 'HWID limit works only when subscription is refreshed or added',
'ru' => 'HWID лимит срабатывает только в момент обновления и добавления подписки',
],
'on' => [
'en' => '🟢',
'ru' => '🟢',
@@ -378,3 +402,7 @@ $i = [
'ru' => 'перезагрузка',
],
];
if (file_exists(__DIR__ . '/i18n.override.php')) {
include __DIR__ . '/i18n.override.php';
}
+4
View File
@@ -42,6 +42,10 @@ switch (true) {
echo "/adguard$hash/";
break;
case preg_match('~^' . preg_quote("/pac$hash/sub") . '~', $_SERVER['REQUEST_URI']) && file_exists(__DIR__ . '/subscription.php'):
$bot->sub();
exit;
// subs & pac
case preg_match('~^' . preg_quote("/pac$hash") . '~', $_SERVER['REQUEST_URI']):
if (!empty($t = unserialize(base64_decode(explode('/', $_SERVER['REQUEST_URI'])[2])))) { // fix sing-box import
+6
View File
@@ -24,3 +24,9 @@ $bot->adguardSync();
$bot->cloakNginx();
$bot->syncDeny();
$bot->cleanDocker();
$bot->dnsttStart();
$c = $bot->getPacConf();
$bot->setUpstreamDomain($c['pac']['transport'] != 'Reality' ? 't' : ($c['pac']['reality']['domain'] ?: $c['xray']['inbounds'][0]['streamSettings']['realitySettings']['serverNames'][0]));
$bot->setUpstreamDomainNaive($c['domain']);
$bot->setUpstreamDomainOcserv($c['domain']);
$bot->setUpstreamDomainHysteria($c['domain']);
+8 -8
View File
@@ -8,7 +8,7 @@
"mode": "rule",
"log-level": "info",
"ipv6": false,
"keep-alive-interval": 30,
"keep-alive-interval": 60,
"unified-delay": false,
"profile": {
"store-selected": true,
@@ -98,7 +98,7 @@
"type": "RULE-SET",
"list": "~block~",
"action": "REJECT",
"interval": 30,
"interval": 60,
"behavior": "domain",
"name": "block"
},
@@ -106,7 +106,7 @@
"type": "RULE-SET",
"list": "~process~",
"action": "PROXY",
"interval": 30,
"interval": 60,
"behavior": "classical",
"name": "process"
},
@@ -114,7 +114,7 @@
"type": "RULE-SET",
"list": "~package~",
"action": "PROXY",
"interval": 30,
"interval": 60,
"behavior": "classical",
"name": "package"
},
@@ -122,15 +122,15 @@
"type": "RULE-SET",
"list": "~warp~",
"action": "PROXY",
"interval": 30,
"behavior": "domain",
"interval": 60,
"behavior": "classical",
"name": "warp"
},
{
"type": "RULE-SET",
"list": "~pac~",
"action": "PROXY",
"interval": 30,
"interval": 60,
"behavior": "domain",
"name": "pac"
},
@@ -138,7 +138,7 @@
"type": "RULE-SET",
"list": "~subnet~",
"action": "PROXY",
"interval": 30,
"interval": 60,
"behavior": "ipcidr",
"name": "subnet"
},
+1
View File
@@ -0,0 +1 @@
{}
+9
View File
@@ -0,0 +1,9 @@
listen: :443
proxy_protocol: true
tls:
cert: /certs/cert_public
key: /certs/cert_private
auth:
type: password
password:
+14 -1
View File
@@ -11,7 +11,7 @@ events {
http {
server_names_hash_bucket_size 64;
server_tokens off;
include include.conf;
include override.conf;
include /etc/nginx/mime.types;
default_type application/octet-stream;
@@ -48,6 +48,11 @@ http {
try_files $uri /override.html @auth;
}
location /override/ {
alias /app/override/;
try_files $uri =404;
}
location / {
root /app;
auth_basic "Restricted Content";
@@ -122,6 +127,7 @@ http {
proxy_cache_key $scheme$proxy_host$uri$is_args$args$request_body;
proxy_pass https://ad/dns-query;
}
include location.conf;
}
#~
@@ -141,6 +147,11 @@ http {
# try_files $uri /override.html @auth;
# }
# location /override/ {
# alias /app/override/;
# try_files $uri =404;
# }
# location / {
# root /app;
# auth_basic "Restricted Content";
@@ -210,6 +221,8 @@ http {
# proxy_cache_key $scheme$proxy_host$uri$is_args$args$request_body;
# proxy_pass https://ad/dns-query;
# }
# include location.conf;
# }
#-domain
}
+14 -1
View File
@@ -11,7 +11,7 @@ events {
http {
server_names_hash_bucket_size 64;
server_tokens off;
include include.conf;
include override.conf;
include /etc/nginx/mime.types;
default_type application/octet-stream;
@@ -48,6 +48,11 @@ http {
try_files $uri /override.html @auth;
}
location /override/ {
alias /app/override/;
try_files $uri =404;
}
location / {
root /app;
auth_basic "Restricted Content";
@@ -122,6 +127,7 @@ http {
proxy_cache_key $scheme$proxy_host$uri$is_args$args$request_body;
proxy_pass https://ad/dns-query;
}
include location.conf;
}
#~
@@ -141,6 +147,11 @@ http {
# try_files $uri /override.html @auth;
# }
# location /override/ {
# alias /app/override/;
# try_files $uri =404;
# }
# location / {
# root /app;
# auth_basic "Restricted Content";
@@ -210,6 +221,8 @@ http {
# proxy_cache_key $scheme$proxy_host$uri$is_args$args$request_body;
# proxy_pass https://ad/dns-query;
# }
# include location.conf;
# }
#-domain
}
+6 -6
View File
@@ -119,7 +119,7 @@
"createruleset": [
{
"name": "pac",
"interval": "30s",
"interval": "60s",
"rules": [
{
"domain_suffix": "~pac~"
@@ -134,7 +134,7 @@
"createruleset": [
{
"name": "subnet",
"interval": "30s",
"interval": "60s",
"rules": [
{
"ip_cidr": "~subnet~"
@@ -149,7 +149,7 @@
"createruleset": [
{
"name": "package",
"interval": "30s",
"interval": "60s",
"rules": [
{
"package_name": "~package~"
@@ -164,7 +164,7 @@
"createruleset": [
{
"name": "process",
"interval": "30s",
"interval": "60s",
"rules": [
{
"process_name": "~process~"
@@ -179,7 +179,7 @@
"createruleset": [
{
"name": "block",
"interval": "30s",
"interval": "60s",
"rules": [
{
"domain_suffix": "~block~"
@@ -194,7 +194,7 @@
"createruleset": [
{
"name": "warp",
"interval": "30s",
"interval": "60s",
"rules": [
{
"domain_suffix": "~warp~"
+8 -4
View File
@@ -83,9 +83,9 @@ AuthorizedKeysFile .ssh/authorized_keys
#AllowAgentForwarding yes
# Feel free to re-enable these if your use case requires them.
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
# AllowTcpForwarding no
# GatewayPorts no
# X11Forwarding no
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
@@ -117,4 +117,8 @@ Subsystem sftp internal-sftp
# ForceCommand cvs server
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
PasswordAuthentication no
PasswordAuthentication yes
AllowTcpForwarding yes
PermitTunnel yes
GatewayPorts yes
X11Forwarding yes
+8
View File
@@ -32,6 +32,10 @@ stream {
server np:443;
}
upstream hysteria {
server hy:443;
}
map_hash_bucket_size 128;
map $ssl_preread_server_name $sni_name {
#domain
@@ -45,6 +49,10 @@ stream {
#naive
#np.domain naive;
#naive
#hysteria
#hy.domain hysteria;
#hysteria
default other;
}
+2 -1
View File
@@ -11,7 +11,8 @@
"sniffing": {
"destOverride": [
"http",
"tls"
"tls",
"quic"
],
"enabled": true
},
+74 -7
View File
@@ -43,7 +43,7 @@ services:
php:
condition: service_healthy
ng:
condition: service_started
condition: service_healthy
ad:
condition: service_started
ss:
@@ -54,6 +54,8 @@ services:
condition: service_started
np:
condition: service_started
hy:
condition: service_started
env_file:
- path: ./.env
required: true # default
@@ -75,7 +77,8 @@ services:
volumes:
- ./config/.profile:/root/.ashrc:ro
- ./config/nginx.conf:/etc/nginx/nginx.conf
- ./config/include.conf:/etc/nginx/include.conf
- ./config/override.conf:/etc/nginx/override.conf
- ./config/location.conf:/etc/nginx/location.conf
- ./config/nginx_default.conf:/nginx_default.conf
- ./scripts/start_ng.sh:/start_ng.sh
- ./certs/:/certs/
@@ -103,6 +106,11 @@ services:
depends_on:
php:
condition: service_healthy
healthcheck:
test: ["CMD", "nginx", "-t"]
interval: 10s
timeout: 5s
retries: 3
php:
image: mercurykd/vpnbot-php:1.7
build:
@@ -205,6 +213,8 @@ services:
- np
- proxy
- ss
- dnstt
- hy
wg:
image: mercurykd/vpnbot-wg:1.1
build:
@@ -282,7 +292,7 @@ services:
ipv4_address: 10.10.0.14
logging: *default-logging
ad:
image: mercurykd/vpnbot-ad:1.3
image: mercurykd/vpnbot-ad:1.4
build:
dockerfile: dockerfile/adguard.dockerfile
args:
@@ -317,7 +327,7 @@ services:
entrypoint: ["/bin/sh", "/start_ad.sh"]
logging: *default-logging
tg:
image: mercurykd/vpnbot-tg:1.1
image: mercurykd/vpnbot-tg:1.2
build:
dockerfile: dockerfile/telegram.dockerfile
volumes:
@@ -345,7 +355,7 @@ services:
ipv4_address: 10.10.0.8
logging: *default-logging
xr:
image: mercurykd/vpnbot-xr:1.4
image: mercurykd/vpnbot-xr:1.5
build:
dockerfile: dockerfile/xray.dockerfile
args:
@@ -409,7 +419,7 @@ services:
ipv4_address: 10.10.0.11
logging: *default-logging
np:
image: mercurykd/vpnbot-np:1.1
image: mercurykd/vpnbot-np:1.2
build:
dockerfile: dockerfile/naive.dockerfile
args:
@@ -440,7 +450,7 @@ services:
ipv4_address: 10.10.0.12
logging: *default-logging
wp:
image: mercurykd/vpnbot-wp:1.3
image: mercurykd/vpnbot-wp:1.4
build:
dockerfile: dockerfile/warp.dockerfile
args:
@@ -531,3 +541,60 @@ services:
default:
ipv4_address: 10.10.0.6
logging: *default-logging
dnstt:
image: mercurykd/vpnbot-dnstt:1.0
build:
dockerfile: dockerfile/dnstt.dockerfile
args:
image: ${IMAGE}
volumes:
- ./config/.profile:/root/.ashrc:ro
- ./ssh:/ssh
- ./config/sshd_config:/etc/ssh/sshd_config
- ./config/dnstt:/dnstt
- ./scripts/start_dnstt.sh:/start_dnstt.sh
hostname: dnstt
container_name: dnstt-${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_dnstt.sh"]
networks:
default:
ipv4_address: 10.10.0.16
logging: *default-logging
hy:
image: mercurykd/vpnbot-hysteria:1.0
build:
dockerfile: dockerfile/hysteria.dockerfile
args:
image: ${IMAGE}
volumes:
- ./config/.profile:/root/.ashrc:ro
- ./ssh:/ssh
- ./config/sshd_config:/etc/ssh/sshd_config
- ./certs:/certs
- ./config:/config
- ./scripts/start_hysteria.sh:/start_hysteria.sh
hostname: hysteria
container_name: hysteria-${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_hysteria.sh"]
networks:
default:
ipv4_address: 10.10.0.17
logging: *default-logging
+13
View File
@@ -0,0 +1,13 @@
ARG image
FROM golang:alpine AS go
RUN apk add --no-cache git \
&& git clone https://www.bamsoftware.com/git/dnstt.git \
&& cd /go/dnstt/dnstt-server \
&& go build -ldflags="-s -w" -trimpath \
&& rm -rf /go/dnstt/.git \
&& apk del git
FROM $image
COPY --from=go /go/dnstt/dnstt-server/dnstt-server /usr/local/bin/
RUN apk add --no-cache openssh \
&& mkdir -p /root/.ssh
ENV ENV="/root/.ashrc"
+5
View File
@@ -0,0 +1,5 @@
FROM tobyxdd/hysteria
RUN apk add --no-cache openssh \
&& mkdir -p /root/.ssh
ENV ENV="/root/.ashrc"
ENTRYPOINT []
+11 -3
View File
@@ -1,9 +1,9 @@
b:
docker compose build
u: # запуск контейнеров
$(eval IP := $(shell curl -s -t 1 2ip.io || curl -s -t 1 ipinfo.io/ip || curl -s -t 1 ifconfig.me))
$(eval IP := $(shell hostname -I | awk '{print $$1}'))
bash ./update/update.sh &
touch ./override.env ./docker-compose.override.yml
touch ./override.env ./docker-compose.override.yml ./config/location.conf ./config/override.conf
IP=$(IP) VER=$(shell git describe --tags) docker compose --env-file ./.env --env-file ./override.env up -d --force-recreate
d: # остановка контейнеров
-kill -9 $(shell cat ./update/update_pid) > /dev/null
@@ -37,6 +37,10 @@ proxy: # консоль сервиса
docker compose exec proxy /bin/sh
tg: # консоль сервиса
docker compose exec tg /bin/sh
dnstt: # консоль сервиса
docker compose exec dnstt /bin/sh
hy: # консоль сервиса
docker compose exec hy /bin/sh
xr: # консоль сервиса
docker compose exec xr /bin/sh
oc: # консоль сервиса
@@ -69,4 +73,8 @@ reset:
docker volume rm vpnbot_adguard vpnbot_warp
make u
backup:
docker compose exec php php backup.php > backup.json
docker compose exec php php backup.php > backup.json
cron: # установка задачи в cron для автозапуска при перезагрузке
@(crontab -l 2>/dev/null | grep -v "cd /root/vpnbot && make r"; echo "@reboot cd /root/vpnbot && make r") | crontab -
uncron: # удаление задачи из cron
@crontab -l 2>/dev/null | grep -v "cd /root/vpnbot && make r" | crontab -
-18
View File
@@ -1,18 +0,0 @@
version: "3"
services:
socat:
build:
dockerfile: ./dockerfile
ports:
- 80:80
- 443:443
- 853:853
- ${TGPORT}:${TGPORT}
- ${SSPORT}:${SSPORT}
- ${SSPORT}:${SSPORT}/udp
- ${WGPORT}:${WGPORT}/udp
volumes:
- ./start_socat.sh:/start_socat.sh
command: /bin/sh /start_socat.sh
stop_grace_period: 1s
-2
View File
@@ -1,2 +0,0 @@
FROM alpine:3.18
RUN apk add socat htop net-tools
-11
View File
@@ -1,11 +0,0 @@
b:
docker compose build --no-cache
u:
docker compose up -d --build
d:
docker compose down
ps:
docker compose ps
e:
docker compose exec socat sh
r: d u
+53 -8
View File
@@ -1,8 +1,53 @@
socat TCP-LISTEN:80,fork TCP:{ip}:80 &
socat TCP-LISTEN:443,fork TCP:{ip}:443 &
socat TCP-LISTEN:853,fork TCP:{ip}:853 &
socat TCP-LISTEN:{tg},fork TCP:{ip}:{tg} &
socat TCP-LISTEN:{ss},fork TCP:{ip}:{ss} &
socat UDP-LISTEN:{ss},fork UDP:{ip}:{ss} &
socat UDP-LISTEN:{wg},fork UDP:{ip}:{wg} &
tail -f /dev/null
#!/bin/bash
# Параметры (можно менять)
PORTS=(80 443 853 ~tg~ ~ss~ ~wg1~ ~wg2~) # Прослушиваемые порты
TARGET="~ip~" # Куда перенаправляем трафик
TCP_CMD="socat TCP-LISTEN:{PORT},fork,reuseaddr TCP:$TARGET:{PORT}"
UDP_CMD="socat UDP-LISTEN:{PORT},fork,reuseaddr UDP:$TARGET:{PORT}"
# Проверяем, установлен ли socat
if ! command -v socat &> /dev/null; then
echo "socat не установлен. Устанавливаем..."
if [[ -f /etc/debian_version ]]; then
sudo apt update && sudo apt install -y socat
elif [[ -f /etc/redhat-release ]]; then
sudo yum install -y socat
else
echo "Ошибка: Неизвестный дистрибутив. Установите socat вручную."
exit 1
fi
fi
# Проверяем, заняты ли порты (TCP и UDP)
for PORT in "${PORTS[@]}"; do
# Проверка TCP
if ss -tulnp | grep -q ":$PORT "; then
PROCESS=$(ss -tulnp | grep ":$PORT " | awk '{print $7}')
echo "Ошибка: Порт $PORT (TCP) занят процессом: $PROCESS"
exit 1
fi
# Проверка UDP
if ss -ulnp | grep -q ":$PORT "; then
PROCESS=$(ss -ulnp | grep ":$PORT " | awk '{print $6}')
echo "Ошибка: Порт $PORT (UDP) занят процессом: $PROCESS"
exit 1
fi
done
# Запускаем socat для каждого порта (TCP и UDP)
for PORT in "${PORTS[@]}"; do
# TCP
CMD_TCP=$(echo "$TCP_CMD" | sed "s/{PORT}/$PORT/g")
echo "Запуск (TCP): $CMD_TCP"
eval "$CMD_TCP &" # Запускаем в фоне
# UDP
CMD_UDP=$(echo "$UDP_CMD" | sed "s/{PORT}/$PORT/g")
echo "Запуск (UDP): $CMD_UDP"
eval "$CMD_UDP &" # Запускаем в фоне
done
echo "socat запущен для портов: ${PORTS[*]} (TCP и UDP)"
echo "Трафик перенаправляется на: $TARGET"
echo "Для остановки выполните: pkill socat"
+4
View File
@@ -0,0 +1,4 @@
cat /ssh/key.pub > /root/.ssh/authorized_keys
ssh-keygen -A
exec /usr/sbin/sshd -D -e "$@" &
tail -f /dev/null
+5
View File
@@ -0,0 +1,5 @@
cat /ssh/key.pub > /root/.ssh/authorized_keys
ssh-keygen -A
exec /usr/sbin/sshd -D -e "$@" &
hysteria server -c /config/hysteria.yaml &
tail -f /dev/null
-2
View File
@@ -1,6 +1,4 @@
cat /ssh/key.pub > /root/.ssh/authorized_keys
echo 'HostKeyAlgorithms +ssh-rsa' >> /etc/ssh/sshd_config
echo 'PubkeyAcceptedKeyTypes +ssh-rsa' >> /etc/ssh/sshd_config
service ssh start
off=$(cat /config/pac.json | jq -r .warpoff)
key=$(cat /config/pac.json | jq -r .warp)
+3 -3
View File
@@ -1,8 +1,8 @@
cat /ssh/key.pub > /root/.ssh/authorized_keys
ssh-keygen -A
exec /usr/sbin/sshd -D -e "$@" &
if [ $(cat /xray.json | jq -r '.inbounds[0].settings.clients[0].id' | wc -c) -gt 1 ]
then
xray run -config /xray.json > /dev/null &
uuid=$(cat /xray.json | jq -r '.inbounds[0].settings.clients[0].id // empty')
if [ -n "$uuid" ]; then
xray run -config /xray.json > /dev/null 2>&1 &
fi
tail -f /dev/null
+1 -1
View File
@@ -38,7 +38,7 @@ do
curl -H "Content-Type: application/json" -X POST https://api.telegram.org/bot$key/editMessageText -d "$(cat $pwd/update/curl | sed 's/"text":"~t~"/"text": "launching the bot"/')"
> $pwd/update/key
> $pwd/update/curl
IP=$(curl -s -t 1 2ip.io || curl -s -t 1 ipinfo.io/ip || curl -s -t 1 ifconfig.me) VER=$(git describe --tags) docker compose --env-file ./.env --env-file ./override.env up -d --force-recreate
IP=$(hostname -I | awk '{print $1}') VER=$(git describe --tags) docker compose --env-file ./.env --env-file ./override.env up -d --force-recreate
bash $pwd/update/update.sh &
exit 0
fi
+25
View File
@@ -1,3 +1,28 @@
09.11.2025 v2.27
- фикс reality
08.11.2025 v2.26
- обновлено ядро xray
- обновлен adguardHome
- добавлен iodine(dnstt)
- добавлены кнопки скачивания vless-конфига
- hwid для подписки orion от legiz
19.07.2025 v2.25
- перед запуском обязательно запустить:
<pre>touch ./override.env ./docker-compose.override.yml ./config/location.conf ./config/override.conf</pre>
- для nginx вместо include.conf теперь override.conf, не затирается
- location.conf (by legiz), не затирается
- app/i18n.override.php для собственных названий кнопок, не затирается
16.07.2025 v2.24
- фикс зависания бота из-за пустого статуса warp
- скрипт socat.sh для мостов /mirror
04.07.2025 v2.23
- фикс двойного /id
- фикс отображения статы vless на мобилке
- страница подписок app/subscription.php
18.06.2025 v2.22
- фикс определения айпи при запуске
11.06.2025 v2.21
- пагинация в списках
20.05.2025 v2.20
- коррекция главного меню
- vless: опция обнуления статы ежемесячно