Skip to content

security: html2docx jako opcjonalny sidecar + zdjęcie docker.sock z appservera#16

Merged
mpasternak merged 1 commit into
mainfrom
security/html2docx-wiring
Jul 12, 2026
Merged

security: html2docx jako opcjonalny sidecar + zdjęcie docker.sock z appservera#16
mpasternak merged 1 commit into
mainfrom
security/html2docx-wiring

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Cel

Domyka po stronie deploya poprawkę bezpieczeństwa z iplweb/bpp#552
(fallback konwersji DOCX przez usługę HTTP zamiast docker run przez
docker.sock).

Zmiany

1. Zdjęcie docker.sock z appservera (docker-compose.application.yml)
Nowy obraz iplweb/bpp_appserver (po #552) nie ma już Docker CLI ani nie woła
dockera — mount /var/run/docker.sock:ro był jedynym powodem, dla którego
appserver miał pełną kontrolę nad demonem Dockera hosta (RCE → przejęcie
hosta). Usunięty.
ofelia / autoheal / monitoring zachowują socket — to demony infry bez
wejścia z sieci, poza zakresem zastrzeżenia.

2. Nowy serwis html2docx — OPCJONALNY (profil)

  • profiles: ['html2docx'] → domyślnie wyłączony, startuje tylko gdy
    COMPOSE_PROFILES zawiera html2docx.
  • Bez published portu (tylko sieć wewnętrzna projektu, html2docx:3030).
  • Bez healthchecka: obraz .NET nie ma curl/wget; restart: always wystarcza.
  • Pin wersji przez HTML2DOCX_VERSION (obraz wersjonowany niezależnie od
    DOCKER_VERSION bpp).

3. .env.sample — jak włączyć
Dwa opt-in kroki: COMPOSE_PROFILES=html2docx (repo-lokalny .env) +
DJANGO_BPP_HTML2DOCX_URL=http://html2docx:3030/convert
(${BPP_CONFIGS_DIR}/.env). Brak URL → fallback wyłączony (miękka degradacja,
bez crasha).

Dlaczego opcjonalny

Fallback html2docx potrzebny jest tylko tam, gdzie pandoc pada (np. core dump
na VMWare ESX). Instancje bez tego problemu jadą na samym pandocu i nie muszą
stawiać dodatkowego kontenera. Klient (bpp) i tak domyślnie ma
HTML2DOCX_URL=None → fallback nieaktywny, dopóki deployment świadomie nie
włączy obu dźwigni.

Weryfikacja

docker compose config:

  • exit=0 (pełny config valid),
  • profil OFF → 0 serwisów html2docx,
  • profil ON (COMPOSE_PROFILES=html2docx) → 1,
  • appserver bez docker.sock w zmergowanym configu (socket tylko na
    ofelia/autoheal/monitoring).

🤖 Generated with Claude Code

… z appservera

Domyka po stronie deploya poprawkę z iplweb/bpp#552 (fallback DOCX przez HTTP
zamiast docker run).

- appserver: usunięty mount /var/run/docker.sock (:ro). Nowy obraz appservera
  nie ma już Docker CLI ani nie woła dockera, więc socket to czysta liability
  (RCE -> przejęcie hosta). ofelia/autoheal/monitoring zachowują socket —
  to demony infry bez wejścia z sieci.
- nowy serwis html2docx OPCJONALNY przez profil `html2docx` (off domyślnie).
  Bez published portu (tylko sieć wewnętrzna, `html2docx:3030`), bez healthchecka
  (obraz .NET nie ma curl/wget; restart:always wystarcza), pin przez
  HTML2DOCX_VERSION.
- .env.sample: jak włączyć (COMPOSE_PROFILES=html2docx + DJANGO_BPP_HTML2DOCX_URL
  w ${BPP_CONFIGS_DIR}/.env). Brak URL => fallback wyłączony (miękka degradacja).

Zweryfikowane: docker compose config exit=0; profil OFF => 0 serwisów html2docx,
profil ON => 1; appserver bez docker.sock w zmergowanym configu.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mpasternak
mpasternak merged commit 3159b72 into main Jul 12, 2026
5 checks passed
mpasternak added a commit that referenced this pull request Jul 12, 2026
cleanup: usuń martwy stary mechanizm html2docx (flaga + docker pull), domyka #16
@mpasternak
mpasternak deleted the security/html2docx-wiring branch July 12, 2026 17:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant