# Setup Ubuntu Server + Docker + Portainer Questo repository contiene uno script per configurare rapidamente un server Ubuntu: - Aggiorna il sistema e installa pacchetti base - Configura repository e installa Docker (CE, CLI, containerd, buildx, compose plugin) - Chiede un nome utente da creare (opzionale: lasciando vuoto usa l'utente corrente) e lo aggiunge al gruppo `docker` - Scarica [lvm-volume-enlarger](https://repository.pyconetwork.it/francesco/lvm-volume-enlarger.git) e, se il volume LVM di root può essere allargato, propone di eseguire lo script - Esegue una post-installazione tramite `make` - Clona il repo Portainer e ne esegue il deploy via Docker In aggiunta, applica misure di hardening (senza SSH hardening): - Impostazione timezone (default: Europe/Rome) - Auto-aggiornamenti di sicurezza (`unattended-upgrades`) - Fail2ban: jail `sshd` abilitata con limiti prudenziali - Docker: `daemon.json` con `live-restore` e rotazione log ## Requisiti - Esegui su Ubuntu Server (root/sudo necessario) - Connettività Internet ## Uso 1. Copia la cartella `linux-server-setup` sul server Ubuntu. 2. Esegui lo script di setup: ```bash sudo bash scripts/setup.sh ``` 3. Inserisci il nome utente quando richiesto, oppure premi Invio per usare l'utente corrente (quello che ha lanciato `sudo`, o `root`). Lo script: - creerà l'utente (se non esiste) e imposterà la password - clonerà `lvm-volume-enlarger` in `/opt/lvm-volume-enlarger`; se la root è un volume LVM ext4 e il volume group ha spazio libero, chiederà se eseguire `enlarge.sh` - installerà Docker e aggiungerà l'utente al gruppo `docker` (non necessario se l'utente è `root`) - eseguirà `make postinstall` per utilità post-installazione - clonerà `https://git.pyconetwork.it/francesco/portainer.git` in `/opt/portainer` e tenterà il deploy con `docker compose up -d` ## Note - Dopo l'aggiunta al gruppo `docker`, è necessario fare logout/login per applicare i permessi. - Se rifiuti l'estensione del disco, puoi eseguirla in seguito con `sudo bash /opt/lvm-volume-enlarger/enlarge.sh`. Lo script usa solo lo spazio già libero nel volume group: se hai ingrandito il disco virtuale, prima vanno estesi la partizione e il PV (`growpart` + `pvresize`). - Se il repository Portainer non contiene un `docker-compose.yml/compose.yml`, lo script proverà `make deploy` se presente; altrimenti mostrerà un avviso. - Il target `postinstall` installa: `vim`, `tmux`, `net-tools`, `wget`, `jq`, `tree`, `ufw`, `fail2ban`, `software-properties-common`, `htop`, `lsof`, e abilita UFW + Fail2ban. - Il target `postinstall` installa: `vim`, `tmux`, `net-tools`, `wget`, `jq`, `tree`, `fail2ban`, `software-properties-common`, `htop`, `lsof`.