El sistema operatiu de la meva Raspberry és Ubuntu 20.04 LTS (GNU/Linux 5.4.0-1065-raspi aarch64). Aquests passos funcionen perfectament en totes les Raspberry que corrin el mateix sistema operatiu però haurien de servir també per a les que utilitzin Raspbian.
Els passos resumits son aquests:
- instal·lar les dependències necessàries
- configurar un hostname en un servei DDNS
- instal·lar el programa DUC en la Raspberry per a informar al servei DDNS de la seva IP pública
- Fer un “Port Forwarding” en el router de casa dels ports 80 i 443, per a que apuntin a la IP local de la Raspberry
- Instal·lar nginx
- Obtenir certificat SSL per el hostname obtingut del servei DDNS
- Instal·lar Akkoma
Instal·lar les dependències
Actualitzem el sistema operatiu:
sudo apt update
sudo apt full-upgrade
Instal·lem els paquets mínims necessaris:
sudo apt install git build-essential postgresql postgresql-contrib cmake libmagic-dev automake libncurses5-dev
I els paquets opcionals:
sudo apt install imagemagick ffmpeg libimage-exiftool-perl
Configurar un hostname en el servei DDNS
Abans de tot ens cal un servei #DDNS (Dynamic DNS) on crear el hostname del nostre servidor Akkoma. Ho necessitem perquè volem que la nostra instància Akkoma sigui accessible des d’internet. Configurarem un hostname en el nostre servei DDNS, per exemple a noip però n’hi ha d’altres, i aquest servei DDNS serà qui resoldrà aquest hostname a la IP pública de la Raspberry.
noip ens permet obtenir gratuïtament un sol hostname (suficient!), on només podem escriure el nom de subdomini per a un dels quatre dominis disponibles. En el meu cas vaig escollir el domini “ddns.net” amb el subdomini, escrit per mi, “akkoma”: akkoma.ddns.net
Instal·lar el Dynamic Update Client (DUC) en la Raspi.
Com que el més segur és que a casa tinguem IP dinàmica, la Raspberry haurà de informar al servei DDNS de quina IP pública té. Per a fer tal cosa haurem de seguir les instruccions necessàries per a instal·lar el programa DUC.
Descarreguem el client DUC a la nostre PI, en el directori /usr/local/src/
Com a root:
cd /usr/local/src/
descarreguem DUC:
el descomprimim:
tar xf noip-duc-linux.tar.gz
entrem en el directori creat al descomprimir:
cd noip-2.1.9-1/
i executem:
make install
Ens demanarà iniciar sessió en el nostre compte de noip, doncs li donem usuari i contrasenya. Seguint com a usuari root, crearem la configuració per defecte de DUC:
/usr/local/bin/noip2 -C
Ens demanarà altre cop l’usuari i contrasenya del compte a noip. Si ara executem
/usr/local/bin/noip2
ja hauria d’enviar la IP pública al servei DDNS de noip. Evidentment no és bona idea haver d’executar-ho manualment per tant ens anirà d’allò més bé un servei systemd que ho executi automàticament al engegar la Raspberry o desprès d’un reinici pel motiu que sigui.
Creem el servei noip2.service:
vim /etc/systemd/system/noip2.service
amb el següent contingut:
[Unit] Description=noip2 service
[Service] Type=forking ExecStart=/usr/local/bin/noip2 Restart=always
[Install] WantedBy=default.target
Desem els canvis. Com que volem que s’activi al engegar o reiniciar-se la Raspberry, activem el servei:
systemctl enable noip2.service
i l’iniciem ara mateix:
systemctl start noip2.service.
Podem saber si tot va bé consultant l’estat:
systemctl status noip2.service
Port Forwarding
Per a que Akkoma funcioni perfectament ens cal que totes les peticions d’altres servidors del #fedivers que vagin cap el nostre node es dirigeixin a la Raspberry. Aquestes peticions es fan a dos ports TCP, el 80 (http) i el 443 (https). La sol·lució a això es diu Port Forwarding. Hauriem de poder accedir al router principal de casa (el que ens dona o lloga el nostre proveïdor d’internet). Normalment la IP del router és 192.168.1.1, des d’el navegador visitem aquesta IP. Si ens demana usuari i contrasenya el més probable és que les tinguem escrites en una etiqueta enganxada en la part inferior del router. Un cop dins del router cerquem l’opció “Port Forwarding” o “Redireccionar puertos”. I afegim dues redireccions, una per el port 80 i la segona per el port 443. Tots els routers son pràcticament iguals, per a fer un “Port Forwarding” acostumen a demanar-nos:
Service name < hi posem http Port Range < 80 Local IP < la IP local de la Raspberry (ha de ser IP fixa, no serveix que la obtingui via DHCP des d’el router), per exemple 192.168.1.3 Local Port < 80 Protocol < TCP
Apliquem/desem la primera redirecció i afegim la segona:
Service name < hi posem https Port Range < 443 Local IP < la IP local de la Raspberry (ha de ser IP fixa, no serveix que la obtingui via DHCP des d’el router), per exemple 192.168.1.3 Local Port < 443 Protocol < TCP
Apliquem/desem el canvis i ja podem tancar sessió del router. Ja tenim preparats tant la Raspberry com el nostre router. En la segona part veurem com instal·lar nginx, obtenir un certificat SSL per el nostre flamant nom de domini que apuntarà a la nostra instància #Akkoma i, a la fi, instal·lar Akkoma.