Passos
Els passos s'executen en ordre. Alguns es poden ometre i d'altres depenen dels anteriors.
| # | Pas | Depèn de | Ometible | Què fa |
|---|---|---|---|---|
| 1 | Ubuntu | Ubuntu | Parcial | IP fixa, actualització, SSH, exporters de Prometheus |
| 2 | SMTP Relay | - | Parcial | Relay de correu sortint amb exim4 |
| 3 | Core Scripts | - | No | Scripts de còpies de seguretat i muntatge NFS |
| 4 | Pi-hole | Core Scripts | No | DNS intern (i DHCP opcional) |
| 5 | PiVPN | Pi-hole | Sí | VPN WireGuard per a l'accés remot |
| 6 | NTP Server | - | Sí | chrony com a servidor NTP local |
| 7 | Webserver | - | No | lighttpd amb PHP CGI |
| 8 | Certbot | Webserver, Pi-hole | No | Certificats de Let's Encrypt via DNS de Cloudflare |
| 9 | PostgreSQL | - | No | Base de dades amb accés remot i còpies de seguretat |
| 10 | Nagios | Webserver, PostgreSQL | No | Nagios compilat des del codi font |
| 11 | Sora Horizon | Webserver, PostgreSQL, Nagios | Sí | 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 opcionalmentvim. - 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
ScrapeConfignecessaris 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.
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.
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.
La compilació pot trigar força i fallar segons l'entorn. L'assistent avisa abans de començar.
| Subpas | Què fa |
|---|---|
| Build Core, Plugins i NRPE | Descarrega i compila els tres |
| Backup | Còpia diària de la configuració i un marcador last_backup per al seu check |
| NRPE | Hosts permesos i ordres (check_disk_root, check_load, check_users, ...) |
| Base | Contacte de notificacions, grups i la monitorització del mateix servidor |
| lighttpd | Publica la web de Nagios amb usuari i contrasenya |
| Sora Objects | Publica 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.
| Plantilla | Grup de servei |
|---|---|
sora-service | - |
sora-hdd | HDD |
sora-metrics | Metrics |
sora-web | Web |
sora-health | HealthStatus |
sora-health-slow | HealthStatus (cada 5 minuts, per a serveis lents) |
sora-db | DB, HealthStatus |
sora-backup | Backup (un únic intent) |
sora-certificates | HealthStatus (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.
| Subpas | Què fa |
|---|---|
| Install | Descarrega els paquets publicats, en verifica el checksum i els extreu |
| Database | Crea la base de dades a PostgreSQL, o en reutilitza una d'existent |
| Configuration | Escriu el .env de l'API, l'env.js de la web i el servei de systemd |
| Migration | Aplica l'esquema i arrenca l'API |
| lighttpd | Publica la web i fa de proxy de l'API |
| Backup | Còpia diària dels fitxers que no són a PostgreSQL |
| Nagios | Registra el check de la còpia i els de la web i l'API |
| Nagios SSH Access | Crea l'usuari, la clau i els permisos amb què Horizon escriu a Nagios |
| Initial Data | Registra 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:
- Email:
[email protected] - Contrasenya:
changeme
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.
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.