Costruire un server home completo-le basi

Pubblicato da Oliver il 06.09.202106.09.2021

Self-hosting importante software e dati sul proprio server di casa ha un sacco di vantaggi, ma può essere un compito arduo per iniziare. Ho eseguito il mio server per un paio di anni e descriverò le scelte in hardware e software qui. Questa sarà una guida completa su come impostare il proprio piccolo server.

Perché si dovrebbe costruire il proprio server?

In alcuni casi non dovresti. Alcuni servizi molto costosi, specializzati o difficili da configurare (come la posta elettronica) potrebbero effettivamente essere migliori di un provider esterno. Se usi solo i tuoi servizi molto raramente o non sei affatto disposto a immergerti in alcune delle conoscenze necessarie per l’hosting, questo potrebbe anche non essere il posto giusto per te.

Non abbiate paura però, hosting software da soli non è mai stato così semplice come lo è oggi e viene fornito con un sacco di vantaggi. Forse la cosa più importante ti rende un po ‘ più indipendente. I giganti della tecnologia non hanno un tempo così facile per ottenere i tuoi dati e qualche problema nel cloud o con il tuo provider Internet non ti impedisce di accedere ai tuoi dati e servizi (localmente).

In un momento in cui i servizi controllano parti sempre più importanti della tua vita (come un sistema di casa intelligente) questo controllo e indipendenza possono essere inestimabili. Nel lungo periodo può anche essere più conveniente nel lungo periodo. Certo l’acquisto di hardware è un investimento, ma l’hosting di terabyte di dati nel cloud ti costerà molto – per sempre.

Ultimo ma non meno importante può essere un progetto molto divertente che ti aiuta a imparare molto sulla tecnologia e sei sempre libero di provare nuovi software. C’è così tanto open source & software libero là fuori!

Cosa vuoi fare con il tuo server?

Prima di costruire qualsiasi cosa è importante chiedersi: cosa ho intenzione di fare con questo server? Se stai cercando di ospitare solo un paio di piccoli servizi localmente senza molti dati, il risultato sarà molto diverso da un server di archiviazione completo.

Se hai solo bisogno di servizi locali, ti consiglio nella maggior parte dei casi di ottenere un Raspberry Pi più recente e possibilmente un SSD esterno per i dati. Sono economici, efficienti dal punto di vista energetico e facili da configurare. Ho descritto il mio piccolo server di casa intelligente e hub basato sul Raspberry Pi 4 in profondità in questo articolo. Anche l’aggiunta di uno SSD per la memorizzazione di dati di piccole dimensioni è abbastanza semplice.

Se stai cercando una soluzione più potente o hai bisogno di memorizzare molti dati, ti consiglio di utilizzare una piattaforma diversa. Alcune persone usano un NAS o un vecchio hardware server (che può funzionare molto bene), ma raccomando l’hardware normale del cliente con particolare attenzione ad alcune caratteristiche speciali.

  • assicurarsi di avere una buona connessione di rete (1 gbit/s, o forse anche 10)
  • un Uso efficiente dell’energia e componenti a seconda di dove si desidera posizionare il server silenzioso
  • Ottenere una CPU abbastanza potente, mentre non sprecare energia in idle
  • di Solito non hai bisogno di una scheda grafica
  • Avere abbastanza RAM, questo può essere molto importante per il vostro server
  • Ottenere una scheda madre e il case che può tenere abbastanza Hdd & Ssd per l’archiviazione e ha un buon raffreddamento
  • Ottenere la qualità dei supporti di memorizzazione. Ho usato molto la serie WD red (basta fare attenzione con le versioni SMR) e ho sentito anche cose positive sulla serie Ironwolf di Seagate
  • Assicurati che i tuoi componenti siano raffreddati correttamente e che tutto sia collegato abbastanza bene. Si vuole questo per essere costruire & dimenticare
  • Ottenere un adattatore di alimentazione di qualità!
  • personalmente vorrei evitare di controller RAID hardware

Se si sta cercando di costruire un home server considerare l’acquisto tramite questi link di affiliazione per sostenere il blog
Western Digital Red Plus series
Seagate IronWolf Serie
Raspberry Pi 4 8GB per un piccolo server

L’editore tedesco Heise ha alcuni articoli molto sulla costruzione di un proprio server. È inoltre possibile trovare un sacco di articoli internazionali su questo. Il mio apprendimento personale dopo aver creato diverse versioni del server è quello di pianificare sempre ciò di cui hai bisogno in questo momento e nel prossimo futuro. Non costruire per qualcosa che potrebbe essere necessario in 10 anni. A quel punto ci sarà un hardware migliore disponibile. L’unica eccezione a questo potrebbe essere l’archiviazione. È sempre una buona idea avere un paio di porte SATA a sinistra in modo da poter aggiungere più spazio di archiviazione in seguito.

Lo stack software

C’è un sacco di software là fuori fatto per i server e ogni scelta dipenderà dalle vostre preferenze e caso d’uso. Quanto segue è la mia opinione personale dopo un paio di anni di lavoro su questo problema nel mio tempo libero.

Prima di tutto iniziamo con quello che non userei su un server: Windows. Gli aggiornamenti sono difficili, un sacco di software non è supportato correttamente ed è costoso. Invece vai con una soluzione Unix/Linux. Ci sono soluzioni complete per questo come FreeNAS, OpenMediaVault o Unraid ma Unraid costa denaro e anche le altre soluzioni limitano ciò che puoi fare. Potrebbero essere una buona scelta per te, ma ho deciso di seguire il percorso fai-da-te e costruire la mia soluzione basata su una tecnologia comprovata.

Il mio server di casa è in esecuzione su un sistema operativo Ubuntu server minimo (una versione LTS) con accesso SSH per l’amministrazione. Io uso il file system ZFS per raggruppare le unità in un unico grande pool di dati fornendo funzionalità come cache, istantanee, RAID e backup semplici. In questo pool ho creato diversi file system per diversi casi di utilizzo con alcuni di essi resi disponibili tramite la rete per altri client da utilizzare. Sul server viene eseguito un demone Docker e utilizzo diversi file docker-compose per ospitare un set di servizi come openHAB, Grafana, Bitwarden/Vaultwarden e Nextcloud. Un proxy inverso (Traefik al momento) consente di raggiungere servizi selezionati da qualsiasi punto del web.

il mio server di casa stackhardware basato su ZFS e un sistema di storage poolfile con istantanee e samba sharesDocker e Traefik per il software

I backup esterni vengono eseguiti tramite unità aggiuntive collegate tramite USB e ruotate regolarmente. Un paio di script e un monitor di uptime controllano regolarmente se tutto è ancora in esecuzione correttamente e inviano allarmi in caso contrario. L’installazione è per lo più automatizzata e può essere rifatta rapidamente sul nuovo hardware (se i dati sono ancora disponibili ovviamente).

Come impostare l’installazione automatizzata del server

Prima di configurare effettivamente il server ho deciso di automatizzare questo processo. Questo lo rende più facile, più veloce, meno soggetto a errori e agisce anche come una sorta di documentazione. Avere una piattaforma di base che può essere impostata in modo affidabile in modo rapido e semplice è un grande vantaggio. In questo modo tutto il resto, i dati e i servizi effettivi, possono essere configurati indipendentemente da questo sistema. Se ogni voglio passare a qualcos’altro dovrebbe essere relativamente facile.

Per l’automazione ho scelto Ansible. Ansible è un software che permette di scrivere i cosiddetti playbook: brevi script che definiscono quali passi devono essere fatti per impostare il server. Questi playbook possono quindi essere richiamati con un semplice comando e automatizzeranno tutti i passaggi manuali necessari per il processo di installazione. Ho imparato me stesso Ansible durante la configurazione del server, quindi sono sicuro che i playbook potrebbero essere migliori, ma li condividerò, così come tutto il resto necessario per l’installazione del server, tramite GitHub nelle seguenti parti di questa serie.

Ho eseguito questi script in una VM un paio di volte prima dell’installazione effettiva per assicurarmi che tutto funzioni come previsto. Da allora ho aggiunto un paio di nuove funzionalità e rielaborato parti di quelle esistenti. L’installazione effettiva sul server era abbastanza semplice.

Per prima cosa devi installare il tuo sistema operativo Linux preferito. Ho scelto Ubuntu Server LTS e l’ho installato tramite una chiavetta USB. Il sistema è installato su un SSD per tempi di avvio più rapidi. Dopo l’installazione ho configurato solo la rete (consiglio un IP statico), abilitato SSH e spostato il server nella sua posizione fisica finale. D’ora in poi non è necessario schermo/tastiera/mouse, può essere gestito tramite la rete (a meno che qualcosa non vada storto).

Anche i passaggi successivi sono semplici: scarica gli script necessari, installa Ansible ed esegui i playbook.

sudo apt install git ansiblegit clone https://github.com/OliverHi/zfs-homeserver.gitcd zfs-homeserver/ansibleansible-playbook setup_playbook.yml -K

Verrà eseguito un playbook chiamato setup_playbook.yml che imposterà il server. Ovviamente puoi usare qualsiasi playbook Ansible qui, ma il mio è abbastanza semplice e assomiglia a questo.

--- - name: "Setting up the home server" hosts: localhost connection: local # become root user, which is needed for most tasks become: yes become_user: root vars_files: - vars/main_vars.yml tasks: - name: Install the needed packages apt: name: - samba - software-properties-common #- linux-headers - dkms - zfsutils-linux - samba-vfs-modules - zfs-auto-snapshot state: latest cache_valid_time: 3600 - import_tasks: tasks/setupZFStask.yml - import_tasks: tasks/setupUsersTask.yml - import_tasks: tasks/setupFoldersTask.yml - import_tasks: tasks/setupSambaTask.yml - import_tasks: tasks/setupDocker.yml # and more tasks if needed

Fondamentalmente sta lavorando sul server locale, in esecuzione come root e usando le variabili che ho definito in un main_vars separato.file yml. Inizierà installando un paio di pacchetti di cui ho bisogno per la mia configurazione e quindi eseguirà una serie di attività che ho scritto per le diverse parti dello stack software. Sarà impostare il file system ZFS, creare utenti e cartelle, impostare Docker e un po ‘ di più. È sempre possibile personalizzare quelli a proprio piacimento.

Nei seguenti post di questa serie spiegherò come ho impostato il file system, gli utenti, le condivisioni samba, nonché Docker e il proxy inverso Traefik. In ogni parte aggiungerò anche i file Ansible necessari per installarli automaticamente. Tutto il codice sarà disponibile sul mio account GitHub.

Il prossimo post su come configurare ZFS e un sistema di backup può essere trovato qui.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.