简介

Wekan 是一个完全开源和免费的协作看板应用程序,具有MIT许可证,意味着可以免费使用和分发;无论维护个人待办事项清单,与朋友一起计划假期,还是在团队中为下一个革命性想法工作,看板都是一个无与伦比的工具,可以让事情井然有序;它们可以让您直观地了解项目的当前状态,并通过让您专注于最重要的几个项目来提高您的工作效率。

Wekan可以在自有服务器上安装,即本地化部署,支持许多操作系统平台;Wekan在世界上被很多国家的很多用户所使用,据说有13000多企业在使用Wekan;Wekan已被翻译成约50种语言,在Github上获得了上万个好评。

作为看板类工具,Trello 应该就是标杆了。而 Wekan 基本上算复刻了 Trello,除了没有 Trello 好看,功能非常丰富,部署也十分容易。

功能

  1. 高度可视化,比传统看板具有更丰富的展现能力(例如支持图片、视频、音频和其他附件);

  2. 比传统看板能够容纳更多的信息;

  3. 支持在线协同工作,特别适合项目人员不在同一地点办公的情况;

  4. 支持更加灵活的内容修改、任务状态更新、流程定制等功能;

  5. 支持自动化的规则,例如“进行中”的任务列表中某项任务达到一定条件就自动转移到“已完成”状态的列表中。

总的来说,看板作为项目任务管理工具,是组织项目、分享信息、展开协作的地方。

通过看板,所有与项目有关的人对正在处理和仍待完成的工作能够统一看法。 一般来说看板由看板本身、列表和卡片三个主要概念组成。看板本身可以理解成项目,列表则通常代表工作流或流程,而卡片则通常代表任务,并且任务会在这些列表之间移动直至任务完成。看板软件一般还支持日程管理和计划任务安排,使得它不仅具有信息分享功能,还可以提供真正意义上的项目进度管控的能力。

安装

支持的系统非常多安装指导

最简单的方式,应该是使用Docker部署,鉴于我的生产环境,这边以Ubuntu为例进行安装:

1. 前期准备

安装Snap:

1
apt install snap

2. 安装WeKan

1
2
snap install wekan
snap set wekan root-url='https://wekan.example.com'

关于 root-url示例

比如我在网站上部署可以设置为:

1
root-url='https://wekan.yydnas.cn'

本地运行的话可以设置为:

1
root-url='http://127.0.0.1'

3. 设置运行端口

1
snap set wekan port='3001'

4. 重启服务

1
systemctl restart snap.wekan.wekan

5. 安装自动升级

  • 在 02:00AM 和 04:00AM 中间运行自动升级程序:

    1
    snap set core refresh.schedule=02:00-04:00
  • 每周日 02:00AM 和 04:00AM 中间运行自动升级程序:

    1
    snap set core refresh.schedule=sun,02:00-04:00
  • 每月最后一周的周日 02:00AM 和 04:00AM 中间运行自动升级程序:

    1
    snap set core refresh.schedule=sun5,02:00-04:00

如果需要禁用自动更新,修改 /etc/hosts ,在其中添加:

1
>127.0.0.1 api.snapcraft.io

6. 邮件设置

1
2
sudo snap set wekan mail-url='smtps://user:pass@mailserver.example.com:453'
sudo snap set wekan mail-from='Wekan Boards <support@example.com>'

Troubleshooting Mail

7. 其他设置

其他也支持 LDAPMatomo 还有 Rocket.Chat

配置Nginx

官方给了Nginx的主程序配置以及网站配置,根据自己情况进行修改:

主程序配置: /etc/nginx/nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
worker_connections 768;
# multi_accept on;
}

http {

##
# Basic Settings
##

## Max attachment size that can be uploaded to Wekan:
client_max_body_size 100M;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
types_hash_max_size 2048;
server_tokens off;
set_real_ip_from 0.0.0.0/32; # All addresses get a real IP.
real_ip_header X-Forwarded-For;
limit_conn_zone $binary_remote_addr zone=arbeit:10m;
client_body_timeout 60;
client_header_timeout 60;
keepalive_timeout 10 10;
send_timeout 60;
reset_timedout_connection on;

# server_names_hash_bucket_size 64;
# server_name_in_redirect off;

include /etc/nginx/mime.types;
default_type application/octet-stream;

##
# SSL Settings
##

ssl_protocols TLSv1.2 TLSv1.1 TLSv1; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:30m;
ssl_session_timeout 1d;
ssl_ciphers ECDH+aRSA+AESGCM:ECDH+aRSA+SHA384:ECDH+aRSA+SHA256:ECDH:EDH+CAMELLIA:EDH+aRSA:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA;
ssl_dhparam /etc/ssl/dh_param.pem;
ssl_ecdh_curve secp384r1;
ssl_stapling on;
ssl_stapling_verify on;
add_header X-XSS-Protection '1; mode=block';
add_header X-Frame-Options SAMEORIGIN;
add_header Strict-Transport-Security 'max-age=31536000';
add_header X-Content-Options nosniff;
add_header X-Micro-Cache $upstream_cache_status;

##
# Logging Settings
##

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

##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";
gzip_buffers 16 8k;
gzip_comp_level 1;
gzip_http_version 1.1;
gzip_min_length 10;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/x-icon application/vnd.ms-fontobject font/opentype application/x-font-ttf;
gzip_vary on;
gzip_proxied any; # Compression for all requests.

##
# Virtual Host Configs
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

网站配置: /etc/nginx/sites-available/wekan.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# this section is needed to proxy web-socket connections
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

# HTTP
server {
listen 80; # if this is not a default server, remove "default_server"
listen [::]:80 ipv6only=on;

server_name example.com;

# redirect non-SSL to SSL
location / {
rewrite ^ https://example.com$request_uri? permanent;
}
}

# HTTPS server
server {
listen 443 ssl http2; # we enable HTTP/2 here (previously SPDY)
server_name example.com; # this domain must match Common Name (CN) in the SSL certificate

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

# If your application is not compatible with IE <= 10, this will redirect visitors to a page advising a browser update
# This works because IE 11 does not present itself as MSIE anymore
if ($http_user_agent ~ "MSIE" ) {
return 303 https://browser-update.org/update.html;
}

# Pass requests to Wekan.
# If you have Wekan at https://example.com/wekan , change location to:
# location /wekan {
location / {
# proxy_pass http://127.0.0.1:3001/wekan;
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; # allow websockets
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-For $remote_addr; # preserve client IP

# this setting allows the browser to cache the application in a way compatible with Meteor
# on every applicaiton update the name of CSS and JS file is different, so they can be cache infinitely (here: 30 days)
# the root path (/) MUST NOT be cached
#if ($uri != '/wekan') {
# expires 30d;
#}
}
}

访问

用浏览器访问对应的网址即可。第一个注册的账号为管理员账号。

进入后台即可正常添加看板。

总结

在我使用体验下来,唯一有点觉得不舒服的地方在于:

标题无法设置日期以及一些属性,这个标题在我想来,可能是出于一个方向,或者说一个目标,然后在下面添加的卡片中,是可以增加比如日期,人员,任务的一些属性等等,表示细分的工作内容。

其他方面设置也很简单,界面比较简洁,确实不失为一个比较好的工具。