文章目录
简介
Wekan 是一个完全开源和免费的协作看板应用程序,具有MIT许可证,意味着可以免费使用和分发;无论维护个人待办事项清单,与朋友一起计划假期,还是在团队中为下一个革命性想法工作,看板都是一个无与伦比的工具,可以让事情井然有序;它们可以让您直观地了解项目的当前状态,并通过让您专注于最重要的几个项目来提高您的工作效率。
Wekan可以在自有服务器上安装,即本地化部署,支持许多操作系统平台;Wekan在世界上被很多国家的很多用户所使用,据说有13000多企业在使用Wekan;Wekan已被翻译成约50种语言,在Github上获得了上万个好评。
作为看板类工具,Trello 应该就是标杆了。而 Wekan 基本上算复刻了 Trello,除了没有 Trello 好看,功能非常丰富,部署也十分容易。
功能
-
高度可视化,比传统看板具有更丰富的展现能力(例如支持图片、视频、音频和其他附件);
-
比传统看板能够容纳更多的信息;
-
支持在线协同工作,特别适合项目人员不在同一地点办公的情况;
-
支持更加灵活的内容修改、任务状态更新、流程定制等功能;
-
支持自动化的规则,例如“进行中”的任务列表中某项任务达到一定条件就自动转移到“已完成”状态的列表中。
总的来说,看板作为项目任务管理工具,是组织项目、分享信息、展开协作的地方。
通过看板,所有与项目有关的人对正在处理和仍待完成的工作能够统一看法。 一般来说看板由看板本身、列表和卡片三个主要概念组成。看板本身可以理解成项目,列表则通常代表工作流或流程,而卡片则通常代表任务,并且任务会在这些列表之间移动直至任务完成。看板软件一般还支持日程管理和计划任务安排,使得它不仅具有信息分享功能,还可以提供真正意义上的项目进度管控的能力。
安装
支持的系统非常多安装指导
最简单的方式,应该是使用Docker部署,鉴于我的生产环境,这边以Ubuntu为例进行安装:
1. 前期准备
安装Snap:
apt install snap
2. 安装WeKan
snap install wekan
snap set wekan root-url='https://wekan.example.com'
关于
root-url
的示例
比如我在网站上部署可以设置为:
root-url='https://wekan.yydnas.cn'
本地运行的话可以设置为:
root-url='http://127.0.0.1'
3. 设置运行端口
snap set wekan port='3001'
4. 重启服务
systemctl restart snap.wekan.wekan
5. 安装自动升级
-
在 02:00AM 和 04:00AM 中间运行自动升级程序:
snap set core refresh.schedule=02:00-04:00
-
每周日 02:00AM 和 04:00AM 中间运行自动升级程序:
snap set core refresh.schedule=sun,02:00-04:00
-
每月最后一周的周日 02:00AM 和 04:00AM 中间运行自动升级程序:
snap set core refresh.schedule=sun5,02:00-04:00
如果需要禁用自动更新,修改
/etc/hosts
,在其中添加:127.0.0.1 api.snapcraft.io
6. 邮件设置
sudo snap set wekan mail-url='smtps://user:pass@mailserver.example.com:453'
sudo snap set wekan mail-from='Wekan Boards <support@example.com>'
7. 其他设置
其他也支持 LDAP 、 Matomo 还有 Rocket.Chat 。
配置Nginx
官方给了Nginx的主程序配置以及网站配置,根据自己情况进行修改:
主程序配置: /etc/nginx/nginx.conf
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
# 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;
#}
}
}
访问
用浏览器访问对应的网址即可。第一个注册的账号为管理员账号。
进入后台即可正常添加看板。
总结
在我使用体验下来,唯一有点觉得不舒服的地方在于:
标题无法设置日期以及一些属性,这个标题在我想来,可能是出于一个方向,或者说一个目标,然后在下面添加的卡片中,是可以增加比如日期,人员,任务的一些属性等等,表示细分的工作内容。
其他方面设置也很简单,界面比较简洁,确实不失为一个比较好的工具。