mirror of
https://iceshrimp.dev/Crimekillz/jointrashposs.git
synced 2024-11-24 01:39:07 +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`
|