Предуслови
Инсталирајте Ноде.јс
Инсталирајте МонгоДБ
Инсталирајте Векан
Подешавање Нгинк обрнутог проксија
Подешавање Системд услуге
Окончање
Векан је канбан плоча направљена са Метеор ЈаваСцрипт оквиром. Сматра се алтернативом Трелло-у отвореног кода и самостално хостованом, пружајући скоро исте карактеристике. Омогућава вам да креирате листе управљања обавезама засноване на картицама. Векан је од велике помоћи за повећање продуктивности када радите у окружењу за сарадњу. Векан има потпуно прилагодљив веб интерфејс и активно се преводи на многе језике.
Предуслови
За овај водич користићемо wekan.example.comкао име домена усмерено на Вултр инстанцу. Обавезно замените сва појављивања примера имена домена стварним.
Ажурирајте свој основни систем користећи водич Како ажурирати Убунту 16.04 . Када се ваш систем ажурира, наставите са инсталирањем зависности.
Инсталирајте Ноде.јс
Векан подржава само Node.js LTS version 4.8. Да бисмо инсталирали Ноде.јс, користићемо менаџер верзија чвора. Инсталирајте nvmпокретањем скрипте за инсталацију.
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | bash
Да бисте одмах почели да користите nvm, покрените ово.
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
Ако nvmје инсталиран успешно, требало би да можете да проверите његову верзију.
user@vultr:~$ nvm --version
0.33.4
Инсталирајте Ноде.јс.
nvm install v4.8
Подесите подразумевану верзију Ноде.јс.
nvm use node
Ако је Ноде.јс успешно инсталиран, требало би да можете да проверите његову верзију.
node -v
Видећете овај излаз.
user@vultr:~$ node -v
v4.8.4
НВМ инсталира Ноде.јс само за тренутног корисника. Да би Ноде.јс био доступан глобално, покрените ово.
n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr
Ноде.јс је сада доступан као /usr/bin/node.
user@vultr:~$ sudo which node
/usr/bin/node
Инсталирајте МонгоДБ
МонгоДБ је бесплатни НоСКЛ сервер базе података отвореног кода. За разлику од традиционалних база података које користе табеле за организовање својих података, МонгоДБ је оријентисан на документе и користи документе сличне ЈСОН-у без шема. Векан користи МонгоДБ за складиштење својих података.
Векан је компатибилан само са MongoDB version 3.2. Креирајте нову датотеку спремишта.
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
Увезите МонгоДБ јавни ГПГ кључ и ажурирајте листу пакета.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
sudo apt update
Инсталирајте МонгоДБ.
sudo apt install -y mongodb-org
Покрените МонгоДБ и омогућите његово аутоматско покретање.
sudo systemctl start mongod
sudo systemctl enable mongod
Обезбеђивање МонгоДБ инстанце
Подразумевано, није омогућена аутентификација на МонгоДБ серверу. Сваки корисник који има приступ терминалу сервера имаће пуне привилегије на инсталацију МонгоДБ. Да бисмо обезбедили сервер базе података и ограничили приступ непривилегованом кориснику, мораћемо да подесимо аутентификацију на серверу.
МонгоДБ обезбеђује mongoљуску која се користи за покретање упита на МонгоДБ. Пребаците се на mongoшкољку.
mongo
Креирајте новог МонгоДБ корисника са роот привилегијама. Можете користити било које корисничко име по вашем избору. Обавезно замените лозинку .
db.createUser(
{
user: "admin",
pwd: "StrongAdminPassword",
roles: [ { role: "root", db: "admin" } ]
}
)
Требало би да видите следећи излаз.
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"
}
]
}
Изађите из командног интерфејса МонгоДБ на Линук терминал притиском на " Ctrl+C".
Уредите конфигурациону датотеку МонгоДБ.
sudo nano /etc/mongod.conf
Додајте следећи ред на крај датотеке.
security:
authorization: enabled
Поново покрените МонгоДБ да би промена конфигурације могла да ступи на снагу.
sudo systemctl restart mongod
Сада када је безбедност омогућена, можете тестирати да ли ради тако што ћете поново прећи на монго љуску користећи mongoкоманду. Овог пута, ако покренете упит, на пример show dbsда прикажете листу база података, видећете поруку која извештава о неуспешној ауторизацији. sudoПоново изађите на корисника након тестирања пријаве као новог корисника којег сте управо креирали.
Пријавите се као administratorкорисник којег сте управо креирали.
mongo -u admin -p
Наведите лозинку корисника за успешну пријаву. Креирајте новог корисника за wekanбазу података која ће се користити за складиштење Векан података.
use wekan
db.createUser(
{
user: "wekan",
pwd: "StrongPassword",
roles: ["readWrite"]
}
)
Обавезно замените StrongPasswordјаком лозинком. Видећете следећи излаз.
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" ] }
Инсталирајте Векан
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
Омогућите да се Нгинк аутоматски покреће при покретању.
sudo systemctl enable nginx
Подешавање Системд услуге
Креирајте новог корисника за покретање процеса.
sudo adduser wekan --shell /usr/sbin/nologin --home /opt/wekan
Сада преместите све датотеке у /opt/wekanдиректоријум.
sudo mv ~/wekan/* /opt/wekan/
Омогућите власништво над датотекама новокреираном кориснику.
sudo chown -R wekan:wekan /opt/wekan
Векан не преузима податке из било које конфигурационе датотеке. Уместо тога, приступа му из варијабли окружења. Направићемо нову датотеку за чување променљивих окружења. Датотека која садржи променљиве окружења биће прослеђена кроз Systemdуслугу.
Креирајте нову датотеку за чување променљивих окружења.
sudo nano /opt/wekan/config.env
Попуните датотеку следећим садржајем.
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
Обавезно замените usernameи password.
Обезбедите власништво wekanкориснику покретањем.
sudo chown -R wekan:wekan /opt/wekan/config.env
Креирајте нови сервисни фајл за Векан системд услугу.
sudo nano /etc/systemd/system/wekan.service
Попуните датотеку следећим.
[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
Сачувајте датотеку и изађите из уређивача. Сада можете лако да покренете Векан.
sudo systemctl start wekan
Да бисте омогућили да се Векан аутоматски покрене при покретању.
sudo systemctl enable wekan
Да бисте проверили статус услуге Векан.
sudo systemctl status wekan
Окончање
Сада можете приступити Векан инстанци на https://wekan.example.com. Почните тако што ћете креирати нови налог. Када креирате налог, можете омогућити административни приступ новокреираном кориснику. Пријавите се на љуску МонгоДБ као административни корисник.
mongo -u wekan -p --authenticationDatabase "wekan"
Сада изаберите wekanбазу података и ажурирајте објекат да бисте унапредили корисника у администраторског корисника.
use wekan
db.users.update({username:'admin_user'},{$set:{isAdmin:true}})
Обавезно замените admin_userстварним корисничким именом корисника којег сте креирали. Из административног интерфејса, моћи ћете да онемогућите саморегистрацију и ажурирате СМТП подешавања.
Честитамо, успешно сте инсталирали Векан Канбан плочу на своју Вултр Убунту инстанцу.