mirror of
https://github.com/oqyude/nixos.git
synced 2026-10-07 20:47:14 +03:00
3x-ui fix
This commit is contained in:
@@ -25,8 +25,12 @@ let
|
|||||||
# 14380-15379/tcp+udp — Xray inbounds (matches firewall open range)
|
# 14380-15379/tcp+udp — Xray inbounds (matches firewall open range)
|
||||||
"0.0.0.0:2049:2049/tcp"
|
"0.0.0.0:2049:2049/tcp"
|
||||||
"0.0.0.0:2096:2096/tcp"
|
"0.0.0.0:2096:2096/tcp"
|
||||||
"0.0.0.0:14380-15379:14380-15379/tcp"
|
"0.0.0.0:8443:8443/tcp"
|
||||||
"0.0.0.0:14380-15379:14380-15379/udp"
|
"0.0.0.0:8443:8443/udp"
|
||||||
|
"0.0.0.0:18443:18443/tcp"
|
||||||
|
"0.0.0.0:18443:18443/udp"
|
||||||
|
# "0.0.0.0:14380-15379:14380-15379/tcp"
|
||||||
|
# "0.0.0.0:14380-15379:14380-15379/udp"
|
||||||
];
|
];
|
||||||
# VDS-only: nginx stream forwards host:443 → host:15380 → container:443,
|
# VDS-only: nginx stream forwards host:443 → host:15380 → container:443,
|
||||||
# so Xray inside the container sees its REALITY inbound on its real
|
# so Xray inside the container sees its REALITY inbound on its real
|
||||||
@@ -113,17 +117,25 @@ in
|
|||||||
|
|
||||||
# Enable container name DNS for all Podman networks.
|
# Enable container name DNS for all Podman networks.
|
||||||
networking.firewall = {
|
networking.firewall = {
|
||||||
allowedUDPPortRanges = [
|
# allowedUDPPortRanges = [
|
||||||
{
|
# {
|
||||||
from = 14380;
|
# from = 8443;
|
||||||
to = 15380;
|
# to = 15380;
|
||||||
}
|
# }
|
||||||
|
# ];
|
||||||
|
# allowedTCPPortRanges = [
|
||||||
|
# {
|
||||||
|
# from = 14380;
|
||||||
|
# to = 15380;
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
allowedUDPPorts = [
|
||||||
|
18443
|
||||||
|
8443
|
||||||
];
|
];
|
||||||
allowedTCPPortRanges = [
|
allowedTCPPorts = [
|
||||||
{
|
18443
|
||||||
from = 14380;
|
8443
|
||||||
to = 15380;
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
interfaces =
|
interfaces =
|
||||||
let
|
let
|
||||||
|
|||||||
+12
-19
@@ -19,7 +19,7 @@ in
|
|||||||
unitConfig.RequiresMountsFor = [ ];
|
unitConfig.RequiresMountsFor = [ ];
|
||||||
after = [ "network-online.target" ];
|
after = [ "network-online.target" ];
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
# Только по таймеру: НЕ блокируем boot и активацию nixos-rebuild.
|
||||||
script = ''
|
script = ''
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
@@ -29,31 +29,21 @@ in
|
|||||||
SSH_CMD="$SSH \
|
SSH_CMD="$SSH \
|
||||||
-o BatchMode=yes \
|
-o BatchMode=yes \
|
||||||
-o ConnectTimeout=5 \
|
-o ConnectTimeout=5 \
|
||||||
|
-o ServerAliveInterval=5 \
|
||||||
|
-o ServerAliveCountMax=3 \
|
||||||
-o StrictHostKeyChecking=no"
|
-o StrictHostKeyChecking=no"
|
||||||
|
|
||||||
echo "Waiting for server..."
|
|
||||||
|
|
||||||
for i in $(seq 1 60); do
|
|
||||||
echo "Attempt $i"
|
|
||||||
|
|
||||||
if $SSH_CMD ${serverAddress} true >/dev/null 2>&1; then
|
|
||||||
echo "Server available"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
|
|
||||||
sleep 5
|
|
||||||
done
|
|
||||||
|
|
||||||
# final check
|
|
||||||
$SSH_CMD ${serverAddress} true >/dev/null 2>&1
|
|
||||||
|
|
||||||
mkdir -p "${nodeDir}"
|
mkdir -p "${nodeDir}"
|
||||||
|
|
||||||
|
# best-effort: сервер недоступен -> выходим сразу, никаких циклов ожидания
|
||||||
|
if ! $SSH_CMD ${serverAddress} true >/dev/null 2>&1; then
|
||||||
|
echo "Server ${serverAddress} unreachable, skipping sync"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
if [ ! -d "${nodeDir}" ] || [ -z "$(ls -A "${nodeDir}")" ]; then
|
if [ ! -d "${nodeDir}" ] || [ -z "$(ls -A "${nodeDir}")" ]; then
|
||||||
echo "Pull <- ${serverAddress}"
|
echo "Pull <- ${serverAddress}"
|
||||||
|
|
||||||
mkdir -p "${nodeDir}"
|
|
||||||
|
|
||||||
$RSYNC \
|
$RSYNC \
|
||||||
-e "$SSH_CMD" \
|
-e "$SSH_CMD" \
|
||||||
-a \
|
-a \
|
||||||
@@ -77,6 +67,9 @@ in
|
|||||||
Nice = 10;
|
Nice = 10;
|
||||||
CPUQuota = "5%";
|
CPUQuota = "5%";
|
||||||
IOSchedulingClass = "idle";
|
IOSchedulingClass = "idle";
|
||||||
|
# страховка от зависшего rsync/ssh; легитимная большая синхронизация
|
||||||
|
# укладывается в это окно (на фоне idle-приоритета)
|
||||||
|
TimeoutStartSec = 600;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user