diff --git a/.env.example b/.env.example index 75350f6..12a0d63 100644 --- a/.env.example +++ b/.env.example @@ -1,12 +1,29 @@ -# Slavic Pulse — Environment Configuration (Local Development) +# Slavic Pulse — Environment Configuration # Copy to .env and fill in your values. # Never commit .env with real credentials to version control. +# +# Po zmianie wartości uruchom: ./dev.sh config (lub ./dev.sh restart) # --- Frontend Server --- # Port na hoście (localhost). W kontenerze nginx zawsze nasłuchuje na 80. -# Mapowanie w docker-compose.yml: ${FRONTEND_PORT}:80 FRONTEND_PORT=8082 -# --- Po zakończeniu intro wideo --- -# Adres docelowy przekierowania po zakończeniu odtwarzania filmu. +# --- Strona (meta, SEO, PWA) --- +SITE_TITLE="Slavic Pulse" +SITE_SHORT_NAME="Slavic Pulse" +SITE_BASE_URL=https://slavic-pulse.com +SITE_DESCRIPTION="Lokalne modele LLM, własny serwer AI (Proxmox, TrueNAS, Ubuntu), RAG, Ollama, Open WebUI, bezpieczny self-hosting i wdrożenia biznesowe lokalnej AI." +SITE_OG_IMAGE_ALT="Slavic Pulse" +THEME_COLOR=#000000 + +# --- Obrazy i ikony (ścieżki względem roota strony) --- +BG_IMAGE=/assets/imgs/www-bg-slavic-pulse-com-001.jpg +FAVICON_48=/assets/imgs/favico/48x48.png +FAVICON_180=/assets/imgs/favico/180x180.png +FAVICON_512=/assets/imgs/favico/512x512.png + +# --- YouTube --- +# ID filmu intro (z adresu youtube.com/watch?v=...) +VIDEO_ID=kujXXtoHUbc +# Adres docelowy po zakończeniu odtwarzania intro POST_VIDEO_REDIRECT_URL=https://www.youtube.com/watch?v=kujXXtoHUbc diff --git a/.gitignore b/.gitignore index 4c161e8..ba6735d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ # Generated from .env at dev/build time config.js +index.html +site.webmanifest # Python __pycache__/ diff --git a/Dockerfile b/Dockerfile index 5c33413..8dab85c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,22 @@ FROM nginx:1.27-alpine AS production +RUN apk add --no-cache gettext + # Remove default nginx config RUN rm /etc/nginx/conf.d/default.conf # Copy nginx config from project root COPY default.conf /etc/nginx/conf.d/default.conf -# Copy web files (index.html + assets) -COPY index.html /usr/share/nginx/html/index.html -COPY site.webmanifest /usr/share/nginx/html/site.webmanifest +# Copy static assets COPY assets/ /usr/share/nginx/html/assets/ -# Generate config.js from env vars at container start -COPY generate-config.sh /docker-entrypoint.d/99-generate-config.sh -RUN chmod +x /docker-entrypoint.d/99-generate-config.sh +# Templates + generator (rendered at container start) +COPY index.html.template site.webmanifest.template generate-from-env.sh /opt/slavic-pulse/ +RUN chmod +x /opt/slavic-pulse/generate-from-env.sh + +COPY docker-entrypoint.sh /docker-entrypoint.d/99-generate-from-env.sh +RUN chmod +x /docker-entrypoint.d/99-generate-from-env.sh EXPOSE 80 diff --git a/dev.sh b/dev.sh index 398ae95..12a0370 100755 --- a/dev.sh +++ b/dev.sh @@ -10,22 +10,22 @@ if [[ ! -f .env ]]; then echo "Utworzono .env z .env.example" fi -generate_config() { +generate_from_env() { set -a # shellcheck disable=SC1091 source .env set +a - ./generate-config.sh config.js + chmod +x generate-from-env.sh + ./generate-from-env.sh . } case "${1:-up}" in up) - chmod +x generate-config.sh - generate_config + generate_from_env $COMPOSE up -d echo "" echo "Dev server: http://localhost:${FRONTEND_PORT:-8082}" - echo "Edytuj pliki → F5 w przeglądarce (bez rebuildu)." + echo "Edytuj .env → ./dev.sh config → F5 w przeglądarce." ;; down) $COMPOSE down @@ -34,12 +34,12 @@ case "${1:-up}" in $COMPOSE logs -f ;; restart) - generate_config + generate_from_env $COMPOSE restart ;; config) - generate_config - echo "Wygenerowano config.js (POST_VIDEO_REDIRECT_URL z .env)." + generate_from_env + echo "Wygenerowano index.html, site.webmanifest i config.js z .env." ;; reload-nginx) docker exec slavic-pulse-com-frontend nginx -s reload diff --git a/docker-compose-example/.env.example b/docker-compose-example/.env.example index 5adfb60..450ccce 100644 --- a/docker-compose-example/.env.example +++ b/docker-compose-example/.env.example @@ -3,11 +3,22 @@ # Never commit .env with real credentials to version control. # --- Frontend Server --- -# Port publikowany na hoście. W kontenerze nginx zawsze nasłuchuje na 80. -# Mapowanie w docker-compose.yml: ${FRONTEND_PORT}:80 -# Dokploy/Traefik dodatkowo routuje po FQDN do wewnętrznego portu 80 kontenera. FRONTEND_PORT=8082 -# --- Po zakończeniu intro wideo --- -# Adres docelowy przekierowania po zakończeniu odtwarzania filmu. +# --- Strona (meta, SEO, PWA) --- +SITE_TITLE="Slavic Pulse" +SITE_SHORT_NAME="Slavic Pulse" +SITE_BASE_URL=https://slavic-pulse.com +SITE_DESCRIPTION="Lokalne modele LLM, własny serwer AI (Proxmox, TrueNAS, Ubuntu), RAG, Ollama, Open WebUI, bezpieczny self-hosting i wdrożenia biznesowe lokalnej AI." +SITE_OG_IMAGE_ALT="Slavic Pulse" +THEME_COLOR=#000000 + +# --- Obrazy i ikony (ścieżki względem roota strony) --- +BG_IMAGE=/assets/imgs/www-bg-slavic-pulse-com-001.jpg +FAVICON_48=/assets/imgs/favico/48x48.png +FAVICON_180=/assets/imgs/favico/180x180.png +FAVICON_512=/assets/imgs/favico/512x512.png + +# --- YouTube --- +VIDEO_ID=kujXXtoHUbc POST_VIDEO_REDIRECT_URL=https://www.youtube.com/watch?v=kujXXtoHUbc diff --git a/docker-compose-example/docker-compose.yml b/docker-compose-example/docker-compose.yml index 2ab6137..a157008 100644 --- a/docker-compose-example/docker-compose.yml +++ b/docker-compose-example/docker-compose.yml @@ -18,21 +18,19 @@ services: ports: - "${FRONTEND_PORT:-8080}:80" - environment: - POST_VIDEO_REDIRECT_URL: ${POST_VIDEO_REDIRECT_URL:-https://www.youtube.com/watch?v=kujXXtoHUbc} + env_file: + - .env command: > sh -c " - apk add --no-cache git && + apk add --no-cache git gettext && rm -rf /app && git clone https://gitea.expert-it.agency-ai.dev/tomasz-syn-grzegorza/site-slavic-pulse-com.git /app && - cp /app/index.html /usr/share/nginx/html/index.html && - cp /app/site.webmanifest /usr/share/nginx/html/site.webmanifest && + chmod +x /app/generate-from-env.sh && + TEMPLATE_DIR=/app /app/generate-from-env.sh /usr/share/nginx/html && cp -r /app/assets /usr/share/nginx/html/assets && rm /etc/nginx/conf.d/default.conf && cp /app/default.conf /etc/nginx/conf.d/default.conf && - chmod +x /app/generate-config.sh && - POST_VIDEO_REDIRECT_URL=\"$${POST_VIDEO_REDIRECT_URL}\" /app/generate-config.sh /usr/share/nginx/html/config.js && nginx -g 'daemon off;' " diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 3095e50..3fa1a03 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -7,11 +7,9 @@ services: build: !reset null env_file: - .env - environment: - POST_VIDEO_REDIRECT_URL: ${POST_VIDEO_REDIRECT_URL:-https://www.youtube.com/watch?v=kujXXtoHUbc} volumes: - ./index.html:/usr/share/nginx/html/index.html:ro - - ./config.js:/usr/share/nginx/html/config.js:ro - ./site.webmanifest:/usr/share/nginx/html/site.webmanifest:ro + - ./config.js:/usr/share/nginx/html/config.js:ro - ./assets:/usr/share/nginx/html/assets:ro - ./default.conf:/etc/nginx/conf.d/default.conf:ro diff --git a/docker-compose.yml b/docker-compose.yml index ae1b96b..eb952b6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,7 +10,5 @@ services: restart: unless-stopped env_file: - .env - environment: - POST_VIDEO_REDIRECT_URL: ${POST_VIDEO_REDIRECT_URL:-https://www.youtube.com/watch?v=kujXXtoHUbc} ports: - "${FRONTEND_PORT:-8080}:80" diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100755 index 0000000..964f028 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,2 @@ +#!/bin/sh +TEMPLATE_DIR=/opt/slavic-pulse /opt/slavic-pulse/generate-from-env.sh /usr/share/nginx/html diff --git a/generate-config.sh b/generate-config.sh deleted file mode 100755 index e09130b..0000000 --- a/generate-config.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# Generuje config.js z zmiennych środowiskowych (np. z pliku .env). -set -eu - -if [ -n "${1:-}" ]; then - OUTPUT="$1" -elif [ -d /usr/share/nginx/html ]; then - OUTPUT="/usr/share/nginx/html/config.js" -else - OUTPUT="config.js" -fi - -POST_VIDEO_REDIRECT_URL="${POST_VIDEO_REDIRECT_URL:-https://www.youtube.com/watch?v=kujXXtoHUbc}" - -cat > "$OUTPUT" < "$OUTPUT_DIR/index.html" +envsubst "$TEMPLATE_VARS" < "$TEMPLATE_DIR/site.webmanifest.template" > "$OUTPUT_DIR/site.webmanifest" + +cat > "$OUTPUT_DIR/config.js" < - Slavic Pulse - - - + ${SITE_TITLE} + + - + - - - + + + - - + + - - - - - - + + + + + + - - + +