# Self-hosting per principianti

# 1. Introduzione al Self-Hosting

## Cos'è il self-hosting

Il self-hosting è la pratica di ospitare e gestire personalmente servizi, applicazioni e dati su hardware di proprietà o controllato direttamente, invece di affidarsi a fornitori cloud di terze parti. Consiste nell'eseguire software, generalmente open-source, su un server domestico o un Virtual Private Server (VPS) per replicare o sostituire le funzionalità dei servizi commerciali.

## Pro e Contro

### Pro
* **Privacy**: I dati non vengono ceduti a terzi.
* **Controllo**: Gestione totale dell'infrastruttura, del software e degli accessi.
* **Risparmio a lungo termine**: Riduzione o eliminazione degli abbonamenti mensili per servizi cloud.
* **Formazione**: Acquisizione di competenze in ambito sistemistico, reti e sicurezza.

### Contro
* **Responsabilità**: Sicurezza, aggiornamenti e continuità del servizio dipendono esclusivamente dall'amministratore.
* **Investimento iniziale**: Necessità di acquistare hardware.
* **Curva di apprendimento**: Richiede tempo per studiare e implementare le soluzioni.
* **Rischio perdita dati**: Richiede l'implementazione autonoma di strategie di backup efficaci.

## Casi d'uso comuni

* **Cloud Storage**: Sincronizzazione e archiviazione file (es. Nextcloud).
* **Media Streaming**: Gestione di librerie video e audio personali (es. Jellyfin).
* **Password Manager**: Archiviazione crittografata delle credenziali (es. Vaultwarden).
* **DNS Sinkhole**: Blocco di pubblicità e tracker a livello di rete locale (es. Pi-hole).
* **Domotica**: Controllo locale dei dispositivi smart home (es. Home Assistant).

# 2. Requisiti Hardware e Software

## Scelta dell'Hardware

Non è necessario hardware di fascia alta per iniziare. Le opzioni includono:

* **Mini PC (es. processori Intel N100)**: Ottimo rapporto prestazioni/consumi, supporta transcodifica video. Consigliato.
  * si consiglia [prodotti zimastore](https://shop.zimaspace.com/) che hanno porte pci e possibilità di upgrade futuri
* **Thin Client e PC ricondizionati**: Economici, prestazioni adeguate e bassi consumi.
* **Raspberry Pi**: Basso consumo energetico. Ideale per servizi leggeri.
* **Hardware di recupero**: Vecchi computer. Costo iniziale nullo, ma consumi elettrici più elevati.

## Scelta dei Dischi

La scelta del supporto di memorizzazione deve bilanciare prestazioni, capacità e costi.

| Tipo di Disco | Prestazioni | Costo/GB | Utilizzo Consigliato | Note Specifiche |
| :--- | :--- | :--- | :--- | :--- |
| **SSD NVMe (M.2)** | Molto elevate | Elevato | Sistema operativo, container (Docker), database. | Massima reattività del sistema. |
| **SSD SATA** | Medie | Medio | Macchine virtuali, cache, servizi secondari. | Compromesso tra velocità e capacità. |
| **HDD CMR (NAS)** | Basse | Basso | Archiviazione di massa, media server, backup. | Es. WD Red Plus, IronWolf. Progettati per uso 24/7 e array RAID/ZFS. |
| **HDD SMR** | Molto basse | Molto basso | Nessuno in ambito self-hosting. | **Da evitare** per NAS/RAID: cali drastici di prestazioni e rischi di ricostruzione fallita. |

### Panoramica sui RAID (Redundant Array of Independent Disks)

Il RAID permette di combinare più dischi fisici logici per migliorare la tolleranza ai guasti (ridondanza) e le prestazioni. 

**Nota fondamentale: il RAID garantisce la continuità operativa in caso di guasto hardware, ma NON sostituisce un backup esterno.**

È **fortemente consigliato** implementare almeno una configurazione in **RAID 1** per i dati essenziali.

| Livello RAID | Dischi Minimi | Tolleranza Guasti | Caratteristiche | Utilizzo Consigliato |
| :--- | :--- | :--- | :--- | :--- |
| **RAID 0 (Stripe)** | 2 | Nessuna | Somma le capacità e massimizza la velocità. La rottura di un disco distrugge tutti i dati. | Cache temporanee o dati sacrificabili. Da evitare per lo storage principale. |
| **RAID 1 (Mirror)** | 2 | 1 disco | I dati sono scritti identici su due dischi. La capacità totale è pari a quella del disco più piccolo. | **Raccomandato** come base per sistema operativo o dati importanti. |
| **RAID 5 / RAID-Z1** | 3 | 1 disco | Distribuisce dati e parità sui dischi. Buon compromesso tra spazio utile e ridondanza. | Archiviazione di massa su NAS (es. 3 o 4 dischi). |
| **RAID 6 / RAID-Z2** | 4 | 2 dischi | Doppia parità. Sopravvive alla rottura simultanea di due dischi. | Array di storage di grandi dimensioni. |

## Backup e Sicurezza Dati

Il RAID garantisce la continuità operativa, non protegge da cancellazioni accidentali, corruzione software o ransomware. Una strategia di backup indipendente è obbligatoria.

**La Regola del 3-2-1**
Lo standard di settore per garantire l'integrità e la reperibilità dei dati prevede:

* **3 copie dei dati**: Il dato primario e due copie di backup.
* **2 supporti fisici differenti**: Memorizzare i backup su media diversi (es. NAS principale e un disco USB esterno o un secondo server locale).
* **1 copia off-site (remota)**: Mantenere una copia fisicamente in un altro luogo per proteggersi da disastri locali (incendi, furti). Implementabile tramite storage Cloud (es. AWS S3, Backblaze B2) o un NAS remoto.

**Software consigliati**: BorgBackup, Restic, Kopia, Proxmox Backup Server.

## Scelta del Sistema Operativo

Le interfacce grafiche desktop consumano risorse e vengono omesse a favore della riga di comando o interfacce web.

### Sistemi Operativi Linux Tradizionali
* **Debian** [**Guida**](https://bookstack.phast.foo/books/self-hosting-per-principianti/chapter/21-debian) : Massima stabilità e leggerezza.

### Sistemi per NAS
* [**TrueNAS**](https://www.truenas.com/truenas-community-edition/): Ottimo punto di partenza per principianti con esigenze focalizzate sull'archiviazione. Supporta nativamente l'installazione di container e applicazioni oltre alla gestione avanzata dei dischi (ZFS).

### Soluzioni All-in-One
* [**YunoHost**](https://yunohost.org/): Sistema operativo basato su Debian che automatizza l'installazione e la configurazione dei servizi tramite un'interfaccia web. Estremamente consigliato per chi cerca semplicità immediata.
* [**CasaOS**](https://casaos.zimaspace.com/): Interfaccia web installabile su Linux. Semplifica il deployment tramite GUI.

### Soluzioni Pro
* [**Proxmox VE**](https://www.proxmox.com/en/): Hypervisor bare-metal per macchine virtuali e container (LXC). Richiede hardware più performante.
  
(Aggiornamento futuro) Note: per ogni soluzione verrà fornita una configurazione.
## Esempio di Sistema Economico: ZimaBlade + TrueNAS

Configurazione entry-level ottimizzata per affidabilità e basso costo, ideale per archiviazione sicura e gestione di servizi basilari.

* **Hardware**: ZimaBlade. Basso consumo, ingombro minimo, dotato di interfaccia PCIe per espansioni (es. controller SATA addizionali).
* **Storage**: 2x HDD WD Red Plus (tecnologia CMR, specifici per NAS).
* **Configurazione Dischi**: RAID 1 (Mirror). Garantisce ridondanza dei dati tollerando la rottura di un disco.
* **Sistema Operativo**: TrueNAS. Offre gestione avanzata dei volumi tramite file system ZFS e interfaccia web per l'amministrazione.
* **Carico di Lavoro**: Adatto per archiviazione file (SMB/NFS), target di backup, media server per flussi diretti e servizi leggeri in container (es. Pi-hole, istanza base di Nextcloud).

# 2.1 Debian

# 1. Installazione e Configurazione Iniziale

## Debian in maniera GRAFICA

### 1. Preparazione
* Scaricare l'immagine ISO [**Netinst**](https://www.debian.org/CD/netinst/index.it.html) (Network Installer) dal sito ufficiale di Debian.
* Creare una chiavetta USB avviabile utilizzando software come [**Rufus**](https://rufus.ie/en/#download) (Windows) o [**BalenaEtcher**](https://etcher.balena.io/) (multipiattaforma).

### 2. Installazione
* Avviare il dispositivo dalla chiavetta USB e selezionare **Graphical Install**.
[![Schermata_20260317_162454.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/gf7zXYYZ0XsIXnnZ-schermata-20260317-162454.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/gf7zXYYZ0XsIXnnZ-schermata-20260317-162454.png)
* Seguire le istruzioni a schermo per lingua, fuso orario e tastiera. (Nota per spostarsi tra i menù andare avanti o indietro premere TAB o premendo invio se volete spuntare una casella andateci sopra con il tab o con le freccie e poi premete lo spazio)
[![Schermata_20260317_162610.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/yEX7cHW6NHHum3k9-schermata-20260317-162610.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/yEX7cHW6NHHum3k9-schermata-20260317-162610.png)
[![Schermata_20260317_162634.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/ucZYZH0IrGxmXF4I-schermata-20260317-162634.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/ucZYZH0IrGxmXF4I-schermata-20260317-162634.png)
[![Schermata_20260317_162653.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/AOL5QNzouxwmkQe1-schermata-20260317-162653.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/AOL5QNzouxwmkQe1-schermata-20260317-162653.png)
* Inserire il nome host (es. `homeserver`).
[![Schermata_20260317_162940.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/nEOduFeAn6cEsR9D-schermata-20260317-162940.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/nEOduFeAn6cEsR9D-schermata-20260317-162940.png)
* Lasciare vuoto se chiede del dominio.
[![Schermata_20260317_162959.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/viNAzG58Ff4fPlZs-schermata-20260317-162959.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/viNAzG58Ff4fPlZs-schermata-20260317-162959.png)
* Impostare una password complessa per l'utente `root` e creare un nuovo account utente standard esempio `server`.
[![Schermata_20260317_163036.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/ARTAE8bF8RX4TqUF-schermata-20260317-163036.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/ARTAE8bF8RX4TqUF-schermata-20260317-163036.png)
[![Schermata_20260317_163100.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/pY0HVSafnpwKzO9B-schermata-20260317-163100.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/pY0HVSafnpwKzO9B-schermata-20260317-163100.png)
Mettere anche una password al nuovo utente salvarsi entrambe le password e che siano diverse.
* **Partizionamento dischi**: Per i principianti, selezionare **Guidato - usa l'intero disco** o **Guidato - usa l'intero disco e imposta LVM cifrato** (opzionale per una maggiore sicurezza).
[![Schermata_20260317_163149.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/TCAXIyRhMpYKiJF0-schermata-20260317-163149.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/TCAXIyRhMpYKiJF0-schermata-20260317-163149.png)
[![Schermata_20260317_163206.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/7IwOh3ySq9O8bEyk-schermata-20260317-163206.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/7IwOh3ySq9O8bEyk-schermata-20260317-163206.png)
[![Schermata_20260317_163234.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/2LubVBwjtL364fIs-schermata-20260317-163234.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/2LubVBwjtL364fIs-schermata-20260317-163234.png)
[![Schermata_20260317_163321.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/bhT1Vzd27ItBt63A-schermata-20260317-163321.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/bhT1Vzd27ItBt63A-schermata-20260317-163321.png)
* per i pachetti premere sempre invio e attendere scegliere se mandare statistiche a debian e attendere la fine.
### 3. Selezione del Software
Questo è il passaggio fondamentale per ottimizzare le risorse:
* **Deselezionare** "Debian desktop environment" e qualsiasi altra interfaccia grafica (GNOME, KDE, ecc.).
* **Selezionare** "SSH server". Questo è obbligatorio per gestire il server da remoto.
* **Mantenere** "Utilità di sistema standard".
[![Schermata_20260317_165321.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/DxuM6Ak2yXieV3FC-schermata-20260317-165321.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/DxuM6Ak2yXieV3FC-schermata-20260317-165321.png)

### 4. Primo Accesso
* Al termine dell'installazione, riavviare e rimuovere la chiavetta USB.
[![Schermata_20260317_165519.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/BBOMrZndzBWFQ7Si-schermata-20260317-165519.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/BBOMrZndzBWFQ7Si-schermata-20260317-165519.png)
* Individuare l'indirizzo IP del server facendo l'accesso alla macchina fisica come nell'immagine
  [![Schermata_20260317_170049.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/Lk8Fn4MKM2171XQb-schermata-20260317-170049.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/Lk8Fn4MKM2171XQb-schermata-20260317-170049.png)
  Una volta entrati con l'utente root mettere la password e lanciare il comando `ip addr` per vedere che ip ha la nostra macchina
* Dal computer principale, aprire il terminale (o software come PuTTY) e collegarsi tramite SSH:
  `ssh user@indirizzo_ip` e mettere la password. (ignorare il comando -p 22220)
  [![Schermata_20260317_172000.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/jUJPQnlmBSXmnwx1-schermata-20260317-172000.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/jUJPQnlmBSXmnwx1-schermata-20260317-172000.png)

In caso di errori sicuramente è la password inserita male allora dare il comando dal server `passwd server` e riprovare
[![Schermata_20260317_172319.png](https://bookstack.phast.foo/uploads/images/gallery/2026-03/scaled-1680-/rm1wFfwXVhcHUwDr-schermata-20260317-172319.png)](https://bookstack.phast.foo/uploads/images/gallery/2026-03/rm1wFfwXVhcHUwDr-schermata-20260317-172319.png)