fix: restart-safe entrypoints, remove obsolete compose version
- Add wg0 interface cleanup before startup (prevents 'already exists' crash) - Always regenerate wg0.conf to pick up key changes - Remove obsolete 'version' from docker-compose files - Fix read-only /proc/sys writes (host-level ip_forward already set)
This commit is contained in:
@@ -48,9 +48,10 @@ generate_keys() {
|
||||
|
||||
# ── Создание конфигурации WireGuard ────────────────────────────────────────
|
||||
create_wg_config() {
|
||||
# Всегда пересоздаём конфиг — ключи или эндпоинт могли измениться
|
||||
if [[ -f "$WG_CONF" ]]; then
|
||||
log "INFO" "Конфигурация ${WG_CONF} уже существует, пропускаем создание"
|
||||
return 0
|
||||
log "INFO" "Обновление конфигурации ${WG_CONF}..."
|
||||
rm -f "$WG_CONF"
|
||||
fi
|
||||
|
||||
mkdir -p "$(dirname "$WG_CONF")"
|
||||
@@ -78,6 +79,14 @@ WGCONF
|
||||
# ── Запуск WireGuard ───────────────────────────────────────────────────────
|
||||
start_wireguard() {
|
||||
log "INFO" "Запуск WireGuard интерфейса wg0..."
|
||||
|
||||
# Удаляем старый интерфейс если остался от предыдущего запуска
|
||||
if ip link show wg0 &>/dev/null; then
|
||||
log "INFO" "Удаление старого интерфейса wg0..."
|
||||
ip link del wg0 2>/dev/null || true
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
wg-quick up wg0
|
||||
log "INFO" "WireGuard интерфейс wg0 запущен"
|
||||
log "INFO" "Публичный ключ клиента: ${CLIENT_PUBLIC_KEY}"
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
# docker-compose.client.yml — Клиент (домашний сервер / Raspberry Pi за NAT)
|
||||
# Запуск: docker compose -f docker-compose.client.yml up -d
|
||||
# =============================================================================
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
wireguard-client:
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
# docker-compose.server.yml — VPS (сервер с публичным IP)
|
||||
# Запуск: docker compose -f docker-compose.server.yml up -d
|
||||
# =============================================================================
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
wireguard-server:
|
||||
|
||||
@@ -55,9 +55,10 @@ generate_keys() {
|
||||
|
||||
# ── Создание конфигурации WireGuard ────────────────────────────────────────
|
||||
create_wg_config() {
|
||||
# Всегда пересоздаём конфиг — ключи или порты могли измениться
|
||||
if [[ -f "$WG_CONF" ]]; then
|
||||
log "INFO" "Конфигурация ${WG_CONF} уже существует, пропускаем создание"
|
||||
return 0
|
||||
log "INFO" "Обновление конфигурации ${WG_CONF}..."
|
||||
rm -f "$WG_CONF"
|
||||
fi
|
||||
|
||||
if [[ -z "${CLIENT_PUBLIC_KEY:-}" ]]; then
|
||||
@@ -106,10 +107,17 @@ WGCONF
|
||||
start_wireguard() {
|
||||
log "INFO" "Запуск WireGuard интерфейса wg0..."
|
||||
|
||||
# Включаем IP-форвардинг
|
||||
# Включаем IP-форвардинг (может быть read-only в Docker, хост уже настроен)
|
||||
echo 1 > /proc/sys/net/ipv4/ip_forward 2>/dev/null || true
|
||||
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding 2>/dev/null || true
|
||||
|
||||
# Удаляем старый интерфейс если остался от предыдущего запуска
|
||||
if ip link show wg0 &>/dev/null; then
|
||||
log "INFO" "Удаление старого интерфейса wg0..."
|
||||
ip link del wg0 2>/dev/null || true
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
wg-quick up wg0
|
||||
|
||||
log "INFO" "WireGuard интерфейс wg0 запущен"
|
||||
|
||||
Reference in New Issue
Block a user