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 ────────────────────────────────────────
|
# ── Создание конфигурации WireGuard ────────────────────────────────────────
|
||||||
create_wg_config() {
|
create_wg_config() {
|
||||||
|
# Всегда пересоздаём конфиг — ключи или эндпоинт могли измениться
|
||||||
if [[ -f "$WG_CONF" ]]; then
|
if [[ -f "$WG_CONF" ]]; then
|
||||||
log "INFO" "Конфигурация ${WG_CONF} уже существует, пропускаем создание"
|
log "INFO" "Обновление конфигурации ${WG_CONF}..."
|
||||||
return 0
|
rm -f "$WG_CONF"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p "$(dirname "$WG_CONF")"
|
mkdir -p "$(dirname "$WG_CONF")"
|
||||||
@@ -78,6 +79,14 @@ WGCONF
|
|||||||
# ── Запуск WireGuard ───────────────────────────────────────────────────────
|
# ── Запуск WireGuard ───────────────────────────────────────────────────────
|
||||||
start_wireguard() {
|
start_wireguard() {
|
||||||
log "INFO" "Запуск WireGuard интерфейса wg0..."
|
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
|
wg-quick up wg0
|
||||||
log "INFO" "WireGuard интерфейс wg0 запущен"
|
log "INFO" "WireGuard интерфейс wg0 запущен"
|
||||||
log "INFO" "Публичный ключ клиента: ${CLIENT_PUBLIC_KEY}"
|
log "INFO" "Публичный ключ клиента: ${CLIENT_PUBLIC_KEY}"
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
# docker-compose.client.yml — Клиент (домашний сервер / Raspberry Pi за NAT)
|
# docker-compose.client.yml — Клиент (домашний сервер / Raspberry Pi за NAT)
|
||||||
# Запуск: docker compose -f docker-compose.client.yml up -d
|
# Запуск: docker compose -f docker-compose.client.yml up -d
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
version: "3.8"
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
wireguard-client:
|
wireguard-client:
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
# docker-compose.server.yml — VPS (сервер с публичным IP)
|
# docker-compose.server.yml — VPS (сервер с публичным IP)
|
||||||
# Запуск: docker compose -f docker-compose.server.yml up -d
|
# Запуск: docker compose -f docker-compose.server.yml up -d
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
version: "3.8"
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
wireguard-server:
|
wireguard-server:
|
||||||
|
|||||||
@@ -55,9 +55,10 @@ generate_keys() {
|
|||||||
|
|
||||||
# ── Создание конфигурации WireGuard ────────────────────────────────────────
|
# ── Создание конфигурации WireGuard ────────────────────────────────────────
|
||||||
create_wg_config() {
|
create_wg_config() {
|
||||||
|
# Всегда пересоздаём конфиг — ключи или порты могли измениться
|
||||||
if [[ -f "$WG_CONF" ]]; then
|
if [[ -f "$WG_CONF" ]]; then
|
||||||
log "INFO" "Конфигурация ${WG_CONF} уже существует, пропускаем создание"
|
log "INFO" "Обновление конфигурации ${WG_CONF}..."
|
||||||
return 0
|
rm -f "$WG_CONF"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z "${CLIENT_PUBLIC_KEY:-}" ]]; then
|
if [[ -z "${CLIENT_PUBLIC_KEY:-}" ]]; then
|
||||||
@@ -106,10 +107,17 @@ WGCONF
|
|||||||
start_wireguard() {
|
start_wireguard() {
|
||||||
log "INFO" "Запуск WireGuard интерфейса wg0..."
|
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/ipv4/ip_forward 2>/dev/null || true
|
||||||
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding 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
|
wg-quick up wg0
|
||||||
|
|
||||||
log "INFO" "WireGuard интерфейс wg0 запущен"
|
log "INFO" "WireGuard интерфейс wg0 запущен"
|
||||||
|
|||||||
Reference in New Issue
Block a user