PassNAT LogoPassNAT

自建私人敏捷项目管理Taiga 团队协作Scrum看板,帕斯内网穿透远程办公无限制访问

作者

小编

发布时间

Curving abstract shapes with an orange and blue gradient

基于我获取的信息,现在我可以为 Taiga 项目编写部署教程了。

项目介绍

Taiga 是一个功能强大的开源敏捷项目管理工具,专为跨职能敏捷团队设计。它提供了完整的项目管理解决方案,包括 Kanban 看板、Scrum 敏捷开发、问题跟踪、团队协作等功能。Taiga 拥有直观的用户界面,无需复杂的培训即可上手使用,支持超过 20 种语言,是全球数百万用户信赖的敏捷项目管理平台。

Taiga 支持多种工作流程,可以在 Kanban 和 Scrum 之间自由切换,提供完整的 Sprint 规划、燃尽图、用户故事管理、问题跟踪等功能。它还具备强大的自定义能力,可以根据团队需求调整工作流程、权限设置、自定义字段等。作为开源软件,Taiga 可以完全自托管,确保数据安全和隐私保护。

项目地址: 点我跳转

部署安装

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

复制下列的配置文件

1version: '3.5'
2
3x-environment:
4 &default-back-environment
5 # Database settings
6 POSTGRES_DB: 'taiga'
7 POSTGRES_USER: 'taiga'
8 POSTGRES_PASSWORD: 'taiga'
9 POSTGRES_HOST: 'taiga-db'
10 # Taiga settings
11 TAIGA_SECRET_KEY: 'taiga-secret-key'
12 TAIGA_SITES_SCHEME: 'http'
13 TAIGA_SITES_DOMAIN: 'localhost:9000'
14 TAIGA_SUBPATH: ''
15 # Email settings
16 EMAIL_BACKEND: 'django.core.mail.backends.console.EmailBackend'
17 DEFAULT_FROM_EMAIL: 'changeme@example.com'
18 EMAIL_USE_TLS: 'True'
19 EMAIL_USE_SSL: 'False'
20 EMAIL_HOST: 'smtp.host.example.com'
21 EMAIL_PORT: '587'
22 EMAIL_HOST_USER: 'user'
23 EMAIL_HOST_PASSWORD: 'password'
24 # Rabbitmq settings
25 RABBITMQ_USER: 'taiga'
26 RABBITMQ_PASS: 'taiga'
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: 'taiga'
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: 'taiga'
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: 'taiga'
109 TAIGA_SECRET_KEY: 'taiga-secret-key'
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: 'taiga'
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'
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 密钥,请设置为一个随机字符串

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

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

创建成功后可以访问 ip:9000 到这里就可以正常显示项目了

首次使用需要创建超级用户,在 NAS 终端中执行:

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

穿透公网

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

点击创建新隧道

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

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

本地 IP 默认就可以

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

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

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

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

填写完毕点击确定

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

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

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

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

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

本篇教程结束