diff --git a/README.md b/README.md index 4d7242d..98265fd 100644 --- a/README.md +++ b/README.md @@ -281,6 +281,12 @@ sudo ss -tulpn | grep 5000 Если при запуске встречается ошибка `KeyError: 'ContainerConfig'` (обычно на legacy `docker-compose` v1), перезапустите установщик из актуальной версии репозитория: в нем добавлена автоматическая очистка старого контейнера `wireguard-ui` перед запуском. +Для уже сломанного состояния можно вручную очистить старые контейнеры и запустить установщик снова: +```bash +docker ps -aq --filter 'label=com.docker.compose.service=wireguard-ui' | xargs -r docker rm -f +docker ps -a --format '{{.Names}}' | grep -E '(^|[_-])wireguard-ui($|[_-])' | xargs -r docker rm -f +``` + ## Важные пути - Серверный конфиг: `/etc/wireguard/wg0.conf` diff --git a/server/install_server.sh b/server/install_server.sh index a247fc3..2129508 100755 --- a/server/install_server.sh +++ b/server/install_server.sh @@ -325,6 +325,22 @@ EOF_COMPOSE # KeyError: 'ContainerConfig'. Предварительно удаляем старый контейнер по имени. if [[ "$compose_mode" == "legacy" ]]; then docker rm -f wireguard-ui >/dev/null 2>&1 || true + + # Удаляем возможные старые контейнеры вида _wireguard-ui + # и контейнеры сервиса wireguard-ui по compose-label. + local legacy_ids legacy_names + legacy_ids="$(docker ps -aq --filter 'label=com.docker.compose.service=wireguard-ui' || true)" + if [[ -n "$legacy_ids" ]]; then + docker rm -f $legacy_ids >/dev/null 2>&1 || true + fi + + legacy_names="$(docker ps -a --format '{{.Names}}' | grep -E '(^|[_-])wireguard-ui($|[_-])' || true)" + if [[ -n "$legacy_names" ]]; then + while IFS= read -r cname; do + [[ -n "$cname" ]] || continue + docker rm -f "$cname" >/dev/null 2>&1 || true + done <<< "$legacy_names" + fi fi (cd /opt/wireguard-ui && "${compose_cmd[@]}" up -d --remove-orphans)