Forutsetninger
Installer Node.js
Installer MongoDB
Installer Wekan
Sette opp Nginx Reverse Proxy
Konfigurer Systemd Service
Innpakning
Wekan er et kanban-brett bygget med Meteor JavaScript-rammeverket. Det regnes som et åpen kildekode og selvdrevet alternativ til Trello, og gir nesten de samme funksjonene. Den lar deg lage kortbaserte "to-do"-administrasjonslister. Wekan er svært nyttig for å øke produktiviteten når du jobber i et samarbeidsmiljø. Wekan har et fullt responsivt webgrensesnitt, og det er aktivt oversatt til mange språk.
Forutsetninger
- En Vultr Ubuntu 16.04-serverforekomst.
- En sudo-bruker .
For denne opplæringen vil vi bruke wekan.example.comsom domenenavnet peker mot Vultr-forekomsten. Sørg for å erstatte alle forekomster av eksempeldomenenavnet med det faktiske.
Oppdater basissystemet ditt ved å bruke veiledningen Hvordan oppdatere Ubuntu 16.04 . Når systemet ditt har blitt oppdatert, fortsett å installere avhengighetene.
Installer Node.js
Wekan støtter kun Node.js LTS version 4.8. For å installere Node.js bruker vi nodeversjonsbehandleren. Installer nvmved å kjøre installasjonsskriptet.
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | bash
For å begynne å bruke umiddelbart nvm, kjør dette.
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
Hvis den nvmhar installert vellykket, bør du kunne sjekke versjonen.
user@vultr:~$ nvm --version
0.33.4
Installer Node.js.
nvm install v4.8
Angi standardversjonen av Node.js.
nvm use node
Hvis Node.js har installert vellykket, bør du kunne sjekke versjonen.
node -v
Du vil se denne utgangen.
user@vultr:~$ node -v
v4.8.4
NVM installerer kun Node.js for gjeldende bruker. For at Node.js skal være tilgjengelig globalt, kjør dette.
n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr
Node.js er nå tilgjengelig som /usr/bin/node.
user@vultr:~$ sudo which node
/usr/bin/node
Installer MongoDB
MongoDB er en gratis og åpen kildekode NoSQL-databaseserver. I motsetning til tradisjonelle databaser som bruker tabeller for å organisere dataene sine, er MongoDB dokumentorientert og bruker JSON-lignende dokumenter uten skjemaer. Wekan bruker MongoDB til å lagre dataene sine.
Wekan er kun kompatibel med MongoDB version 3.2. Opprett en ny depotfil.
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
Importer MongoDB offentlige GPG-nøkkel og oppdater pakkelisten.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
sudo apt update
Installer MongoDB.
sudo apt install -y mongodb-org
Start MongoDB og la den starte automatisk.
sudo systemctl start mongod
sudo systemctl enable mongod
Sikring av MongoDB-forekomst
Som standard er det ingen autentisering aktivert i en MongoDB-server. Enhver bruker som har tilgang til terminalen på serveren vil ha fulle rettigheter på MongoDB-installasjonen. For å sikre databaseserveren og begrense tilgangen til en uprivilegert bruker, må vi sette opp autentisering på serveren.
MongoDB gir et mongoskall som brukes til å kjøre spørringer på MongoDB. Bytt til mongoskallet.
mongo
Opprett en ny MongoDB-bruker med root-privilegier. Du kan bruke hvilket som helst brukernavn du ønsker. Sørg for å erstatte passordet .
db.createUser(
{
user: "admin",
pwd: "StrongAdminPassword",
roles: [ { role: "root", db: "admin" } ]
}
)
Du bør se følgende utgang.
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"
}
]
}
Gå ut av MongoDB-kommandogrensesnittet til Linux-terminalen ved å trykke " Ctrl+C".
Rediger MongoDB-konfigurasjonsfilen.
sudo nano /etc/mongod.conf
Legg til følgende linje på slutten av filen.
security:
authorization: enabled
Start MongoDB på nytt slik at konfigurasjonsendringen kan tre i kraft.
sudo systemctl restart mongod
Nå som sikkerheten er aktivert, kan du teste om den fungerer ved å bytte til mongo-skallet igjen ved å bruke mongokommandoen. Denne gangen, hvis du kjører en spørring, for eksempel for show dbså vise listen over databaser, vil du se en melding som rapporterer mislykket autorisasjon. Gå ut til sudobrukeren igjen etter å ha testet innloggingen som den nye brukeren du nettopp opprettet.
Logg inn som administratorbrukeren du nettopp opprettet.
mongo -u admin -p
Oppgi passordet til brukeren for en vellykket pålogging. Opprett en ny bruker for wekandatabasen som skal brukes til å lagre Wekan-data.
use wekan
db.createUser(
{
user: "wekan",
pwd: "StrongPassword",
roles: ["readWrite"]
}
)
Sørg for å erstatte StrongPasswordmed et sterkt passord. Du vil se følgende utgang.
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" ] }
Installer Wekan
Check for the latest link to the Wekan release on Github as new releases are very frequent. Download the latest version of Wekan from Github replacing the link to the installer package.
cd ~
wget https://github.com/wekan/wekan/releases/download/v0.44/wekan-0.44.tar.gz
Extract the downloaded archive into a new directory named wekan.
mkdir wekan
tar xzvf wekan-*.tar.gz -C wekan
Install the Node.js dependencies.
cd wekan/bundle/programs/server && npm install
The Wekan server reads configurations from the environment variables. Run the following commands to set the configurations as environment variables.
export MONGO_URL='mongodb://wekan:StrongPassword@127.0.0.1:27017/wekan?authSource=wekan'
export ROOT_URL='http://wekan.example.com'
export MAIL_URL='smtp://user:pass@mail.example.com:25/'
export MAIL_FROM='wekan@example.com'
export PORT=4000
Make sure to replace the MongoDB password for the wekan user you have created. Also, update the mail URL according to your SMTP server settings. If you do not have an email server ready, you can always change this configuration later.
To immediately start the application.
cd ~/wekan/bundle
node main.js
You can now access the application by going to http://wekan.example.com:4000. You will see the interface to log-in into the Wekan kanban board.
For production use, it is recommended to set up a reverse proxy to serve the application on the standard HTTP port and a systemd service to manage the application process. In this tutorial, we will use the Nginx web server as a reverse proxy, secured with a Let's Encrypt free SSL.
Setting up the Nginx Reverse Proxy
Add the Certbot PPA repository to the system.
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
Install Nginx and Certbot, which is the client application for Let's Encrypt CA.
sudo apt -y install certbot nginx
Note: The domain name which you are using to obtain the certificates from the Let's Encrypt CA must be pointed towards the server. The client verifies the domain authority before issuing the certificates.
Generate the SSL certificates.
sudo certbot certonly --standalone -d wekan.example.com
The generated certificates are likely to be stored in the /etc/letsencrypt/live/wekan.example.com/ directory. The SSL certificate will be stored as fullchain.pem, and private key will be stored as privkey.pem.
Let's Encrypt certificates expire in 90 days, so it is recommended to set up auto-renewal of the certificates using Cronjob. Cron is a system service which is used to run periodic tasks.
Open the cron job file.
sudo crontab -e
Add the following line at the end of the file.
30 5 * * * /usr/bin/certbot renew --quiet
The above cron job will run every day at 5:30 AM. If the certificates are due for expiration, it will automatically renew them.
Create a new virtual host.
sudo nano /etc/nginx/sites-available/wekan.example.com.conf
Populate the file with the following.
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;
}
}
Replace wekan.example.com with your actual domain name in the above configuration.
Enable the newly added site.
sudo ln -s /etc/nginx/sites-available/wekan.example.com.conf /etc/nginx/sites-enabled/wekan.example.com.conf
Restart Nginx so that the changes can take effect.
sudo systemctl restart nginx
Aktiver Nginx til å starte automatisk ved oppstart.
sudo systemctl enable nginx
Konfigurer Systemd Service
Opprett en ny bruker for at prosessen skal kjøre.
sudo adduser wekan --shell /usr/sbin/nologin --home /opt/wekan
Flytt nå alle filene til /opt/wekankatalogen.
sudo mv ~/wekan/* /opt/wekan/
Gi eierskap til filene til den nyopprettede brukeren.
sudo chown -R wekan:wekan /opt/wekan
Wekan tar ikke data fra noen konfigurasjonsfil. I stedet får den tilgang til den fra miljøvariabler. Vi vil opprette en ny fil for å lagre miljøvariablene. Filen som inneholder miljøvariablene sendes gjennom Systemdtjenesten.
Opprett en ny fil for å lagre miljøvariabler.
sudo nano /opt/wekan/config.env
Fyll filen med følgende innhold.
MONGO_URL='mongodb://wekan:StrongPassword@127.0.0.1:27017/wekan?authSource=wekan'
ROOT_URL='http://wekan.example.com'
MAIL_URL='smtp://user:pass@mail.example.com:25/'
MAIL_FROM='wekan@example.com'
PORT=4000
HTTP_FORWARDED_COUNT=1
Sørg for å erstatte usernameog password.
Gi eierskapet til wekanbrukeren ved å kjøre.
sudo chown -R wekan:wekan /opt/wekan/config.env
Opprett en ny tjenestefil for Wekan systemd-tjenesten.
sudo nano /etc/systemd/system/wekan.service
Fyll filen med følgende.
[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
Lagre filen og gå ut av redigeringsprogrammet. Nå kan du enkelt starte Wekan.
sudo systemctl start wekan
For å aktivere Wekan til å starte automatisk ved oppstart.
sudo systemctl enable wekan
For å sjekke statusen til Wekan-tjenesten.
sudo systemctl status wekan
Innpakning
Du kan nå få tilgang til Wekan-forekomsten på https://wekan.example.com. Start med å opprette en ny konto. Når du har opprettet kontoen, kan du aktivere administrativ tilgang til den nyopprettede brukeren. Logg på MongoDB-skallet som administrativ bruker.
mongo -u wekan -p --authenticationDatabase "wekan"
Velg nå wekandatabasen og oppdater objektet for å promotere brukeren til adminbrukeren.
use wekan
db.users.update({username:'admin_user'},{$set:{isAdmin:true}})
Sørg for å erstatte admin_usermed det faktiske brukernavnet til brukeren du opprettet. Fra administrasjonsgrensesnittet vil du kunne deaktivere selvregistrering og oppdatere SMTP-innstillinger.
Gratulerer, du har installert Wekan Kanban-kortet på din Vultr Ubuntu-forekomst.