fix(docker): apt HTTPS mirrors + docs

Avoid corrupt HTTP caches; refresh ca-certificates/iptables deps; README troubleshooting for signature errors.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Андрей Бобырев
2026-05-14 20:38:24 +03:00
parent 7af4f701e1
commit 93babb804d
2 changed files with 39 additions and 4 deletions

View File

@@ -1,4 +1,4 @@
FROM docker:27-cli AS dockercli FROM docker:26-cli AS dockercli
FROM python:3.12-slim-bookworm FROM python:3.12-slim-bookworm
@@ -7,10 +7,28 @@ COPY --from=dockercli /usr/local/bin/docker /usr/local/bin/docker
WORKDIR /app WORKDIR /app
ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1 ENV PYTHONUNBUFFERED=1
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \ # HTTP-зеркала иногда ломаются за прокси/кэшем → подпись InRelease «invalid».
&& apt-get install -y --no-install-recommends iptables iproute2 \ # Чистим списки и переводим deb.debian.org / security на HTTPS перед update.
&& rm -rf /var/lib/apt/lists/* RUN set -eux; \
apt-get clean; \
rm -rf /var/lib/apt/lists/*; \
if [ -f /etc/apt/sources.list ]; then \
sed -i \
-e 's|http://deb.debian.org|https://deb.debian.org|g' \
-e 's|http://security.debian.org|https://security.debian.org|g' \
/etc/apt/sources.list; \
fi; \
if [ -f /etc/apt/sources.list.d/debian.sources ]; then \
sed -i \
-e 's|http://deb.debian.org|https://deb.debian.org|g' \
-e 's|http://security.debian.org|https://security.debian.org|g' \
/etc/apt/sources.list.d/debian.sources; \
fi; \
apt-get -o Acquire::Retries=5 update; \
apt-get install -y --no-install-recommends ca-certificates iptables iproute2; \
rm -rf /var/lib/apt/lists/*
COPY requirements.txt . COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt RUN pip install --no-cache-dir -r requirements.txt

View File

@@ -17,6 +17,23 @@
- Linux с Docker (для NAT — предпочтительно host network + privileged). - Linux с Docker (для NAT — предпочтительно host network + privileged).
- Доступ к **`docker.sock`** на хосте (по умолчанию монтируется), чтобы в таблице «Сервисы» третья строка могла показывать статус **самого контейнера** как `kaskad-web.service`. - Доступ к **`docker.sock`** на хосте (по умолчанию монтируется), чтобы в таблице «Сервисы» третья строка могла показывать статус **самого контейнера** как `kaskad-web.service`.
## Сборка образа: «invalid signature» / apt не подписан
Чаще всего: **битый кэш Docker BuildKit**, **прокси по HTTP**, **место на диске**, **сбитые часы** на хосте.
На хосте:
```bash
date -u # время должно быть разумным
df -h /var/lib/docker # есть ли свободное место
docker builder prune -af # сбросить кэш сборки
docker build --pull --no-cache -t kaskad-web-vpn:test .
```
Если ошибка остаётся: временно отключите HTTP-прокси для сборки (`unset http_proxy https_proxy NO_PROXY`) или собирайте на другой сети.
В образе списки APT по умолчанию переводятся на **HTTPS** (`deb.debian.org`, `security.debian.org`), чтобы обходить «порченые» HTTP-кэши.
## Установка одной командой ## Установка одной командой
Порт **8088**, логин **user1**, пароль в **`/root/kaskad_web.initial-password`** (или задайте **`ADMIN_PASSWORD`**): Порт **8088**, логин **user1**, пароль в **`/root/kaskad_web.initial-password`** (или задайте **`ADMIN_PASSWORD`**):