PassNAT LogoPassNAT

无公网搭建敏捷项目管理平台Taiga全栈开发工具,Docker一键部署看板Scrum问题跟踪Wiki时间线功能,配置帕斯内网穿透实现远程团队协作!

作者

小编

发布时间

Curving abstract shapes with an orange and blue gradient

基于我获取的信息,现在我来为 Taiga 项目编写部署教程:

项目介绍

Taiga 是一个开源的敏捷项目管理平台,专为开发团队和创意团队设计。它提供了完整的项目管理解决方案,包括看板、Scrum、问题跟踪、Wiki、时间线等功能。Taiga 采用现代化的 Web 技术栈构建,界面简洁美观,功能强大且易于使用。

Taiga 支持多种项目管理方法论,无论你的团队使用敏捷开发、Scrum 还是看板方法,都能在 Taiga 中找到合适的工具。它还支持从 GitHub、GitLab、Jira、Trello 等平台导入项目,让团队迁移变得更加简单。

项目地址:点我跳转

部署安装

如需在外也打开项目需要配置内网穿透使用,点击前往 帕斯内网穿透,先注册好账号备用。

Taiga 提供了完整的 Docker Compose 部署方案,包含前端、后端、数据库、消息队列等所有必要组件,可以一键部署完整的项目管理平台。

复制下列的配置文件

1version: '3.5'
2
3x-environment:
4 &default-back-environment
5 # Database settings
6 POSTGRES_DB: 'taiga'
7 POSTGRES_USER: 'taiga'
8 POSTGRES_PASSWORD: 'taiga123'
9 POSTGRES_HOST: 'taiga-db'
10 # Taiga settings
11 TAIGA_SECRET_KEY: 'taiga-secret-key-change-me'
12 TAIGA_SITES_SCHEME: 'http'
13 TAIGA_SITES_DOMAIN: 'localhost:9000'
14 TAIGA_SUBPATH: ''
15 # Email settings
16 EMAIL_BACKEND: 'console'
17 DEFAULT_FROM_EMAIL: 'no-reply@example.com'
18 EMAIL_USE_TLS: 'True'
19 EMAIL_USE_SSL: 'False'
20 EMAIL_HOST: ''
21 EMAIL_PORT: '587'
22 EMAIL_HOST_USER: ''
23 EMAIL_HOST_PASSWORD: ''
24 # Rabbitmq settings
25 RABBITMQ_USER: 'taiga'
26 RABBITMQ_PASS: 'taiga123'
27 # Telemetry settings
28 ENABLE_TELEMETRY: 'True'
29
30x-volumes:
31 &default-back-volumes
32 - taiga-static-data:/taiga-back/static
33 - taiga-media-data:/taiga-back/media
34
35services:
36 taiga-db:
37 image: postgres:12.3
38 environment:
39 POSTGRES_DB: 'taiga'
40 POSTGRES_USER: 'taiga'
41 POSTGRES_PASSWORD: 'taiga123'
42 healthcheck:
43 test: ['CMD-SHELL', 'pg_isready -U taiga']
44 interval: 2s
45 timeout: 15s
46 retries: 5
47 start_period: 3s
48 volumes:
49 - taiga-db-data:/var/lib/postgresql/data
50 networks:
51 - taiga
52
53 taiga-back:
54 image: taigaio/taiga-back:latest
55 environment: *default-back-environment
56 volumes: *default-back-volumes
57 networks:
58 - taiga
59 depends_on:
60 taiga-db:
61 condition: service_healthy
62 taiga-events-rabbitmq:
63 condition: service_started
64 taiga-async-rabbitmq:
65 condition: service_started
66
67 taiga-async:
68 image: taigaio/taiga-back:latest
69 entrypoint: ['/taiga-back/docker/async_entrypoint.sh']
70 environment: *default-back-environment
71 volumes: *default-back-volumes
72 networks:
73 - taiga
74 depends_on:
75 taiga-db:
76 condition: service_healthy
77 taiga-events-rabbitmq:
78 condition: service_started
79 taiga-async-rabbitmq:
80 condition: service_started
81
82 taiga-async-rabbitmq:
83 image: rabbitmq:3.8-management-alpine
84 environment:
85 RABBITMQ_ERLANG_COOKIE: 'secret-erlang-cookie'
86 RABBITMQ_DEFAULT_USER: 'taiga'
87 RABBITMQ_DEFAULT_PASS: 'taiga123'
88 RABBITMQ_DEFAULT_VHOST: 'taiga'
89 hostname: 'taiga-async-rabbitmq'
90 volumes:
91 - taiga-async-rabbitmq-data:/var/lib/rabbitmq
92 networks:
93 - taiga
94
95 taiga-front:
96 image: taigaio/taiga-front:latest
97 environment:
98 TAIGA_URL: 'http://localhost:9000'
99 TAIGA_WEBSOCKETS_URL: 'ws://localhost:9000'
100 TAIGA_SUBPATH: ''
101 networks:
102 - taiga
103
104 taiga-events:
105 image: taigaio/taiga-events:latest
106 environment:
107 RABBITMQ_USER: 'taiga'
108 RABBITMQ_PASS: 'taiga123'
109 TAIGA_SECRET_KEY: 'taiga-secret-key-change-me'
110 networks:
111 - taiga
112 depends_on:
113 taiga-events-rabbitmq:
114 condition: service_started
115
116 taiga-events-rabbitmq:
117 image: rabbitmq:3.8-management-alpine
118 environment:
119 RABBITMQ_ERLANG_COOKIE: 'secret-erlang-cookie'
120 RABBITMQ_DEFAULT_USER: 'taiga'
121 RABBITMQ_DEFAULT_PASS: 'taiga123'
122 RABBITMQ_DEFAULT_VHOST: 'taiga'
123 hostname: 'taiga-events-rabbitmq'
124 volumes:
125 - taiga-events-rabbitmq-data:/var/lib/rabbitmq
126 networks:
127 - taiga
128
129 taiga-protected:
130 image: taigaio/taiga-protected:latest
131 environment:
132 MAX_AGE: '360'
133 SECRET_KEY: 'taiga-secret-key-change-me'
134 networks:
135 - taiga
136
137 taiga-gateway:
138 image: nginx:1.19-alpine
139 ports:
140 - '9000:80'
141 volumes:
142 - taiga-static-data:/taiga/static
143 - taiga-media-data:/taiga/media
144 networks:
145 - taiga
146 depends_on:
147 - taiga-front
148 - taiga-back
149 - taiga-events
150
151volumes:
152 taiga-static-data:
153 taiga-media-data:
154 taiga-db-data:
155 taiga-async-rabbitmq-data:
156 taiga-events-rabbitmq-data:
157
158networks:
159 taiga:

打开飞牛 NAS 或其他的 NAS 设备

项目名称可以随便填,点击创建 docker-compose.yml

点击 Compose -> 新建项目

这里需要改成你需要的数据库密码和密钥,其他的保持不变。建议修改以下字段:

- POSTGRES_PASSWORD: 数据库密码,建议设置为强密码

- TAIGA_SECRET_KEY: Taiga 密钥,建议设置为随机字符串

- RABBITMQ_PASS: 消息队列密码,建议设置为强密码

如果提示端口被占用可以修改下面的字段,但是需要保持格式正确:

1ports:
2 - '9001:80' # 将 9000 改为其他端口

部署完成后,需要创建超级用户账号。在 NAS 的终端中执行:

1docker exec -it [容器名称]_taiga-back_1 python manage.py createsuperuser

创建成功后可以访问 ip:9000

到这里就可以正常显示项目了

穿透公网

打开帕斯内网穿透控制台,点击隧道管理-隧道列表

点击创建新隧道

隧道节点可以随便选,一般选个负载低的就可以

接下来填写信息,隧道名称可以随便填写

本地 IP 默认就可以

传输协议可以选择 TCP 也可以选择 HTTP/HTTPS

HTTP 就是域名的形式,教程以使用 TCP 为演示

本项目中如果没有修改端口的话默认是 9000 端口,这里本地端口就填 9000

远程端口可以留空也可以自定义。下图仅做参考,请按照实际项目端口添加。

填写完毕点击确定

点击刚才创建好的隧道,点击获取配置文件

回到飞牛 NAS,点击应用中心下载 frpc 客户端

打开后粘贴刚才复制的配置文件,点击确定即可

复制帕斯内网穿透控制台的访问 IP 和端口

可以看到已经正常穿透成功了

本篇教程结束