mirror of
https://iceshrimp.dev/Crimekillz/jointrashposs.git
synced 2024-11-24 09:49:06 +01:00
486 lines
13 KiB
Markdown
486 lines
13 KiB
Markdown
# 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 (Let’s 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`
|