如何在Ubuntu 16.04上安装Wekan(开源看板)

Wekan是使用Meteor JavaScript框架构建的看板。它被认为是Trello的开源和自托管替代方案,提供几乎相同的功能。它允许您创建基于卡的“待办事项”管理列表。在协作环境中工作时,Wekan对于提高生产力非常有帮助。Wekan具有完全响应的Web界面,并且可以多种语言进行主动翻译。

先决条件

在本教程中,我们将使用wekan.example.com指向Vultr实例的域名作为域名。请确保将所有示例域名都替换为实际的示例域名。

使用指南如何更新Ubuntu 16.04更新基本系统。系统更新后,继续安装依赖项。

安装Node.js

Wekan仅支持Node.js LTS version 4.8。要安装Node.js,我们将使用节点版本管理器。安装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

安装Node.js。

nvm install v4.8

设置Node.js的默认版本。

nvm use node

如果Node.js已成功安装,则您应该能够检查其版本。

node -v

您将看到此输出。

user@vultr:~$ node -v
v4.8.4

NVM仅为当前用户安装Node.js。为了使Node.js可以全局访问,请运行此命令。

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr

Node.js的现在作为/usr/bin/node

user@vultr:~$ sudo which node
/usr/bin/node

安装MongoDB

MongoDB是免费的开源NoSQL数据库服务器。与使用表来组织数据的传统数据库不同,MongoDB是面向文档的,并且使用不带模式的类似JSON的文档。Wekan使用MongoDB来存储其数据。

Wekan仅与兼容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

导入MongoDB公共GPG密钥并更新软件包列表。

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
sudo apt update

安装MongoDB。

sudo apt install -y mongodb-org

启动MongoDB并使其自动启动。

sudo systemctl start mongod
sudo systemctl enable mongod

保护MongoDB实例

默认情况下,MongoDB服务器中未启用身份验证。任何有权访问服务器终端的用户都将具有MongoDB安装的全部特权。为了保护数据库服务器并限制非特权用户的访问,我们将需要在服务器上设置身份验证。

MongoDB提供了一个mongo外壳程序,用于在MongoDB上运行查询。切换到mongo外壳。

mongo

使用root特权创建一个新的MongoDB用户。您可以使用您选择的任何用户名。请确保替换密码

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” 将MongoDB命令界面退出到Linux终端。

编辑MongoDB配置文件。

sudo nano /etc/mongod.conf

在文件末尾添加以下行。

security:
 authorization: enabled

重新启动MongoDB,以使配置更改生效。

sudo systemctl restart mongod

现在已经启用了安全性,您可以通过使用mongo命令再次切换到mongo shell来测试其是否正常工作。这次,如果您运行查询(例如show dbs显示数据库列表),则会看到一条消息,报告授权失败。sudo在以刚创建的新用户身份测试登录后,再次退出该用户。

administrator您刚创建的用户身份登录。

mongo -u admin -p

提供用于成功登录的用户密码。为wekan数据库创建一个新用户,该用户将用于存储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" ] }

安装Wekan

新版发行非常频繁的情况下,请在Github上查看指向Wekan发行版的最新链接。从Github下载最新版本的Wekan,替换指向安装程序包的链接。

cd ~
wget https://github.com/wekan/wekan/releases/download/v0.44/wekan-0.44.tar.gz

将下载的档案解压缩到名为的新目录中wekan

mkdir wekan
tar xzvf wekan-*.tar.gz -C wekan

安装Node.js依赖项。

cd wekan/bundle/programs/server && npm install

Wekan服务器从环境变量读取配置。运行以下命令以将配置设置为环境变量。

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

确保替换wekan已创建用户的MongoDB密码。另外,根据您的SMTP服务器设置更新邮件URL。如果您尚未准备好电子邮件服务器,则以后可以随时更改此配置。

立即启动应用程序。

cd ~/wekan/bundle
node main.js

现在,您可以转到来访问该应用程序http://wekan.example.com:4000。您将看到用于登录Wekan看板的界面。

对于生产用途,建议设置反向代理以在标准HTTP端口上为应用程序systemd提供服务,并提供用于管理应用程序过程的服务。在本教程中,我们将使用Nginx Web服务器作为反向代理,并使用免费加密的Let's Encrypt进行保护。

设置Nginx反向代理

Certbot PPA存储库添加到系统。

sudo add-apt-repository ppa:certbot/certbot
sudo apt update

安装Nginx和Certbot,这是Let's Encrypt CA的客户端应用程序。

sudo apt -y install certbot nginx

注意:用于从Let's Encrypt CA获得证书的域名必须指向服务器。客户端在颁发证书之前验证域权限

生成SSL证书。

sudo certbot certonly --standalone -d wekan.example.com

生成的证书很可能存储在/etc/letsencrypt/live/wekan.example.com/目录中。SSL证书将存储为fullchain.pem,而私钥将存储为privkey.pem

让我们加密证书在90天后过期,因此建议使用Cronjob设置证书的自动续订。Cron是一项系统服务,用于运行定期任务。

打开cron作业文件。

sudo crontab -e

在文件末尾添加以下行。

30 5 * * * /usr/bin/certbot renew --quiet

上面的cron作业每天凌晨5:30运行。如果证书到期,它将自动更新它们。

创建一个新的虚拟主机。

sudo nano /etc/nginx/sites-available/wekan.example.com.conf

用以下内容填充文件。

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;
        }
}

wekan.example.com在上述配置中,用您的实际域名替换。

启用新添加的站点。

sudo ln -s /etc/nginx/sites-available/wekan.example.com.conf /etc/nginx/sites-enabled/wekan.example.com.conf

重新启动Nginx,以使更改生效。

sudo systemctl restart nginx

启用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

Wekan不从任何配置文件中获取数据。而是从环境变量访问它。我们将创建一个新文件来存储环境变量。包含环境变量的文件将通过Systemd服务传递。

创建一个新文件来存储环境变量。

 sudo nano /opt/wekan/config.env

用以下内容填充文件。

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

请确保替换usernamepassword

wekan通过运行向用户提供所有权。

sudo chown -R wekan:wekan /opt/wekan/config.env

为Wekan systemd服务创建一个新的服务文件。

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

保存文件并退出编辑器。现在,您可以轻松启动Wekan。

sudo systemctl start wekan

使Wekan能够在启动时自动启动。

sudo systemctl enable wekan

查看Wekan服务状态。

sudo systemctl status wekan

包起来

现在,您可以在上访问Wekan实例https://wekan.example.com。首先创建一个新帐户。创建帐户后,您可以对新创建的用户启用管理访问权限。以管理用户身份登录MongoDB Shell。

mongo -u wekan -p --authenticationDatabase "wekan"

现在选择wekan数据库并更新对象以将用户提升为admin用户。

use wekan
db.users.update({username:'admin_user'},{$set:{isAdmin:true}})

请确保将其替换admin_user为您创建的用户的实际用户名。从管理界面,您将能够禁用自我注册并更新SMTP设置。

恭喜,您已在您的Vultr Ubuntu实例上成功安装了Wekan Kanban板。



Leave a Comment

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息