Skip to main content

Passos

Els passos s'executen en ordre. Alguns es poden ometre i d'altres depenen dels anteriors.

#PasDepèn deOmetibleQuè fa
1UbuntuUbuntuParcialIP fixa, actualització, SSH, exporters de Prometheus
2SMTP Relay-ParcialRelay de correu sortint amb exim4
3Core Scripts-NoScripts de còpies de seguretat i muntatge NFS
4Pi-holeCore ScriptsNoDNS intern (i DHCP opcional)
5PiVPNPi-holeSíVPN WireGuard per a l'accés remot
6NTP Server-Síchrony com a servidor NTP local
7Webserver-Nolighttpd amb PHP CGI
8CertbotWebserver, Pi-holeNoCertificats de Let's Encrypt via DNS de Cloudflare
9PostgreSQL-NoBase de dades amb accés remot i còpies de seguretat
10NagiosWebserver, PostgreSQLNoNagios compilat des del codi font
11Sora HorizonWebserver, PostgreSQL, NagiosSíDesplega Sora Horizon

1. Ubuntu​

Només apareix si el sistema és Ubuntu.

  • IP fixa amb netplan: adreça en CIDR, gateway, DNS i hostname. Si alguna cosa canvia, s'aplica al moment.
  • Actualització completa del sistema (apt update + apt upgrade), i opcionalment vim.
  • SSH: bàner d'inici, desactivar l'accés per contrasenya i gestionar les claus públiques autoritzades.
  • Mètriques de Prometheus (ometible): exporter de temperatura (via lighttpd) i Node Exporter. Genera els ScrapeConfig necessaris per a un Prometheus Operator.

2. SMTP Relay​

Diversos serveis necessiten enviar correus (còpies de seguretat, alertes, ...). En lloc de configurar les credencials a cadascun, exim4 fa de passarel·la cap a un servidor SMTP extern.

  • Configuració: servidor, port, mode TLS (STARTTLS o TLS implícit), usuari, contrasenya, remitent i nom visible.
  • Adreces: quins usuaris del sistema (inclòs root) envien amb el remitent configurat.
  • Prova: envia un correu, llegeix el log d'exim4 i mostra si s'ha lliurat. Si falla, es pot tornar enrere i corregir.
info

Un relay no és un servidor de correu: no rep ni guarda res, només reenvia.

3. Core Scripts​

Descarrega els scripts de scripts-backup que fan servir totes les còpies de seguretat: mount.sh (munta l'NFS), rotateFiles.sh (rota les carpetes numerades), notifyCSV.sh (registra el resultat) i notificationChecker.pl (el check de Nagios que el llegeix).

Pregunta la ruta dels scripts (/opt/scripts per defecte), el servidor i la ruta NFS, el punt de muntatge, la carpeta de notificacions i la seva retenció. Opcionalment prova el muntatge.

nota

Va abans de Pi-hole perquè la seva còpia de seguretat ja necessita aquests scripts i el muntatge.

4. Pi-hole​

Converteix el servidor en el DNS intern de tota la xarxa, i opcionalment en el seu DHCP.

Si Pi-hole no està instal·lat, Conductor es tanca i indica l'ordre a executar en una terminal neta:

curl -sSL https://install.pi-hole.net | sudo bash

Com a DNS extern es recomana Quad9 (filtered, ECS, DNSSEC): només s'utilitza per resoldre Internet, els noms interns els resol Pi-hole.

En tornar a llançar Conductor, configura la contrasenya d'administració, la còpia de seguretat diària (ruta, retenció i hora) i, opcionalment, apunta el DNS del mateix servidor a Pi-hole.

5. PiVPN​

Instal·la un servidor VPN per accedir a la xarxa des de fora, fent servir Pi-hole com a DNS. Igual que Pi-hole, Conductor es tanca i indica l'ordre:

sudo su -
curl -L https://install.pivpn.io | bash

Opcions recomanades: sense IP fixa (ja està configurada), WireGuard, port 51820, DNS Pi-hole i actualitzacions desateses. Després d'instal·lar-lo, reiniciar i tornar a llançar Conductor.

6. NTP Server​

Instal·la chrony com a servidor NTP per a tota la xarxa. Pregunta els servidors del pool extern i la xarxa que el pot consultar, i comprova la sincronització en acabar.

7. Webserver​

Instal·la lighttpd amb PHP CGI, que publica les webs de l'orquestrador (Nagios, l'exporter de temperatura i Horizon). Escolta per defecte al port 81, ja que Pi-hole ocupa el 80.

8. Certbot​

Instal·la certbot amb el plugin de Cloudflare i genera un certificat mitjançant el repte DNS. Pregunta el token de Cloudflare, el domini, el correu per a Let's Encrypt i el temps de propagació.

Després configura lighttpd per a HTTPS (port 444 per defecte) i afegeix un deploy hook que reinicia lighttpd a cada renovació.

9. PostgreSQL​

Instal·la l'última versió de PostgreSQL i bloqueja els seus paquets per evitar actualitzacions inesperades. També:

  • Obre l'accés remot per a la xarxa indicada.
  • Programa una còpia de seguretat diària de totes les bases de dades (pg_dumpall) amb la seva retenció.
  • Deixa un script per crear bases de dades amb el seu propi usuari:
sudo /opt/scripts/create_db.sh <dbname> [password]

Si no s'indica la contrasenya, en genera una d'aleatòria de 40 caràcters.

10. Nagios​

El pas més complex: compila des del codi font Nagios Core, els plugins i NRPE, i ho deixa configurat.

warning

La compilació pot trigar força i fallar segons l'entorn. L'assistent avisa abans de començar.

SubpasQuè fa
Build Core, Plugins i NRPEDescarrega i compila els tres
BackupCòpia diària de la configuració i un marcador last_backup per al seu check
NRPEHosts permesos i ordres (check_disk_root, check_load, check_users, ...)
BaseContacte de notificacions, grups i la monitorització del mateix servidor
lighttpdPublica la web de Nagios amb usuari i contrasenya
Sora ObjectsPublica les plantilles sora-* i l'ordre check_http_host

Les plantilles sora-* són la base sobre la qual Horizon publica els checks de les màquines que desplega: porten el grup de servei i els intervals, així que una plantilla d'Horizon només indica el nom del check, l'ordre i la plantilla.

PlantillaGrup de servei
sora-service-
sora-hddHDD
sora-metricsMetrics
sora-webWeb
sora-healthHealthStatus
sora-health-slowHealthStatus (cada 5 minuts, per a serveis lents)
sora-dbDB, HealthStatus
sora-backupBackup (un únic intent)
sora-certificatesHealthStatus (cada hora, una notificació diària)

La llista completa d'ordres, plantilles i com afegir un host és a conductor-nagios-commands.md.

11. Sora Horizon​

Desplega Sora Horizon a l'orquestrador. Si s'omet el primer subpas, s'omet tot el pas: un panell de control mig desplegat és pitjor que cap.

SubpasQuè fa
InstallDescarrega els paquets publicats, en verifica el checksum i els extreu
DatabaseCrea la base de dades a PostgreSQL, o en reutilitza una d'existent
ConfigurationEscriu el .env de l'API, l'env.js de la web i el servei de systemd
MigrationAplica l'esquema i arrenca l'API
lighttpdPublica la web i fa de proxy de l'API
BackupCòpia diària dels fitxers que no són a PostgreSQL
NagiosRegistra el check de la còpia i els de la web i l'API
Nagios SSH AccessCrea l'usuari, la clau i els permisos amb què Horizon escriu a Nagios
Initial DataRegistra a Horizon el Pi-hole, l'NTP i el Nagios d'aquest servidor

Requereix Horizon 2.0.0 o superior, un servidor linux-x64 i el compte SMTP del pas 2 (Horizon s'autentica directament contra el proveïdor, no contra el relay).

Horizon comparteix el servidor web amb Nagios i l'exporter, cadascun sota la seva pròpia ruta:

https://<domini>:<port ssl>/horizon → la web
https://<domini>:<port ssl>/horizon-api → l'API (proxy cap a 127.0.0.1:3000)

Si el pas de Certbot es va ometre, es fa servir http://<hostname>:<port http>.

Primer inici de sessió​

En una base de dades nova es crea un administrador per defecte, que es mostra en acabar:

Canvia la contrasenya immediatament des del perfil. Aquest compte només es crea quan no existeix cap usuari, així que no reapareix mai en actualitzar.

Actualitzar​

Tornar a executar el pas amb una versió més nova:

./conductor.sh --step 11

Detecta la instal·lació existent i demana confirmació (aturar l'API cancel·la qualsevol desplegament en curs). Després guarda còpia del .env i de l'env.js, substitueix els fitxers, regenera la configuració, migra i reinicia.

perill

La clau HORIZON_VAULT_KEY del .env xifra totes les credencials guardades a la base de dades. Conductor no la regenera mai, i la còpia de seguretat del pas la inclou. Perdre-la vol dir perdre totes les credencials. Tracta aquest backup igual que el de la base de dades.