fix: restart-safe entrypoints, remove obsolete compose version
Some checks failed
Build and Push Docker Images / Сборка сервера (multi-arch) (push) Has been cancelled
Build and Push Docker Images / Сборка клиента (multi-arch) (push) Has been cancelled

- 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:
Deploy Bot
2026-07-30 00:30:18 +01:00
parent 5d618a04b5
commit dcebf21e03
4 changed files with 22 additions and 7 deletions

View File

@@ -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}"

View File

@@ -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:

View File

@@ -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:

View File

@@ -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 запущен"