轻量级项目任务管理工具DooTask

昨天自己去做了 1 次核酸,这周还有 2


本文其实去年就想写了,但真正动手是今年 3 月份,老苏在 CentOS 7 上安装非常顺利,但是在群晖上却遇到了一些问题,所以就搁置了。之后好几位网友跟老苏提到 DooTask,原本是想基于官方的 cmd 脚本改一个适合在群晖上运行的版本,奈何水平太菜,所以直到今天也只能通过一次一次输入命令行来完成安装。 😂

前言

什么是 DooTask ?

DooTask 是一款轻量级的开源在线项目任务管理工具,提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,文件管理等工具。

官方提供了在线 demohttps://www.dootask.com

可以先去体验,如果合适再考虑是否需要自己搭建。

准备

如果你不是在群晖上安装,建议使用官方的教程和脚本,简单高效,不容易出错。

老苏是在 DS3617xs 上安装的,其中

  • docker 的版本是 20.10.3, build b35e731
  • docker-compose 的版本是 1.28.5, build 1bbbad71

之所以要写版本是因为按照官方的教程,在使用 ./cmd install 一键安装时,会显示 docker-compose 版本过低

按照官方的要求,Docker Compose 需要 v2.0+

如果只是屏蔽版本检测又会出现其他一堆的错误,所以老苏有两个选择:

  1. 升级 docker-compose,但老苏查了一下,似乎并没有满足要求的版本;
  2. 尝试改用 docker-compose up -d 来一键启动,需要很多命令行操作,但似乎这是目前唯一的选择;

事实证明,并不需要 Docker Compose v2.0+ 也是可以安装成功的

在你开始之前,老苏有必要提醒大家,后面均为命令行操作,如果遇到问题,没有点基础排查起来可能会比较困难,老苏本人也是一样,所以如果不是特别需要,不建议在群晖上安装。

安装 Git

  • 套件中心设置 –> 套件来源 –> 新增

  • 名称:随意;
  • 位置:http://packages.synocommunity.com/
  • 套件中心 –> 社群,找到并安装套件 Git

下载代码

SSH 客户端连到群晖,依次执行下面的命令

1
2
3
4
5
6
7
8
9
10
11
# 进入 docker 目录
cd /volume2/docker

# 国内用户使用gitee克隆项目到您的本地或服务器
git clone https://gitee.com/aipaw/dootask.git

# 国外用户还是用github
git clone https://github.com/kuaifan/dootask.git

# 进入目录
cd dootask

设置 .env

1
2
# 创建 .env 文件
cp .env.docker .env

.env.docker 复制出 .env,并按下面老苏给的示例进行修改,需要修改的参数不多,其中:

  • APP_URL:为主机 IP,也就是群晖主机的 IP,如果反代,这里也不用修改;
  • APP_PORT:是应用访问的端口,默认为 2222,不冲突的话就保持默认好了;
  • DB_PASSWORD:数据库的密码;
  • COMPOSE_HTTP_TIMEOUT:这一行是老苏新增的,主要解决执行 docker-compose up -d 可能存在的超时问题;

下图就是曾经出现过的超时错误

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
APP_NAME=DooTask
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_SCHEME=auto
APP_URL=http://192.168.0.197

APP_ID=220813
APP_IPPR=172.68.0
APP_PORT=2222

LOG_CHANNEL=stack
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST="${APP_IPPR}.5"
DB_PORT=3306
DB_DATABASE=dootask
DB_USERNAME=dootask
DB_PASSWORD=123456

DB_ROOT_PASSWORD=UbtzwQUh2Kkv
DB_PREFIX=pre_

BROADCAST_DRIVER=log
CACHE_DRIVER=redis
QUEUE_CONNECTION=redis
SESSION_DRIVER=redis
SESSION_LIFETIME=120

MEMCACHED_HOST=127.0.0.1

REDIS_HOST="${APP_IPPR}.4"
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

LARAVELS_LISTEN_IP=0.0.0.0
LARAVELS_LISTEN_PORT=20000

COMPOSE_HTTP_TIMEOUT=1000

修改 docker-compose.yml

原本老苏并不打算修改 docker-compose.yml,但发现不修改的话,在导入数据库表操作时会报错👇

因此还是需要修改 docker-compose.yml 中的 mariadb 部分,考虑到篇幅,老苏只贴了相关的部分:

  • 老苏注释了端口,这主要是从安全性考虑,毕竟咱也不是做开发,当然不注释也没问题;
  • 在环境变量中新增 MYSQL_ROOT_HOST: "0.0.0.0",解决不能远程访问,导致导入表出错的问题;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mariadb:
container_name: "dootask-mariadb-${APP_ID}"
image: "mariadb:10.7.3"
# ports: # mysql ports item
# - "33062:3306" # mysql ports value
volumes:
- ./docker/mysql/repassword.sh:/etc/mysql/repassword.sh
- ./docker/mysql/conf.d:/etc/mysql/conf.d
- ./docker/mysql/data:/var/lib/mysql
environment:
TZ: "Asia/Shanghai"
MYSQL_PREFIX: "${DB_PREFIX}"
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
MYSQL_DATABASE: "${DB_DATABASE}"
MYSQL_USER: "${DB_USERNAME}"
MYSQL_PASSWORD: "${DB_PASSWORD}"
MYSQL_ROOT_HOST: "0.0.0.0"
networks:
extnetwork:
ipv4_address: "${APP_IPPR}.5"
restart: unless-stopped

启动

准备工作完成后,就可以开始启动了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建数据库目录
mkdir -p ./docker/mysql/data

# 修改数据库目录权限
chmod -R 775 ./docker/mysql/data

# 创建日志目录
mkdir -p ./docker/log/supervisor

# 修改日志目录权限
chmod -R 775 ./docker/log/supervisor

# 一键启动
docker-compose up -d

# 如果遇到错误,可以一键删除之后再一键启动
docker-compose down

先不要着急访问,因为现在访问肯定是返回错误页面的

还需要我们做最后的一些配置工作

配置

先检测所有的容器是否都已经正常启动

下图中数据库就有存在问题,正在不断重启,至于原因老苏也不知道

如果一切正常的话,就可以进行下面的操作了

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
# 进入 PHP 容器
docker-compose exec -u root php /bin/bash

# ----以下命令在容器内执行----

# 安装 composer 依赖
## 1.修改 composer 的全局配置文件,使用国内源
composer config repo.packagist composer https://packagist.phpcomposer.com

## 2.安装依赖
composer install

## 3.取消全局配置
composer config --unset repos.packagis

# 生成 APP_KEY
php artisan key:generate

# 切换模式到 production
php bin/run --mode=prod

# 数据库操作
php artisan migrate --seed

# 退出容器
exit

看到 Database seeding completed successfully. ,说明数据库导入成功了

运行

在浏览器中输入 http://群晖IP:2222 就能看到登录界面

第一次需要先注册账号

如果出现 System error 提示,很可能是数据库有问题

注册成功

自动跳转到主界面

接下来你就可以新建项目、添加人员,分发任务等等。

反向代理

DooTask 支持反代,但是不支持在非标端口运行,因为在 https://dt.laosu.ml:444/manage/dashboard 中你会发现,javascript 被截掉了端口

1
2
<script src="//dt.laosu.ml/js/language.all.js"></script>
<script src="//dt.laosu.ml/js/scroll-into-view.min.js"></script>

老苏不是程序员,所以只能用 Cloudflared 来映射到公网。

结语

这个项目在其他 linux 平台上安装,最大的难度可能是安装支撑环境,比如 phpdocker等,但是项目本身的安装很简单,官方提供了脚本,可以完成安装、删除、备份、改端口、重置密码、升级等操作。

而在群晖上,不需要考虑环境,但是没有了脚本的支持,安装起来比较麻烦,不细心的话比较容易出错,各种操作只能自己手动完成了。

等有空了再看看他们家的 WookTeam,一款轻量级的在线团队协作工具,安装似乎更简单一些。

参考文档

kuaifan/dootask: DooTask是一款轻量级的开源在线项目任务管理工具,提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,文件管理等工具。
地址:https://github.com/kuaifan/dootask

DooTask
地址:https://www.dootask.com/

How to Update Docker Compose on a Synology NAS - WunderTech
地址:https://www.wundertech.net/how-to-update-docker-compose-on-a-synology-nas/

基于 Swoole 实现高性能 HTTP 服务器 | 快速入门 | Swoole 从入门到实战教程
地址:https://laravelacademy.org/post/9801?page=2

Packagist / Composer 中国全量镜像
地址:https://pkg.xyz/

Host ‘172.18.0.1’ is not allowed to connect to this MySQL server · Issue #275 · docker-library/mysql
地址:https://github.com/docker-library/mysql/issues/275#issuecomment-812897091