Installazione · 10 min read · Dec 19, 2025

Come installare Wiki.js su Ubuntu 22.04 LTS

Wiki.js è un software wiki open-source e leggero. È costruito sul framework JavaScript Node.js. Può essere utilizzato per scrivere documentazione, wiki e contenuti web utilizzando un editor Markdown per sviluppatori e un editor WYSIWYG per persone non tecniche. Supporta più tipi di contenuti, inclusi diagrammi UML, espressioni matematiche utilizzando la sintassi Tex o MathML e codice. Include più moduli per varie funzioni, tra cui analisi, autenticazione, registrazione, motori di ricerca di terze parti e più servizi di archiviazione per sincronizzare i tuoi contenuti.

In questo tutorial, imparerai a installare Wiki.js su un server Ubuntu 22.04 utilizzando il database PostgreSQL e il server Nginx per il proxy.

Prerequisiti

  • Un server che esegue Ubuntu 22.04.
  • Un utente non root con privilegi sudo.
  • Un nome di dominio completamente qualificato (FQDN) che punta al tuo server. Per i nostri scopi, utilizzeremo wiki.example.com come nome di dominio.
  • Assicurati che tutto sia aggiornato. $ sudo apt update && sudo apt upgrade
  • Installa pacchetti di utilità di base. Alcuni di essi potrebbero già essere installati. $ sudo apt install wget curl ca-certificates gnupg gnupg2 nano unzip lsb-release ubuntu-keyring -y

Passo 1 - Configurare il Firewall

Prima di installare qualsiasi pacchetto, il primo passo è configurare il firewall per consentire connessioni HTTP e HTTPS.

Controlla lo stato del firewall.

$ sudo ufw status

Dovresti vedere qualcosa di simile al seguente.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Consenti le porte HTTP e HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Controlla di nuovo lo stato per confermare.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Passo 2 - Installare PostgreSQL e Utilità

Ubuntu 22.04 viene fornito con una versione più vecchia di PostgreSQL. Installeremo Postgres 14 per il nostro tutorial.

Installa il repository per PostgreSQL.

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Importa la chiave GPG di PostgreSQL.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null

Aggiorna l’elenco dei repository di sistema.

$ sudo apt update

Installa il server PostgreSQL 14.

$ sudo apt install -y postgresql-14

Controlla lo stato del servizio.

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Tue 2022-10-25 06:24:24 UTC; 10min ago
   Main PID: 4032 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Oct 25 06:24:24 wiki systemd[1]: Starting PostgreSQL RDBMS...
Oct 25 06:24:24 wiki systemd[1]: Finished PostgreSQL RDBMS.

Passo 3 - Configurare PostgreSQL

Accedi alla shell di PostgreSQL.

$ sudo -i -u postgres psql

Crea un nuovo database per Wiki.js.

postgres=# CREATE DATABASE wikidb;

Crea un nuovo utente del database con una password forte.

postgres=# CREATE USER wikiuser WITH ENCRYPTED PASSWORD 'wikipassword';

Concedi i diritti all’utente per utilizzare il database.

postgres=# GRANT ALL PRIVILEGES ON DATABASE wikidb TO wikiuser;

Esci dalla shell di Postgres.

postgres=# \q

Passo 4 - Installare Node.js

Wiki.js supporta Node v16 al momento della scrittura di questo tutorial.

Installa il repository Node utilizzando il seguente comando.

$ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -

Installa Node.

$ sudo apt install nodejs -y

Verifica l’installazione di Node.

$ node --version
v16.18.0

Passo 5 - Scarica Wiki.js

Crea una cartella per installare Wiki.js.

$ sudo mkdir -p /var/www/wikijs

Imposta l’utente attualmente connesso come proprietario della cartella.

$ sudo chown $USER:$USER /var/www/wikijs

Passa alla directory e scarica l’archivio del codice di Wiki.js.

$ cd /var/www/wikijs && wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz

Estrai l’archivio scaricato.

$ tar xzf wiki-js.tar.gz

Elimina l’archivio.

$ rm wiki-js.tar.gz

Passo 6 - Configurare e Eseguire Wiki.js

Crea il file di configurazione dal campione.

$ cp config.sample.yml config.yml

Apri il file di configurazione per la modifica.

$ nano config.yml

Trova le seguenti impostazioni del database e aggiorna i loro valori con quelli configurati nel passo 3.

# PostgreSQL / MySQL / MariaDB / MS SQL Server only:
host: localhost
port: 5432
user: wikiuser
pass: wikipassword
db: wikidb
ssl: false

Trova la riga bindIP: 0.0.0.0 e aggiornala come segue.

bindIP: 127.0.0.1

Questo farà sì che Wiki.js ascolti sull’indirizzo di loopback perché utilizzeremo il proxy Nginx per accedervi dall’esterno.

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Esegui Wiki.js utilizzando il seguente comando.

$ node server

Riceverai un output simile che conferma un’installazione riuscita.

Loading configuration from /var/www/wikijs/config.yml... OK
2022-10-25T06:40:46.294Z [MASTER] info: =======================================
2022-10-25T06:40:46.296Z [MASTER] info: = Wiki.js 2.5.289 =====================
2022-10-25T06:40:46.296Z [MASTER] info: =======================================
2022-10-25T06:40:46.296Z [MASTER] info: Initializing...
2022-10-25T06:40:46.962Z [MASTER] info: Using database driver pg for postgres [ OK ]
2022-10-25T06:40:46.974Z [MASTER] info: Connecting to database...
2022-10-25T06:40:47.067Z [MASTER] info: Database Connection Successful [ OK ]
2022-10-25T06:40:47.345Z [MASTER] warn: DB Configuration is empty or incomplete. Switching to Setup mode...
2022-10-25T06:40:47.345Z [MASTER] info: Starting setup wizard...
2022-10-25T06:40:47.510Z [MASTER] info: Starting HTTP server on port 3000...
2022-10-25T06:40:47.511Z [MASTER] info: HTTP Server on port: [ 3000 ]
2022-10-25T06:40:47.515Z [MASTER] info: HTTP Server: [ RUNNING ]
2022-10-25T06:40:47.515Z [MASTER] info: .......................................................................
2022-10-25T06:40:47.515Z [MASTER] info: 
2022-10-25T06:40:47.516Z [MASTER] info: Browse to http://YOUR-SERVER-IP:3000/ to complete setup!
2022-10-25T06:40:47.516Z [MASTER] info: 
2022-10-25T06:40:47.516Z [MASTER] info: ........................................................................

Premi Ctrl + C per fermare il processo.

Passo 7 - Configurare un Servizio Systemd

Il processo sopra per mantenere Wiki.js in esecuzione è temporaneo. Per rendere il processo permanente, dovremo creare un servizio systemd per Wiki.js per eseguirlo come servizio in background. Questo permetterà a Wiki.js di funzionare attraverso i riavvii del sistema.

Crea un file di servizio systemd per Wiki.js e aprilo per la modifica.

$ sudo nano /etc/systemd/system/wikijs.service

Incolla il seguente codice al suo interno. Sostituisci il valore della variabile User con il nome del tuo utente di sistema.

[Unit]
Description=Wiki.js
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always

User=navjot
Environment=NODE_ENV=production
WorkingDirectory=/var/www/wikijs

[Install]
WantedBy=multi-user.target

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Ricarica il demone di sistema.

$ sudo systemctl daemon-reload

Abilita il servizio Wiki.js.

$ sudo systemctl enable wikijs

Passo 8 - Installare Nginx

Ubuntu 22.04 viene fornito con una versione più vecchia di Nginx. Devi scaricare il repository ufficiale di Nginx per installare l’ultima versione.

Importa la chiave ufficiale di Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Imposta il repository ufficiale per Nginx.

$ 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

Fissa il repository per dare priorità al repository ufficiale rispetto a quello di Ubuntu.

$ echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
     | sudo tee /etc/apt/preferences.d/99nginx

Aggiorna l’elenco dei repository di sistema.

$ sudo apt update

Installa il server Nginx.

$ sudo apt install nginx -y

Verifica l’installazione.

$ nginx -v
nginx version: nginx/1.22.1

Avvia il server Nginx.

$ sudo systemctl start nginx

Controlla lo stato del servizio.

$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-10-25 06:50:05 UTC; 2s ago
       Docs: https://nginx.org/en/docs/
    Process: 5522 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 5523 (nginx)
      Tasks: 2 (limit: 1030)
     Memory: 1.8M
        CPU: 4ms
     CGroup: /system.slice/nginx.service
             ??5523 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??5524 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 

Oct 25 06:50:05 wiki systemd[1]: Starting nginx - high performance web server...

Passo 9 - Installare SSL

Dobbiamo installare Certbot per generare il certificato SSL. Puoi installare Certbot utilizzando il repository di Ubuntu o scaricare l’ultima versione utilizzando lo strumento Snapd. Utilizzeremo la versione Snapd.

Ubuntu 22.04 viene fornito con Snapd installato per impostazione predefinita. Esegui i seguenti comandi per assicurarti che la tua versione di Snapd sia aggiornata.

$ sudo snap install core
$ sudo snap refresh core

Installa Certbot.

$ sudo snap install --classic certbot

Usa il seguente comando per assicurarti che il comando Certbot possa essere eseguito creando un collegamento simbolico alla directory /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Esegui il seguente comando per emettere il certificato.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d wiki.example.com

Il comando sopra scaricherà un certificato nella directory /etc/letsencrypt/live/wiki.example.com sul tuo server.

Genera un certificato Diffie-Hellman group.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Controlla il servizio di pianificazione del rinnovo di Certbot.

$ sudo systemctl list-timers

Troverai snap.certbot.renew.service come uno dei servizi programmati per l’esecuzione.

NEXT                        LEFT          LAST                        PASSED    UNIT                           ACTIVATES              

.................................................................................................................................
Tue 2022-10-25 00:00:00 UTC 17h left      Tue 2022-10-25 04:49:20 UTC 2h ago    logrotate.timer                logrotate.service
Tue 2022-10-25 02:39:09 UTC 20h left      Tue 2022-10-25 06:47:33 UTC 12min ago apt-daily.timer                apt-daily.service
Tue 2022-10-25 06:02:00 UTC 8h left       n/a                         n/a       snap.certbot.renew.timer       snap.certbot.renew.service

Fai una prova del processo per controllare se il rinnovo SSL funziona correttamente.

$ sudo certbot renew --dry-run

Se non vedi errori, sei a posto. Il tuo certificato si rinnoverà automaticamente.

Passo 10 - Configurare Nginx

Crea e apri il file /etc/nginx/conf.d/wikijs.conf per la modifica.

$ sudo nano /etc/nginx/conf.d/wikijs.conf

Incolla il seguente codice al suo interno.

# enforce HTTPS
server {
  listen 80;
  listen [::]:80;
  server_name wiki.example.com;
  return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name wiki.example.com;

    root /var/www/wikijs;

    access_log  /var/log/nginx/wiki.access.log;
    error_log   /var/log/nginx/wiki.error.log;

    http2_push_preload on; # Enable HTTP/2 Server Push

    ssl_certificate /etc/letsencrypt/live/wiki.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/wiki.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/wiki.example.com/chain.pem;
    ssl_session_timeout 1d;

    # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
    ssl_protocols TLSv1.2 TLSv1.3;

    # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
    # prevent replay attacks.
    #
    # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
    ssl_early_data on;

    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:50m;

    # OCSP Stapling ---
    # fetch OCSP records from URL in ssl_certificate and cache them
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    add_header X-Early-Data $tls1_3_early_data;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:3000;
    }
}

# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

Sostituisci la posizione root nel file sopra con la directory sul tuo server.

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Apri il file /etc/nginx/nginx.conf per la modifica.

$ sudo nano /etc/nginx/nginx.conf

Aggiungi la seguente riga prima della riga include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Verifica la tua configurazione Nginx.

$ sudo nginx -t

Se non vedi errori, significa che sei a posto.

Avvia il servizio Wiki.js.

$ sudo systemctl start wikijs

Ricarica il server Nginx.

$ sudo systemctl reload nginx

Passo 11 - Completa l’Installazione

Visita l’URL https://wiki.example.com per completare l’installazione.

Pagina di Configurazione di Wiki.js

Compila i dettagli del tuo account amministratore e l’URL. Disabilita la Telemetria deselezionando l’opzione Consenti Telemetria. Puoi disabilitarla anche dal pannello di Amministrazione. Clicca sul pulsante Installa per procedere.

Verrai portato alla pagina di accesso.

Pagina di Accesso di Wiki.js

Inserisci i dettagli del tuo account e clicca sul pulsante Accedi per procedere alla pagina di amministrazione.

Pagina di Amministrazione di Wiki.js

Ora puoi iniziare a utilizzare Wiki.js.

Conclusione

Questo conclude il nostro tutorial, dove hai imparato come installare Wiki.js su un server Ubuntu 22.04. Se hai domande, postale nei commenti qui sotto.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.