Wekan è una scheda kanban costruita con il framework JavaScript Meteor. È considerata un'alternativa open source e self-hosted a Trello, fornendo quasi le stesse funzionalità. Ti consente di creare elenchi di gestione "da fare" basati su carte. Wekan è molto utile per aumentare la produttività quando si lavora in un ambiente collaborativo. Wekan ha un'interfaccia web completamente reattiva ed è tradotta attivamente in molte lingue.
Prerequisiti
- Un'istanza del server Vultr Ubuntu 16.04.
- Un utente sudo .
Per questo tutorial, useremo wekan.example.com
come nome di dominio puntato verso l'istanza Vultr. Assicurati di sostituire tutte le occorrenze del nome di dominio di esempio con quello effettivo.
Aggiorna il tuo sistema di base usando la guida Come aggiornare Ubuntu 16.04 . Dopo aver aggiornato il sistema, procedere con l'installazione delle dipendenze.
Installa Node.js
Wekan supporta solo Node.js LTS version 4.8
. Per installare Node.js, useremo il gestore versione nodo. Installa nvm
eseguendo lo script di installazione.
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | bash
Per iniziare immediatamente a utilizzare nvm
, esegui questo.
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
Se nvm
è stato installato correttamente, dovresti essere in grado di controllarne la versione.
user@vultr:~$ nvm --version
0.33.4
Installa Node.js.
nvm install v4.8
Imposta la versione predefinita di Node.js.
nvm use node
Se Node.js è stato installato correttamente, dovresti essere in grado di controllarne la versione.
node -v
Vedrai questo risultato.
user@vultr:~$ node -v
v4.8.4
NVM installa Node.js solo per l'utente corrente. Affinché Node.js sia accessibile a livello globale, esegui questo.
n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr
Node.js è ora disponibile come /usr/bin/node
.
user@vultr:~$ sudo which node
/usr/bin/node
Installa MongoDB
MongoDB è un server di database NoSQL gratuito e open source. A differenza dei database tradizionali che utilizzano le tabelle per organizzare i propri dati, MongoDB è orientato ai documenti e utilizza documenti simili a JSON senza schemi. Wekan utilizza MongoDB per archiviare i suoi dati.
Wekan è compatibile solo con MongoDB version 3.2
. Crea un nuovo file repository.
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
Importa la chiave GPG pubblica MongoDB e aggiorna l'elenco dei pacchetti.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
sudo apt update
Installa MongoDB.
sudo apt install -y mongodb-org
Avviare MongoDB e abilitare l'avvio automatico.
sudo systemctl start mongod
sudo systemctl enable mongod
Protezione dell'istanza MongoDB
Per impostazione predefinita, non è abilitata l'autenticazione in un server MongoDB. Qualsiasi utente che abbia accesso al terminale del server disporrà di privilegi completi sull'installazione di MongoDB. Per proteggere il server di database e limitare l'accesso di un utente non privilegiato, dovremo impostare l'autenticazione sul server.
MongoDB fornisce una mongo
shell che viene utilizzata per eseguire query su MongoDB. Passa alla mongo
shell.
mongo
Crea un nuovo utente MongoDB con i privilegi di root. Puoi usare qualsiasi nome utente a tua scelta. Assicurati di sostituire la password .
db.createUser(
{
user: "admin",
pwd: "StrongAdminPassword",
roles: [ { role: "root", db: "admin" } ]
}
)
Dovresti vedere il seguente output.
user@vultr:~$ mongo
MongoDB shell version: 3.2.17
connecting to: test
Welcome to the MongoDB shell.
...
2017-09-30T18:11:40.274+0000 I CONTROL [initandlisten]
> db.createUser(
... {
... user: "admin",
... pwd: "StrongAdminPassword",
... roles: [ { role: "root", db: "admin" } ]
... }
... )
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
Chiudere l'interfaccia di comando MongoDB sul terminale Linux premendo " Ctrl+C
".
Modifica il file di configurazione di MongoDB.
sudo nano /etc/mongod.conf
Aggiungi la seguente riga alla fine del file.
security:
authorization: enabled
Riavvia MongoDB in modo che la modifica della configurazione abbia effetto.
sudo systemctl restart mongod
Ora che la sicurezza è stata abilitata, è possibile verificare se funziona passando nuovamente alla shell mongo utilizzando il mongo
comando. Questa volta, se si esegue una query, ad esempio show dbs
per visualizzare l'elenco dei database, verrà visualizzato un messaggio che riporta l'autorizzazione non riuscita. Esci sudo
nuovamente dall'utente dopo aver testato l'accesso come nuovo utente appena creato.
Accedi come l' administrator
utente appena creato.
mongo -u admin -p
Fornire la password dell'utente per un accesso riuscito. Crea un nuovo utente per il wekan
database che verrà utilizzato per archiviare i dati Wekan.
use wekan
db.createUser(
{
user: "wekan",
pwd: "StrongPassword",
roles: ["readWrite"]
}
)
Assicurati di sostituire il StrongPassword
con una password complessa. Vedrai il seguente output.
user@vultr:~$ mongo -u admin -p
MongoDB shell version: 3.2.17
Enter password:
connecting to: test
...
2017-09-30T18:13:26.007+0000 I CONTROL [initandlisten]
>
> use wekan
switched to db wekan
> db.createUser(
... {
... user: "wekan",
... pwd: "StrongPassword",
... roles: ["readWrite"]
... }
... )
Successfully added user: { "user" : "wekan", "roles" : [ "readWrite" ] }
Installa Wekan
Controlla l'ultimo collegamento alla versione Wekan su Github poiché le nuove versioni sono molto frequenti. Scarica l'ultima versione di Wekan da Github sostituendo il collegamento al pacchetto di installazione.
cd ~
wget https://github.com/wekan/wekan/releases/download/v0.44/wekan-0.44.tar.gz
Estrarre l'archivio scaricato in una nuova directory denominata wekan
.
mkdir wekan
tar xzvf wekan-*.tar.gz -C wekan
Installa le dipendenze Node.js.
cd wekan/bundle/programs/server && npm install
Il server Wekan legge le configurazioni dalle variabili di ambiente. Eseguire i comandi seguenti per impostare le configurazioni come variabili di ambiente.
export MONGO_URL='mongodb://wekan:[email protected]:27017/wekan?authSource=wekan'
export ROOT_URL='http://wekan.example.com'
export MAIL_URL='smtp://user:[email protected]:25/'
export MAIL_FROM='[email protected]'
export PORT=4000
Assicurati di sostituire la password MongoDB per l' wekan
utente che hai creato. Inoltre, aggiorna l'URL della posta in base alle impostazioni del tuo server SMTP. Se non si dispone di un server e-mail pronto, è sempre possibile modificare questa configurazione in un secondo momento.
Per avviare immediatamente l'applicazione.
cd ~/wekan/bundle
node main.js
Ora puoi accedere all'applicazione andando a http://wekan.example.com:4000
. Vedrai l'interfaccia per accedere alla scheda kanban Wekan.
Per l'uso in produzione, si consiglia di impostare un proxy inverso per servire l'applicazione sulla HTTP
porta standard e un systemd
servizio per gestire il processo dell'applicazione. In questo tutorial, utilizzeremo il web server Nginx come proxy inverso, protetto con un SSL gratuito Let's Encrypt.
Impostazione del proxy inverso Nginx
Aggiungi il Certbot PPA
repository al sistema.
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
Installa Nginx e Certbot, che è l'applicazione client per Let's Encrypt CA.
sudo apt -y install certbot nginx
Nota: il nome di dominio che si sta utilizzando per ottenere i certificati dalla CA Let's Encrypt deve essere puntato verso il server. Il client verifica l'autorità di dominio prima di emettere i certificati .
Genera i certificati SSL.
sudo certbot certonly --standalone -d wekan.example.com
È probabile che i certificati generati siano archiviati nella /etc/letsencrypt/live/wekan.example.com/
directory. Il certificato SSL verrà archiviato come fullchain.pem
e la chiave privata verrà archiviata come privkey.pem
.
Let's Encrypt certificati scadranno tra 90 giorni, quindi si consiglia di impostare il rinnovo automatico dei certificati utilizzando Cronjob. Cron è un servizio di sistema che viene utilizzato per eseguire attività periodiche.
Apri il file di lavoro cron.
sudo crontab -e
Aggiungi la seguente riga alla fine del file.
30 5 * * * /usr/bin/certbot renew --quiet
Il precedente cron job verrà eseguito ogni giorno alle 5:30. Se i certificati sono in scadenza, li rinnoverà automaticamente.
Crea un nuovo host virtuale.
sudo nano /etc/nginx/sites-available/wekan.example.com.conf
Popolare il file con il seguente.
upstream wekan {
server 127.0.0.1:4000;
}
server {
listen 80;
listen [::]:80;
server_name wekan.example.com;
location / {
if ($ssl_protocol = "") {
rewrite ^ https://$server_name$request_uri? permanent;
}
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name wekan.example.com;
add_header Strict-Transport-Security "max-age=15768000";
ssl_certificate /etc/letsencrypt/live/wekan.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wekan.example.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
error_page 497 https://$host:$server_port$request_uri;
location / {
proxy_pass http://wekan;
proxy_http_version 1.1;
proxy_set_header Host $host:$server_port;
proxy_set_header Referer $http_referer;
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 https;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_send_timeout 86400;
proxy_read_timeout 86400;
}
}
Sostituisci wekan.example.com
con il tuo nome di dominio effettivo nella configurazione sopra.
Abilita il sito appena aggiunto.
sudo ln -s /etc/nginx/sites-available/wekan.example.com.conf /etc/nginx/sites-enabled/wekan.example.com.conf
Riavvia Nginx per rendere effettive le modifiche.
sudo systemctl restart nginx
Abilita Nginx per l'avvio automatico all'avvio.
sudo systemctl enable nginx
Installa il servizio Systemd
Crea un nuovo utente per l'esecuzione del processo.
sudo adduser wekan --shell /usr/sbin/nologin --home /opt/wekan
Ora sposta tutti i file nella /opt/wekan
directory.
sudo mv ~/wekan/* /opt/wekan/
Fornire la proprietà dei file all'utente appena creato.
sudo chown -R wekan:wekan /opt/wekan
Wekan non accetta dati da alcun file di configurazione. Al contrario, vi accede dalle variabili di ambiente. Creeremo un nuovo file per memorizzare le variabili di ambiente. Il file contenente le variabili di ambiente verrà passato attraverso il Systemd
servizio.
Creare un nuovo file per archiviare le variabili di ambiente.
sudo nano /opt/wekan/config.env
Popolare il file con il seguente contenuto.
MONGO_URL='mongodb://wekan:[email protected]:27017/wekan?authSource=wekan'
ROOT_URL='http://wekan.example.com'
MAIL_URL='smtp://user:[email protected]:25/'
MAIL_FROM='[email protected]'
PORT=4000
HTTP_FORWARDED_COUNT=1
Assicurati di sostituire il username
e password
.
Fornire la proprietà wekan
all'utente eseguendo.
sudo chown -R wekan:wekan /opt/wekan/config.env
Creare un nuovo file di servizio per il servizio systemd di Wekan.
sudo nano /etc/systemd/system/wekan.service
Popolare il file con il seguente.
[Unit]
Description=Wekan Server
After=syslog.target
After=network.target
[Service]
Type=simple
Restart=on-failure
StartLimitInterval=86400
StartLimitBurst=5
RestartSec=10
ExecStart=/usr/bin/node /opt/wekan/bundle/main.js
EnvironmentFile=/opt/wekan/config.env
ExecReload=/bin/kill -USR1 $MAINPID
RestartSec=10
User=wekan
Group=wekan
WorkingDirectory=/opt/wekan
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=Wekan
[Install]
WantedBy=multi-user.target
Salvare il file ed uscire dall'editor. Ora puoi avviare facilmente Wekan.
sudo systemctl start wekan
Per consentire a Wekan di avviarsi automaticamente all'avvio.
sudo systemctl enable wekan
Per verificare lo stato del servizio Wekan.
sudo systemctl status wekan
Avvolgendo
Ora puoi accedere all'istanza di Wekan su https://wekan.example.com
. Inizia creando un nuovo account. Dopo aver creato l'account, è possibile abilitare l'accesso amministrativo all'utente appena creato. Accedere alla shell MongoDB come utente amministrativo.
mongo -u wekan -p --authenticationDatabase "wekan"
Ora seleziona il wekan
database e aggiorna l'oggetto per promuovere l'utente nell'amministratore.
use wekan
db.users.update({username:'admin_user'},{$set:{isAdmin:true}})
Assicurati di sostituire admin_user
con il nome utente effettivo dell'utente che hai creato. Dall'interfaccia di amministrazione, sarai in grado di disabilitare l'auto-registrazione e aggiornare le impostazioni SMTP.
Congratulazioni, hai installato con successo la scheda Wekan Kanban sulla tua istanza di Vultr Ubuntu.