From c1f62f507fa55dd4a9f1684121c8d038e95e2387 Mon Sep 17 00:00:00 2001 From: Nicola Date: Thu, 25 Jun 2026 08:23:29 +0200 Subject: [PATCH] Refactor environment configuration and update Docker Compose settings --- .env.example | 20 +++------------ README.md | 61 +++++++++++++++------------------------------- docker-compose.yml | 6 ++--- 3 files changed, 27 insertions(+), 60 deletions(-) diff --git a/.env.example b/.env.example index a4ebfbd..2e71f89 100644 --- a/.env.example +++ b/.env.example @@ -1,23 +1,11 @@ -# Tennis Roots – Configurazione Docker +# Tennis Roots – Configurazione # Copia questo file in .env e personalizza i valori -# Dominio pubblico per il servizio (obbligatorio) -DOMAIN=tennis.ricordatiilatte.it +# Dominio pubblico (obbligatorio) +DOMAIN=tennis.example.com # Nome del container CONTAINER_NAME=tennis-roots -# Rete Traefik esterna -TRAEFIK_NETWORK=traefik-public - -# Certificato SSL -CERT_RESOLVER=letsencrypt - -# Entrypoint Traefik -ENTRYPOINT=https - -# Porta interna del server Express +# Porta interna del server INTERNAL_PORT=3000 - -# (Opzionale) Porta esterna per debug diretto senza Traefik -# HOST_PORT=3000 diff --git a/README.md b/README.md index 1959360..b2a8320 100644 --- a/README.md +++ b/README.md @@ -20,17 +20,6 @@ Overlay per streaming tennis (OBS) con controller remoto via WebSocket. ## Quick Start -```bash -# Clona / entra nel progetto -cd tennis-roots - -# Avvia tutto con uno script -chmod +x start.sh -./start.sh -``` - -Oppure manualmente: - ```bash cd server npm install @@ -134,46 +123,37 @@ npm run dev # node --watch ## Deploy su VPS (Docker + Traefik) -Il progetto include `Dockerfile` e `docker-compose.yml` pronti per il deploy -su un'infrastruttura con **Traefik** come reverse proxy. - ### Prerequisiti -- Docker e Docker Compose installati +- Docker e Docker Compose - Rete `traefik-public` già esistente (`docker network create traefik-public`) -- Dominio configurato (es. `tennis.ricordatiilatte.it`) ### Procedura ```bash -# Clona il progetto sulla VPS -git clone tennis-roots -cd tennis-roots - -# Avvia +git clone stream-overlay +cd stream-overlay +cp .env.example .env +# imposta DOMAIN con il tuo dominio docker compose up -d - -# Log -docker compose logs -f ``` ### Accessi | Risorsa | URL | |---------|-----| -| Controller | `https://tennis.ricordatiilatte.it/controller/` | -| Scoreboard | `https://tennis.ricordatiilatte.it/overlay/scoreboard.html` | -| Match Info | `https://tennis.ricordatiilatte.it/overlay/match-info.html` | -| Clock | `https://tennis.ricordatiilatte.it/overlay/clock.html` | -| Server Ind. | `https://tennis.ricordatiilatte.it/overlay/server-indicator.html` | -| API stato | `https://tennis.ricordatiilatte.it/api/state` | -| WebSocket | `wss://tennis.ricordatiilatte.it/ws` | +| Controller | `https:///controller/` | +| Scoreboard | `https:///overlay/scoreboard.html` | +| Match Info | `https:///overlay/match-info.html` | +| Clock | `https:///overlay/clock.html` | +| Server Ind. | `https:///overlay/server-indicator.html` | +| API stato | `https:///api/state` | +| WebSocket | `wss:///ws` | ### Note - Il server è stateless (stato in memoria). Un restart azzera il match. - Il WebSocket funziona nativamente con Traefik (upgrade HTTP → WS automatico). -- Se vuoi un dominio diverso, cambia il valore di `Host(...)` in `docker-compose.yml`. ## Regole punteggio implementate @@ -186,22 +166,21 @@ docker compose logs -f ## Struttura file ``` -tennis-roots/ +stream-overlay/ ├── server/ │ ├── package.json -│ ├── index.js # Server Express + WebSocket -│ └── node_modules/ +│ ├── Dockerfile +│ └── index.js ├── overlay/ -│ ├── common.js # Client WebSocket condiviso +│ ├── common.js │ ├── scoreboard.html │ ├── match-info.html │ ├── clock.html │ └── server-indicator.html ├── controller/ -│ └── index.html # Pannello di controllo -├── server/ -│ ├── Dockerfile # Immagine container -│ └── ... -├── docker-compose.yml # Deploy con Traefik +│ └── index.html +├── docker-compose.yml +├── .env.example +├── .gitignore └── README.md ``` diff --git a/docker-compose.yml b/docker-compose.yml index 0901b36..86e0f2f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,10 +8,10 @@ services: security_opt: - no-new-privileges:true networks: - - ${TRAEFIK_NETWORK:-traefik-public} + - traefik-public labels: - "traefik.enable=true" - - "traefik.docker.network=${TRAEFIK_NETWORK:-traefik-public}" + - "traefik.docker.network=traefik-public" - "traefik.http.routers.tennis-roots.rule=Host(`${DOMAIN:-tennis.localhost}`)" - "traefik.http.routers.tennis-roots.entrypoints=${ENTRYPOINT:-https}" - "traefik.http.routers.tennis-roots.tls=true" @@ -23,5 +23,5 @@ services: - "traefik.http.middlewares.tennis-roots-headers.headers.customresponseheaders.X-Robots-Tag=noindex" networks: - ${TRAEFIK_NETWORK:-traefik-public}: + traefik-public: external: true