Mute autoplay and add faster loader fallback for FB/Instagram WebViews; document adding www.slavic-pulse.com in Dokploy to avoid self-signed cert errors on mobile. Co-authored-by: Cursor <cursoragent@cursor.com>
5.2 KiB
Slavic Pulse - Frontend (Dokploy Deployment)
Statyczna strona z intro YouTube (short FHD 16:9 lub vertical 9:16 — wybór po formacie viewportu). Tło przed filmem to miniaturka z YouTube. Konfiguracja w .env, HTML generowany przy starcie kontenera.
Struktura projektu
site-slavic-pulse-com/
├── docker-compose.yml # Lokalny dev (build z Dockerfile)
├── Dockerfile
├── default.conf
├── index.html.template # Szablon strony
├── generate-from-env.sh # Generator HTML z .env
├── assets/imgs/favico/ # Favicony
├── site.webmanifest.template
└── docker-compose-example/ # Pliki deploymentowe Dokploy
├── docker-compose.yml
├── .env.example
└── README.md
Dokploy deployment
Kroki w Dokploy UI:
- Nowa aplikacja (Compose) → wklej
docker-compose-example/docker-compose.yml - Wklej
.env(na podstawie.env.example) — ustawVIDEO_ID_*, opisy SEO - Domains → dodaj oba hosty (Container Port =
80, HTTPS = Let's Encrypt):slavic-pulse.comwww.slavic-pulse.com← wymagane — bez tego www dostaje domyślny cert Traefika (CN=*, self-signed) i telefony pokazują „serwer nie potrafi udowodnić tożsamości”
- (Opcjonalnie) Advanced → Redirects → preset www → non-www, żeby
wwwprzekierowywało na apex - Traefik routuje ruch HTTPS → port 80 kontenera (bez mapowania portu na hosta)
- Deploy
Porty: nie używaj ports: w compose — Traefik/Dokploy łączy się z wewnętrznym :80.
W docker ps kolumna PORTS może być pusta — to normalne przy routingu przez Traefik.
Gitea Provider w Dokploy (OAuth) — autoryzuje Dokploy do listowania repo i deployu z UI,
ale nie zastępuje credentials dla git clone wewnątrz kontenera przy starcie.
Dla prywatnego repo: ustaw repo jako Public lub dodaj GITEA_REPO_URL z Deploy Token w .env.
Jak to działa
- Start kontenera —
git clonerepozytorium z Gitea generate-from-env.sh— budujeindex.htmlisite.webmanifestze zmiennych.env- Tło — miniaturka YouTube (
img.youtube.com) dopasowana do FHD/vertical - Intro wideo — YouTube IFrame API, autoplay
- Po filmie — przekierowanie (jeśli
POST_VIDEO_REDIRECT_ENABLED=true) lub tło z miniaturki
Konfiguracja (.env)
| Zmienna | Opis |
|---|---|
GITEA_REPO_URL |
Opcjonalnie — URL clone z tokenem dla prywatnego repo |
VIDEO_ID_FHD / VIDEO_ID_VERTICAL |
ID shortów YouTube |
POST_VIDEO_REDIRECT_URL_* |
URL po zakończeniu filmu |
POST_VIDEO_REDIRECT_ENABLED |
true = redirect, false = zostaje tło |
Rozwiązywanie problemów
Kontener Restarting (128), brak portów w docker ps
Przyczyna: git clone nie może pobrać repozytorium (najczęściej prywatne repo bez credentials).
Diagnostyka na serwerze:
docker logs slavic-pulse-com-frontend --tail 50
Typowy błąd:
fatal: could not read Username for 'https://gitea.expert-it.agency-ai.dev': No such device or address
Rozwiązanie A (najprostsze): ustaw repozytorium jako Public w Gitea → Settings → Repository → Make Repository Public → redeploy.
Rozwiązanie B (repo prywatne): w Gitea utwórz Deploy Token / PAT i dodaj do .env w Dokploy:
GITEA_REPO_URL=https://oauth2:TWÓJ_TOKEN@gitea.expert-it.agency-ai.dev/tomasz-syn-grzegorza/site-slavic-pulse-com.git
Brak portów w docker ps (kolumna PORTS pusta)
Przy Traefik/Dokploy bez ports: w compose — to oczekiwane.
Sprawdź w Dokploy UI: domena → Container Port = 80, kontener Up (healthy).
Zmiana konfiguracji po deployu
- Edytuj
.envw Dokploy - Redeploy / restart kontenera (przy starcie ponownie klonuje repo i generuje HTML)
Błąd certyfikatu SSL na telefonie („serwer nie potrafi udowodnić…”)
Diagnoza (stan typowy):
https://slavic-pulse.com— certyfikat Let's Encrypt OKhttps://www.slavic-pulse.com— self-signed (Traefik default, CN=*) → błąd na Androidzie / iPhone / WebView Facebooka
Strona wysyła Strict-Transport-Security: includeSubDomains, więc po wizycie na działającym apexie przeglądarka wymusza HTTPS także na www — a tam cert jest zły → twardy błąd.
Naprawa w Dokploy (zalecane):
- Domains → Add Domain
- Host:
www.slavic-pulse.com, Port:80, HTTPS: włączone, Certificate: letsencrypt - Deploy / poczekaj ~30 s na wystawienie certyfikatu
- Sprawdź:
curl -I https://www.slavic-pulse.com(powinno być HTTP 200 lub 301, bez błędu SSL) - (Opcjonalnie) Advanced → Redirects → www to non-www
Alternatywa w DNS (OVH): zamiast rekordu A dla www ustaw przekierowanie HTTP na https://slavic-pulse.com w panelu domeny — wtedy ruch www nie trafia na serwer bez certyfikatu.
Facebook / in-app browser: linki w postach powinny wskazywać https://slavic-pulse.com (bez www). Po naprawie www problem znika także dla użytkowników, którzy wpiszą www ręcznie.
Odnowienie certyfikatu: Let's Encrypt odnawia cert automatycznie przez Traefik. Jeśli cert wygasa, w Dokploy sprawdź logi Traefik i czy port 80 jest dostępny z internetu (HTTP-01 challenge).