diff --git a/.env b/.env index 7cc4610..a1d6541 100644 --- a/.env +++ b/.env @@ -1,21 +1,41 @@ # Immagine Docker da usare -NEXTERM_IMAGE=germannewsmaker/nexterm:latest +IMAGE=germannewsmaker/nexterm:latest # Nome del container -NEXTERM_CONTAINER_NAME=nexterm +CONTAINER_NAME=nexterm # Politica di riavvio (no | always | unless-stopped | on-failure) -NEXTERM_RESTART_POLICY=unless-stopped +RESTART_POLICY=unless-stopped -# Porte host/container -NEXTERM_PORT_HOST=8080 +# Porta esposta sull'host +PORT=8080 # Percorso dati persistenti sul filesystem locale -NEXTERM_DATA_DIR=./nexterm_data +DATA_DIR=./nexterm_data -# Timezone del container -NEXTERM_TZ=Europe/Rome +# Timezone (condivisa da tutti i servizi) +TZ=Europe/Rome # Chiave di cifratura usata da Nexterm (obbligatoria) # Deve essere una stringa esadecimale di 64 caratteri (32 byte). -NEXTERM_ENCRYPTION_KEY=4c4c18e819265ede62496d41dc6511ee4ec107ed0f6115a5d60856ed08ca933e +ENCRYPTION_KEY=crea_una_chiave_esadecimale_di_64_caratteri_per_la_cifratura + +# --------------------------------------------------------------------------- +# Watchtower - aggiornamento automatico delle immagini Docker +# --------------------------------------------------------------------------- + +# Immagine Watchtower +WATCHTOWER_IMAGE=containrrr/watchtower:latest + +# Nome del container Watchtower +WATCHTOWER_CONTAINER_NAME=watchtower + +# Rimozione automatica delle vecchie immagini dopo l'aggiornamento +WATCHTOWER_CLEANUP=true + +# Schedule cron (secondi minuti ore giorni mese giorno_settimana) +# Default: ogni giorno alle 03:00 +WATCHTOWER_SCHEDULE=0 0 3 * * * + +# Livello log notifiche (panic | fatal | error | warn | info | debug | trace) +WATCHTOWER_NOTIFICATIONS_LEVEL=warn diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a94f168 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +### Windows +# Windows thumbnail cache files +Thumbs.db + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows shortcuts +*.lnk \ No newline at end of file diff --git a/README.md b/README.md index 6473038..04e8599 100644 --- a/README.md +++ b/README.md @@ -18,17 +18,25 @@ Modifica il file `.env` in base alle tue esigenze. Variabili principali: -- `NEXTERM_IMAGE`: immagine Docker da usare -- `NEXTERM_CONTAINER_NAME`: nome del container -- `NEXTERM_RESTART_POLICY`: policy di riavvio -- `NEXTERM_PORT_HOST`: porta esposta sull'host -- `NEXTERM_PORT_CONTAINER`: porta interna del container -- `NEXTERM_DATA_DIR`: directory dati persistenti -- `NEXTERM_TZ`: timezone del container -- `NEXTERM_ENCRYPTION_KEY`: chiave di cifratura obbligatoria per Nexterm +- `IMAGE`: immagine Docker da usare +- `CONTAINER_NAME`: nome del container nexterm +- `RESTART_POLICY`: policy di riavvio (condivisa da tutti i servizi) +- `PORT`: porta esposta sull'host +- `DATA_DIR`: directory dati persistenti +- `TZ`: timezone condivisa da tutti i servizi +- `ENCRYPTION_KEY`: chiave di cifratura obbligatoria per Nexterm -> `NEXTERM_ENCRYPTION_KEY` deve essere una stringa esadecimale di **64 caratteri**. -> Esempio rapido (PowerShell): +> `ENCRYPTION_KEY` deve essere una stringa esadecimale di **64 caratteri**. + +Variabili Watchtower: + +- `WATCHTOWER_IMAGE`: immagine Docker da usare (default: `containrrr/watchtower:latest`) +- `WATCHTOWER_CONTAINER_NAME`: nome del container Watchtower +- `WATCHTOWER_CLEANUP`: rimuove le vecchie immagini dopo l'aggiornamento (`true`/`false`) +- `WATCHTOWER_SCHEDULE`: schedule cron a 6 campi per il controllo aggiornamenti (default: ogni giorno alle 03:00) +- `WATCHTOWER_NOTIFICATIONS_LEVEL`: livello di log (`warn` consigliato) + +Esempio rapido (PowerShell): ```powershell $bytes = New-Object byte[] 32 @@ -36,6 +44,12 @@ $bytes = New-Object byte[] 32 ($bytes | ForEach-Object { $_.ToString('x2') }) -join '' ``` +Esempio rapido (Linux/macOS): + +```bash +openssl rand -hex 32 +``` + ## Avvio ```bash diff --git a/docker-compose.yml b/docker-compose.yml index d7fae65..957a738 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,27 @@ services: nexterm: - image: ${NEXTERM_IMAGE} - container_name: ${NEXTERM_CONTAINER_NAME} - restart: ${NEXTERM_RESTART_POLICY} + image: ${IMAGE} + container_name: ${CONTAINER_NAME} + restart: ${RESTART_POLICY} ports: - - "${NEXTERM_PORT_HOST}:6989" + - "${PORT}:6989" volumes: - - ${NEXTERM_DATA_DIR}:/app/data + - ${DATA_DIR}:/app/data environment: - - TZ=${NEXTERM_TZ} - - ENCRYPTION_KEY=${NEXTERM_ENCRYPTION_KEY} \ No newline at end of file + - TZ=${TZ} + - ENCRYPTION_KEY=${ENCRYPTION_KEY} + labels: + - "com.centurylinklabs.watchtower.enable=true" + + watchtower: + image: ${WATCHTOWER_IMAGE} + container_name: ${CONTAINER_NAME}_${WATCHTOWER_CONTAINER_NAME} + restart: ${RESTART_POLICY} + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - TZ=${TZ} + - WATCHTOWER_CLEANUP=${WATCHTOWER_CLEANUP} + - WATCHTOWER_SCHEDULE=${WATCHTOWER_SCHEDULE} + - WATCHTOWER_LABEL_ENABLE=true + - WATCHTOWER_NOTIFICATIONS_LEVEL=${WATCHTOWER_NOTIFICATIONS_LEVEL} \ No newline at end of file