13 KiB
Come installare Misskey su Ubuntu
Altri tipi di installazione
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 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 prevede l'esecuzione di Misskey tramite systemd
Il tipo di installazione tramite docker-compose è 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 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.
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.
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
Iscrizione a CloudFlare 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
- Apri la pagina
- Seleziona: visualizza API Key Globale
- 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
::: 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 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
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