jointrashposs/content/it-IT/docs/install/ubuntu-manual.md

486 lines
13 KiB
Markdown
Raw Normal View History

2023-07-08 10:36:02 +02:00
# Come installare Misskey su Ubuntu
## Altri tipi di installazione
- [Installazione manuale](./manual.html)
- [Tutti i tipi di installazione](../install.html)
## Script per il terminale bash
::: tip
Questa installazione non è destinata alla installazione di ambienti di sviluppo.
:::
Smetti di fare copia incolla, è fastidioso, noioso, richiede tempo!
Vuoi svolgere una installazione automatica? C'è lo [script per il terminale bash](./bash.html) che fa quasi tutto!
Ti serve soltanto: un dominio, la configurazione di Cloudflare e la protezione del server.
## A proposito
Il tipo di [Installazione manuale](./manual) prevede l'esecuzione di Misskey tramite `systemd`
Il tipo di installazione tramite [docker-compose](./docker) è la più facile e ti permette di eseguire Misskey in un ambiente virtuale, senza modificare il sistema che la ospita.
## Introduzione
Questa pagina indica come [Installare Misskey](./manual) su sistema operativo GNU/Linux Ubuntu.
Occorre soltanto eseguire alcuni comandi _bash_, modificare alcuni file di configurazione e usare il browser.
Le indicazioni sono specifiche per il sistema operativo Ubuntu, alcune parti potrebbero cambiare in futuro, rendendo inutile la guida. Ce ne scusiamo.
## Ambiente e requisiti
- Sistema operativo **Ubuntu 22.04.1 LTS**.
- Requisiti hardware, occorre una CPU moderna, di architettura amd64 o arm64.
- Memoria RAM necessaria, circa 1.5GB.
- Dominio web già configurato e account Cloudflare attivo.
::: tip
Se prepari un ambiente di sviluppo, dominio e Cloudflare non servono
:::
::: danger
Never change the domain name (hostname) of an instance once you start using it!
:::
## Come usare l'editor Nano
L'editor di testo si apre con questo comando. `nano /percorso/al/file`. Il cursore si muove coi tasti freccia, home, end ecc... Per uscire, premi `CTRL+x`, successivamente, decidi se salvare le modifiche, premi `Y` per accettare.
## Creare un utente
Crea un utente di sistema, poiché Misskey non dovrebbe girare con privilegi di super utente _root_.
`sudo adduser --disabled-password --disabled-login misskey`
::: tip
Se prepari un ambiente di sviluppo, non importa crearlo.
:::
## Installazione software iniziale
Occorre del software per svolgere le prossime attività, per favore installalo se non è già presente.
### Node.js
Si tratta di un linguaggio di programmazione lato server, basato su JavaScript. Necessario per eseguire Misskey.
```
sudo apt install -y curl
curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
node -v
sudo corepack enable
```
Ti occorre la versione `v20.x.y`. Se appare un'altra versione, come la `v8.x.y` allora l'installazione non è andata a buon fine. Potresti usare il [progetto Node Version Manager](https://github.com/nvm-sh/nvm#about).
### PostgreSQL
Questo è il Data Base Management System. Il gestore della base dati relazionale, ad oggetti. Essenziale per il funzionamento di Misskey.
#### Installazione DBMS
Occorre avere l'ultima versione, `v.15`
```
sudo apt install -y postgresql-common
sudo sh /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -i -v 15;
systemctl status postgresql
```
Se tutto è andato bene, leggerai: **OK**
#### Configurazione DBMS
Esegui il client che si connette al DBMS. `sudo -u postgres psql`
Ora devi creare una utenza per Misskey. Se scegli username **misskey** e password **gattino**, dovrai digitare la query:
`CREATE ROLE misskey LOGIN CREATEDB PASSWORD 'gattino';`
Poi occorre il database: `CREATE DATABASE mkdb OWNER misskey;`
Per uscire da `psql` scrivi `\q`
### Redis
Si tratta di un database non relazionale (noSQL), gestito nella memoria. Necessario per gestire la connessione tra le federazioni e il database.
Installa Redis seguendo la [documentazione ufficiale](https://redis.io/docs/getting-started/installation/install-redis-on-linux/).
```
sudo apt install -y curl ca-certificates gnupg2 lsb-release
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt update
sudo apt install -y redis
systemctl status redis-server
```
Se tutto è andato bene, leggerai : **Ok**
### Nginx
Si tratta di un Application Web Server. Anche se non è essenziale, svolge comunque un compito importante, come il caching e la crittografia SSL (https).
::: tip
Se configuri un ambiente di sviluppo, non serve.
:::
Installa Nginx seguendo la [documentazione ufficiale](http://nginx.org/en/linux_packages.html#Ubuntu].
```
sudo apt install ubuntu-keyring
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
```
Controlla se ottieni `573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62` come risposta.
```
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx
sudo apt update
sudo apt install -y nginx
systemctl status nginx
```
Se tutto è andato bene, leggerai : **Ok**
Attiva il servizio e abilita la partenza automatica al riavvio.
```
sudo systemctl start nginx
sudo systemctl enable nginx
curl http://localhost
```
Se leggi **Welcome to ngnix!** allora tutto è andato bene.
### Altri software
Occorrono due pacchetti aggiuntivi. Servono per la creazione di Misskey.
```
sudo apt update
sudo apt install -y git build-essential
```
## Altre configurazioni
Preparati ad esporre il servizio su internet
::: tip
se stai preparando un ambiente di sviluppo, queste configurazioni non sono necessarie.
:::
### Firewall
Useremo 'ufw' come firewall per bloccare le connessioni non autorizzate.
Si configura una whitelist e si aprono le porte dei servizi SSH 22, HTTP 80, HTTPS 443.
```
sudo ufw enable
sudo ufw default deny
sudo ufw limit 22
sudo ufw allow 80
sudo ufw allow 443
```
Controlla la configurazione con: `sudo ufw status`
Attiva la partenza automatica al riavvio: `sudo systemctl enable ufw`
::: tip
ufw semplifica l'uso di Netfilter (IPTABLES)
:::
### CloudFlare
Si tratta di un servizio utile per gestire DNS, Reverse Proxy e CDN sul tuo dominio. Si può anche evitare ma è consigliato, oltre che comodo. [Configurazione CDN](../admin/cdn)
[Iscrizione a CloudFlare](https://dash.cloudflare.com/sign-up) segui le indicazioni per configurare il dominio prescelto.
Digita l'indirizzo IP del server nella schermata DNS. A seconda del servizio, potrebbero essere necessarie fino a 48 ore prima della ricezione delle configurazioni.
### Configurazione Certbot (Lets Encrypt)
Per attivare la protezione SSL su **https**, ti occorre un certificato.
Installa il plugin che integra Certbot e Cloudflare: `sudo apt install -y certbot python3-certbot-dns-cloudflare`
Ottieni una APIKey dal sito Cloudflare
1. [Apri la pagina](https://dash.cloudflare.com/profile/api-tokens)
2. Seleziona: visualizza API Key Globale
3. Inserisci la password e indica che sei una persona umana
Crea un file di configurazione con le informazioni di Cloudflare.
```
mkdir /etc/cloudflare
nano /etc/cloudflare/cloudflare.ini
```
Scrivi questi parametri dentro al file di configurazione:
```
dns_cloudflare_email = tuo.accountn@registrato.su.cloudflare
dns_cloudflare_api_key = xxxxxxxxxxxxxxxxxxxxxxxxxx
```
Salva il file e imposta i privilegi di lettura: `sudo chmod 600 /etc/cloudflare/cloudflare.ini`
Esegui il seguente comando, modificando `example.tld` con il tuo dominio: `sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/cloudflare/cloudflare.ini --dns-cloudflare-propagation-seconds 60 --server https://acme-v02.api.letsencrypt.org/directory -d example.tld -d *.example.tld`
Se leggi **Congratulations!** è andato tutto bene. Annota il percorso dei file `.pem`, ti serviranno dopo.
## Installazione Misskey
Ora che i preparativi sono finiti, puoi installare Misskey.
Diventa l'utente `misskey` preparato in precedenza: `sudo su - misskey`
Ottieni il codice sorgente tramite git:
```
git clone -b master https://github.com/misskey-dev/misskey.git`
cd misskey
git checkout master
```
Installa le librerie necessarie:
```
NODE_ENV=production pnpm install --frozen-lockfile
```
## Configurazione di Misskey
### Il file default.yml
Crea il file e scrivici i contenuti indicati di seguito: `nano .config/default.yml`.
I parametri col pallino ● vanno modificati. I parametri col cerchietto sono i valori che hai configurato fino ad ora.
Puoi vedere un [esempio di configurazione](https://github.com/misskey-dev/misskey/blob/develop/.config/example.yml)
::: tip
Se stai configurando un ambiente di sviluppo, indica `url: http://localhost:3000`
:::
```
# ● URL pubblico di Misskey
url: https://example.tld/
# Imposta la porta numero 3000
port: 3000
# ● Configurazione PostgreSQL。
db:
host: localhost
port: 5432
db : mkdb # Nome del database PostgreSQL
user: misskey # Nome utente PostgreSQL
pass: gattini # ● Password di PostgreSQL
# Configurazione Redis
redis:
host: localhost
port: 6379
# Configurazione del tipo di ID
id: 'aid'
#   syslog
syslog:
host: localhost
port: 514
```
Ricordati di salvare le modifiche.
### Configurazione di Nginx
Configurare usando i privilegi di super utente _root_. Smetti di essere l'utente misskey: `exit`
Crea la configurazione: `sudo nano /etc/nginx/conf.d/misskey.conf`
Copia la [configurazione di Nginx](../admin/nginx) e incollala dentro a Nano.
Svolgi le seguenti modifiche indicando le tue configurazioni:
- Righe 18 e 30 URL del dominio
- Righe 34-35 Sostituisci il percorso al file Certificato di Certbot (.pem)
- Se usi la CDN o un altro Reverse Proxy, elimina 4 righe a partire dalla 56
Ricordati di salvare le modifiche.
Controlla il funzionamento: `sudo nginx -t`
Se ottieni **OK** riavvia il servizio: `sudo systemctl restart nginx` poi verifica il funzionamento: `sudo systemctl status nginx`
Se ottieni **OK** va tutto bene.
## Costruire Misskey
Adesso torna ad essere utente misskey: `sudo su - misskey`
Avvia la build:
```
cd misskey
NODE_ENV=production npm run build
```
::: tip
Se stai preparando un ambiente di sviluppo, `NODE_ENV=production` non serve.
:::
### Se non riesci a costruire la build sul server
Potresti avere a disposizione meno di 2GB di memoria RAM. Servono per costruire Misskey e svolgere gli aggiornamenti.
Possibili soluzioni:
- Aggiungi memoria swap al server
- Trasferisci i file del repository git sul tuo pc e avvia la build da lì.
## Inizializza il Database
`npm run init`
## Avvia Misskey
`NODE_ENV=production pnpm run start`
Quando leggi: **Now listening on port 3000 on**, accedi alla URL indicata.
Dovresti vedere la pagina iniziale di Misskey. Inizia a verificare se funziona.
### Se non riesci ad accedere
#### Controlla il DNS di CloudFlare
Visita il sito Cloudflare e verifica che la configurazione DNS punti verso l'indirizzo IP che hai indicato.
#### Controlla il router
Se hai installato Misskey in un server che stà dietro una sottorete, verifica che le porte 80 e 443 siano raggiungibili dall'esterno.
## Creazione servizio Misskey
::: tip
Se stai preparando un ambiente di sviluppo, non è necessario
:::
Termina Misskey premendo `CTRL+c`. poi torna ad essere utente super amministratore: `exit`
Crea la configurazione del servizio: `sudo nano /etc/systemd/system/misskey.service`
Incolla il seguente testo e salva:
```
[Unit]
Description=Misskey daemon
[Service]
Type=simple
User=misskey
ExecStart=/usr/bin/npm start
WorkingDirectory=/home/misskey/misskey
Environment="NODE_ENV=production"
TimeoutSec=60
StandardOutput=journal
StandardError=journal
SyslogIdentifier=misskey
Restart=always
[Install]
WantedBy=multi-user.target
```
Abilita la configurazione e riavvia il servizio:
```
sudo systemctl daemon-reload
sudo systemctl enable misskey
sudo systemctl start misskey
```
Aspetta circa 15 secondi e verifica il funzionamento: `sudo systemctl status misskey`, se ottieni **Ok** va tutto bene.
Per finire registra il primo utente, amministratore e accedi per completare la configurazione.
## Aggiornare Misskey
C'è uno [script automatico per aggiornare](https://github.com/joinmisskey/bash-install/blob/main/update.ubuntu.sh)
[Aggiornamento manuale](./manual#)
Misskey deve essere spento per svolgere queste azioni:
```
sudo systemctl stop misskey
su - misskey
git pull;
NODE_ENV=production pnpm install --frozen-lockfile
pnpm run clean;
NODE_ENV=production pnpm run build;
pnpm run migrate;
exit
```
### Opzione 1: aggiorna anche il sistema
```
sudo apt update -y
sudo apt full-upgrade -y
sudo reboot
```
In questo caso Misskey tornerà disponibile dopo il riavvio.
### Opzione 2: avvia subito Misskey
`sudo systemctl start misskey`