Refactor environment configuration and update Docker Compose settings
This commit is contained in:
+4
-16
@@ -1,23 +1,11 @@
|
|||||||
# Tennis Roots – Configurazione Docker
|
# Tennis Roots – Configurazione
|
||||||
# Copia questo file in .env e personalizza i valori
|
# Copia questo file in .env e personalizza i valori
|
||||||
|
|
||||||
# Dominio pubblico per il servizio (obbligatorio)
|
# Dominio pubblico (obbligatorio)
|
||||||
DOMAIN=tennis.ricordatiilatte.it
|
DOMAIN=tennis.example.com
|
||||||
|
|
||||||
# Nome del container
|
# Nome del container
|
||||||
CONTAINER_NAME=tennis-roots
|
CONTAINER_NAME=tennis-roots
|
||||||
|
|
||||||
# Rete Traefik esterna
|
# Porta interna del server
|
||||||
TRAEFIK_NETWORK=traefik-public
|
|
||||||
|
|
||||||
# Certificato SSL
|
|
||||||
CERT_RESOLVER=letsencrypt
|
|
||||||
|
|
||||||
# Entrypoint Traefik
|
|
||||||
ENTRYPOINT=https
|
|
||||||
|
|
||||||
# Porta interna del server Express
|
|
||||||
INTERNAL_PORT=3000
|
INTERNAL_PORT=3000
|
||||||
|
|
||||||
# (Opzionale) Porta esterna per debug diretto senza Traefik
|
|
||||||
# HOST_PORT=3000
|
|
||||||
|
|||||||
@@ -20,17 +20,6 @@ Overlay per streaming tennis (OBS) con controller remoto via WebSocket.
|
|||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
```bash
|
|
||||||
# Clona / entra nel progetto
|
|
||||||
cd tennis-roots
|
|
||||||
|
|
||||||
# Avvia tutto con uno script
|
|
||||||
chmod +x start.sh
|
|
||||||
./start.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Oppure manualmente:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd server
|
cd server
|
||||||
npm install
|
npm install
|
||||||
@@ -134,46 +123,37 @@ npm run dev # node --watch
|
|||||||
|
|
||||||
## Deploy su VPS (Docker + Traefik)
|
## 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
|
### Prerequisiti
|
||||||
|
|
||||||
- Docker e Docker Compose installati
|
- Docker e Docker Compose
|
||||||
- Rete `traefik-public` già esistente (`docker network create traefik-public`)
|
- Rete `traefik-public` già esistente (`docker network create traefik-public`)
|
||||||
- Dominio configurato (es. `tennis.ricordatiilatte.it`)
|
|
||||||
|
|
||||||
### Procedura
|
### Procedura
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clona il progetto sulla VPS
|
git clone <url> stream-overlay
|
||||||
git clone <url> tennis-roots
|
cd stream-overlay
|
||||||
cd tennis-roots
|
cp .env.example .env
|
||||||
|
# imposta DOMAIN con il tuo dominio
|
||||||
# Avvia
|
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
|
|
||||||
# Log
|
|
||||||
docker compose logs -f
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Accessi
|
### Accessi
|
||||||
|
|
||||||
| Risorsa | URL |
|
| Risorsa | URL |
|
||||||
|---------|-----|
|
|---------|-----|
|
||||||
| Controller | `https://tennis.ricordatiilatte.it/controller/` |
|
| Controller | `https://<tuo-dominio>/controller/` |
|
||||||
| Scoreboard | `https://tennis.ricordatiilatte.it/overlay/scoreboard.html` |
|
| Scoreboard | `https://<tuo-dominio>/overlay/scoreboard.html` |
|
||||||
| Match Info | `https://tennis.ricordatiilatte.it/overlay/match-info.html` |
|
| Match Info | `https://<tuo-dominio>/overlay/match-info.html` |
|
||||||
| Clock | `https://tennis.ricordatiilatte.it/overlay/clock.html` |
|
| Clock | `https://<tuo-dominio>/overlay/clock.html` |
|
||||||
| Server Ind. | `https://tennis.ricordatiilatte.it/overlay/server-indicator.html` |
|
| Server Ind. | `https://<tuo-dominio>/overlay/server-indicator.html` |
|
||||||
| API stato | `https://tennis.ricordatiilatte.it/api/state` |
|
| API stato | `https://<tuo-dominio>/api/state` |
|
||||||
| WebSocket | `wss://tennis.ricordatiilatte.it/ws` |
|
| WebSocket | `wss://<tuo-dominio>/ws` |
|
||||||
|
|
||||||
### Note
|
### Note
|
||||||
|
|
||||||
- Il server è stateless (stato in memoria). Un restart azzera il match.
|
- Il server è stateless (stato in memoria). Un restart azzera il match.
|
||||||
- Il WebSocket funziona nativamente con Traefik (upgrade HTTP → WS automatico).
|
- 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
|
## Regole punteggio implementate
|
||||||
|
|
||||||
@@ -186,22 +166,21 @@ docker compose logs -f
|
|||||||
## Struttura file
|
## Struttura file
|
||||||
|
|
||||||
```
|
```
|
||||||
tennis-roots/
|
stream-overlay/
|
||||||
├── server/
|
├── server/
|
||||||
│ ├── package.json
|
│ ├── package.json
|
||||||
│ ├── index.js # Server Express + WebSocket
|
│ ├── Dockerfile
|
||||||
│ └── node_modules/
|
│ └── index.js
|
||||||
├── overlay/
|
├── overlay/
|
||||||
│ ├── common.js # Client WebSocket condiviso
|
│ ├── common.js
|
||||||
│ ├── scoreboard.html
|
│ ├── scoreboard.html
|
||||||
│ ├── match-info.html
|
│ ├── match-info.html
|
||||||
│ ├── clock.html
|
│ ├── clock.html
|
||||||
│ └── server-indicator.html
|
│ └── server-indicator.html
|
||||||
├── controller/
|
├── controller/
|
||||||
│ └── index.html # Pannello di controllo
|
│ └── index.html
|
||||||
├── server/
|
├── docker-compose.yml
|
||||||
│ ├── Dockerfile # Immagine container
|
├── .env.example
|
||||||
│ └── ...
|
├── .gitignore
|
||||||
├── docker-compose.yml # Deploy con Traefik
|
|
||||||
└── README.md
|
└── README.md
|
||||||
```
|
```
|
||||||
|
|||||||
+3
-3
@@ -8,10 +8,10 @@ services:
|
|||||||
security_opt:
|
security_opt:
|
||||||
- no-new-privileges:true
|
- no-new-privileges:true
|
||||||
networks:
|
networks:
|
||||||
- ${TRAEFIK_NETWORK:-traefik-public}
|
- traefik-public
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "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.rule=Host(`${DOMAIN:-tennis.localhost}`)"
|
||||||
- "traefik.http.routers.tennis-roots.entrypoints=${ENTRYPOINT:-https}"
|
- "traefik.http.routers.tennis-roots.entrypoints=${ENTRYPOINT:-https}"
|
||||||
- "traefik.http.routers.tennis-roots.tls=true"
|
- "traefik.http.routers.tennis-roots.tls=true"
|
||||||
@@ -23,5 +23,5 @@ services:
|
|||||||
- "traefik.http.middlewares.tennis-roots-headers.headers.customresponseheaders.X-Robots-Tag=noindex"
|
- "traefik.http.middlewares.tennis-roots-headers.headers.customresponseheaders.X-Robots-Tag=noindex"
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
${TRAEFIK_NETWORK:-traefik-public}:
|
traefik-public:
|
||||||
external: true
|
external: true
|
||||||
|
|||||||
Reference in New Issue
Block a user