Taiga Docker

ℹ️ 如果您已经在使用taiga-docker,请按照这个迁移指南使用新的基于.env的部署方式。

注意:您可以访问旧版本的Docker安装指南,仅适用于早期版本的Taiga(6.6.0之前的版本)。

入门

本节旨在通过Docker和Docker Compose,用简单的两步让Taiga运行起来。

如果您没有安装Docker,请从docker.com安装Docker(版本19.03.0以上)。

此外,您需要熟悉Docker、Docker Compose以及Docker仓库。

注意:stable分支用于生产环境的Taiga部署,main分支则用于开发目的。

启动应用程序

$ ./launch-taiga.sh

几秒钟后,当应用程序启动时,您可以使用以下脚本创建超级用户:

$ ./taiga-manage.sh createsuperuser

taiga-manage.sh脚本允许在后台实例中运行manage.py命令:

$ ./taiga-manage.sh [COMMAND]

如果您是在自己的机器上测试它,可以通过http://localhost:9000访问应用程序。如果您是在服务器上部署,则需要按照后文配置主机和Nginx。

文档

我们目前有三个主要的文档中心:

  1. API:用于开发Taiga API的API文档和参考。
  2. 文档:如果您需要在自己的服务器上安装Taiga,可以在这里找到一些指南。
  3. Taiga社区:这是为用户提供支持参考页面的地方。

Bug报告

如果您在Taiga中发现Bug,可以通过以下方式报告:

  • 在Taiga问题页面(推荐方式)
  • 在GitHub问题页面
  • 如果是与tree.taiga.io相关的Bug,请发送邮件至support@taiga.io
  • 如果是安全Bug,请发送邮件至security@taiga.io

我们的一位Taiga开发者会尽快查找并修复问题。

在报告Bug之前,请详细描述如何重现问题、您的操作系统、浏览器及版本,并尽可能提供截图。有时开发者了解如何找到Bug会节省修复时间。

社区

如果您需要帮助设置Taiga,想讨论一些有趣的功能增强,或者有其他问题,请访问Taiga社区。

如果您希望了解版本发布、重要变更等信息,可以订阅我们的新闻通讯(您可以在https://taiga.io页面下滚动找到)并关注我们的Twitter账号@taigaio。

贡献Taiga

有多种方式可以为Taiga平台做出贡献,从补丁到文档及UI增强,请找到最符合您技能的方式。请查看我们的详细贡献指南。

行为准则

帮助我们保持Taiga社区的开放性和包容性。请阅读并遵守我们的行为准则。

许可证

所有提交到Taiga代码库的代码补丁都以MPL 2.0许可。您必须注意不要包含任何不能使用此许可证的代码。

请仔细阅读我们的许可证,如果有任何问题以及贡献政策,请随时联系我们。

配置

我们已经将Taiga的基本配置设置暴露到.env文件中。我们强烈建议您更改或至少审查其内容,以避免使用默认值。

docker-compose.ymldocker-compose-inits.yml都会从此文件读取环境变量,因此,通常情况下您不需要更改它们。只有在需要启用其他自定义或高级配置时,才编辑这些文件。

基本配置

.env文件中,您会找到基本配置变量。如前所述,我们鼓励您编辑这些值,尤其是影响安全性的部分。

数据库设置

这些变量用于创建Taiga的数据库并连接到它。

  • POSTGRES_USER=taiga # 连接PostgreSQL的用户
  • POSTGRES_PASSWORD=taiga # 数据库用户的密码

URL设置

这些变量设置Taiga实例的服务位置及通信层的安全协议。

  • TAIGA_SCHEME=http # 使用"HTTP"或"HTTPS"(安全)连接提供Taiga服务
  • TAIGA_DOMAIN=localhost:9000 # Taiga的基础URL
  • SUBPATH="" # 它将附加到TAIGA_DOMAIN(使用""或"/subpath")
  • WEBSOCKETS_SCHEME=ws # 事件连接协议(使用"ws"或"wss")

默认配置假定Taiga在子域中提供。例如:

如果Taiga在子路径中提供而不是子域,配置应如下所示:

  • TAIGA_SCHEME=https
  • TAIGA_DOMAIN=mycompany.com
  • SUBPATH="/taiga"
  • WEBSOCKETS_SCHEME=wss

密钥设置

此变量允许您在Taiga中设置密钥,用于加密签名。

  • SECRET_KEY="taiga-secret-key" # 请更改为不可预测的值!

邮件设置

默认情况下,电子邮件将打印在标准输出中(EMAIL_BACKEND=console)。如果您有自己的SMTP服务,请将其更改为EMAIL_BACKEND=smtp并使用您的SMTP提供商提供的值配置这些变量:

  • EMAIL_BACKEND=console # 使用SMTP服务器或在控制台中显示电子邮件("smtp"或"console")
  • EMAIL_HOST=smtp.host.example.com # SMTP服务器地址
  • EMAIL_PORT=587 # 默认SMTP端口
  • EMAIL_HOST_USER=user # 连接SMTP服务器的用户
  • EMAIL_HOST_PASSWORD=password # SMTP用户的密码
  • EMAIL_DEFAULT_FROM=changeme@example.com # 自动发送邮件的电子邮件地址
  • EMAIL_USE_TLS/EMAIL_USE_SSL 是互斥的(只能将其中一个设置为True)。
  • EMAIL_USE_TLS=True # 使用TLS(安全)连接到SMTP服务器
  • EMAIL_USE_SSL=False # 使用隐式TLS(安全)连接到SMTP服务器

队列管理器设置

这些变量用于在RabbitMQ服务中传递消息。

  • RABBITMQ_USER=taiga # 连接RabbitMQ的用户
  • RABBITMQ_PASS=taiga # RabbitMQ用户的密码
  • RABBITMQ_VHOST=taiga # RabbitMQ虚拟主机名称
  • RABBITMQ_ERLANG_COOKIE=secret-erlang-cookie # 共享给所有连接RabbitMQ实例的唯一值

附件设置

您可以通过更改令牌的过期时间来配置附件的可访问时长。超出指定秒数后,令牌将过期,但您可以使用有效的令牌获取新的附件URL。

  • ATTACHMENTS_MAX_AGE=360 # 令牌的有效时间(以秒为单位)

遥测设置

为了了解Taiga的使用情况并基于真实场景改进平台,会收集匿名数据。您可以启用此功能,帮助我们改进未来的Taiga版本。

  • ENABLE_TELEMETRY=True

您可以通过将此变量设置为False来选择退出。默认情况下为True

其他自定义选项

所有这些自定义选项默认情况下都是禁用的,您需要在docker-compose.yml中编辑相应的服务部分(或在&default-back-environment组中)并提供有效值以启用它们。请不要修改这些设置,除非您知道自己在做什么。

Django管理员的会话Cookie

Taiga API不使用会话Cookie,因为它是无状态的。然而,Django Admin(/admin/)使用会话Cookie进行身份验证。默认情况下,Taiga配置为在HTTPS后工作。如果您使用的是HTTP(尽管强烈建议不要这样做),您需要配置以下环境变量才能访问Admin后台:

将以下配置添加到&default-back-environment环境中:

  • SESSION_COOKIE_SECURE: "False"
  • CSRF_COOKIE_SECURE: "False"

更多关于这些变量的信息可以在这里找到。

公共注册

默认情况下,公共注册是禁用的。如果您想允许公开注册,您需要同时在前端和后端启用它。

注意:在这些设置中区分大小写非常重要。对于后端,我们使用True,而对于前端,我们使用true(这不是拼写错误,否则将无法正常工作)。

将以下配置添加到&default-back-environment环境中:

  • PUBLIC_REGISTER_ENABLED: "True"

将以下配置添加到taiga-front服务环境中:

  • PUBLIC_REGISTER_ENABLED: "true"

重要提示:

Taiga的默认配置在未启用公共注册选项时,会禁用Gitlab或Github的OAuth按钮。要使用Github/Gitlab登录/注册,确保在您的Taiga实例中已启用公共注册。

GitHub OAuth登录

此功能默认禁用。您可以通过在GitHub上创建一个OAuth应用来启用此功能,详细步骤请参阅GitHub - 创建OAuth应用。在保存应用后,GitHub会显示ID和密钥。

注意:后端使用True,前端使用true。确保GITHUB_API_CLIENT_IDGITHUB_CLIENT_ID的值相同。

将以下配置添加到&default-back-environment环境中:

  • ENABLE_GITHUB_AUTH: "True"
  • GITHUB_API_CLIENT_ID: "github-client-id"
  • GITHUB_API_CLIENT_SECRET: "github-client-secret"
  • PUBLIC_REGISTER_ENABLED: "True"

将以下配置添加到taiga-front服务环境中:

  • ENABLE_GITHUB_AUTH: "true"
  • GITHUB_CLIENT_ID: "github-client-id"
  • PUBLIC_REGISTER_ENABLED: "true"

GitLab OAuth登录

此功能默认禁用。您可以通过在GitLab上配置OAuth 2.0身份提供商来启用此功能,详细步骤请参阅GitLab OAuth文档

注意:后端使用True,前端使用true。确保GITLAB_API_CLIENT_IDGITLAB_CLIENT_IDGITLAB_URL的值相同。

将以下配置添加到&default-back-environment环境中:

  • ENABLE_GITLAB_AUTH: "True"
  • GITLAB_API_CLIENT_ID: "gitlab-client-id"
  • GITLAB_API_CLIENT_SECRET: "gitlab-client-secret"
  • GITLAB_URL: "gitlab-url"
  • PUBLIC_REGISTER_ENABLED: "True"

将以下配置添加到taiga-front服务环境中:

  • ENABLE_GITLAB_AUTH: "true"
  • GITLAB_CLIENT_ID: "gitlab-client-id"
  • GITLAB_URL: "gitlab-url"
  • PUBLIC_REGISTER_ENABLED: "true"

Slack集成

此功能默认禁用。您可以通过以下步骤在您的Taiga实例中启用Slack集成。

注意:后端使用True,前端使用true

将以下配置添加到&default-back-environment环境中:

  • ENABLE_SLACK: "True"

将以下配置添加到taiga-front服务环境中:

  • ENABLE_SLACK: "true"

GitHub导入器

启用此功能后,您将能够从GitHub导入项目。您可以按照GitHub OAuth应用创建文档获取客户端ID和密钥。

注意:后端使用True,前端使用true

将以下配置添加到&default-back-environment环境中:

  • ENABLE_GITHUB_IMPORTER: "True"
  • GITHUB_IMPORTER_CLIENT_ID: "client-id-from-github"
  • GITHUB_IMPORTER_CLIENT_SECRET: "client-secret-from-github"

将以下配置添加到taiga-front服务环境中:

  • ENABLE_GITHUB_IMPORTER: "true"

Jira导入器

启用此功能后,您将能够从Jira导入项目。您可以按照Jira OAuth 1.0a文档获取消费者密钥和公私钥证书。

注意:后端使用True,前端使用true

将以下配置添加到&default-back-environment环境中:

  • ENABLE_JIRA_IMPORTER: "True"
  • JIRA_IMPORTER_CONSUMER_KEY: "consumer-key-from-jira"
  • JIRA_IMPORTER_CERT: "cert-from-jira"
  • JIRA_IMPORTER_PUB_CERT: "pub-cert-from-jira"

将以下配置添加到taiga-front服务环境中:

  • ENABLE_JIRA_IMPORTER: "true"

Trello导入器

启用此功能后,您将能够从Trello导入项目。配置Trello有两种方式:

  1. 访问Trello开发者页面,获取您的开发API密钥和密钥。
  2. 使用新的方法,创建一个Power-Up并生成API密钥和密钥。

注意:后端使用True,前端使用true

将以下配置添加到&default-back-environment环境中:

  • ENABLE_TRELLO_IMPORTER: "True"
  • TRELLO_IMPORTER_API_KEY: "api-key-from-trello"
  • TRELLO_IMPORTER_SECRET_KEY: "secret-key-from-trello"

将以下配置添加到taiga-front服务环境中:

  • ENABLE_TRELLO_IMPORTER: "true"

高级配置

高级配置会忽略docker-compose.ymldocker-compose-inits.yml中的环境变量。如果您正在使用环境变量,可以跳过此部分。

它需要将taiga-backtaiga-front服务的配置文件映射到本地文件,以解锁更多配置选项。

映射config.py文件

taiga-back下载settings/config.py.prod.example文件并重命名:

mv settings/config.py.prod.example settings/config.py

编辑config.py,根据您的配置需求修改以下内容:

  1. Taiga密钥:更改密钥值,并确保与taiga-eventstaiga-protected中的密钥一致。
  2. Taiga URLs:配置Taiga的服务地址,使用TAIGA_URLSITESFORCE_SCRIPT_NAME(见以下示例

配置示例如下:

  • 子域名配置示例
TAIGA_SITES_SCHEME = "https"
TAIGA_SITES_DOMAIN = "taiga.mycompany.com"
FORCE_SCRIPT_NAME = ""

  • 子路径配置示例
TAIGA_SITES_SCHEME = "https"
TAIGA_SITES_DOMAIN = "mycompany.com"
FORCE_SCRIPT_NAME = "/taiga"

检查配置文件的其余部分,如果您需要启用一些高级功能。

将此文件映射到/taiga-back/settings/config.py路径下。请注意,您需要在docker-compose.ymldocker-compose-inits.yml中同时映射此文件。您可以查看docker-compose.yml中的x-volumes部分,以获得映射示例。

映射conf.json文件

taiga-front下载dist/conf.example.json文件并重命名:

mv dist/conf.example.json dist/conf.json

根据您的配置需求编辑此文件:

  • Taiga URLs:配置Taiga的服务地址,使用apieventsUrlbaseHref(见以下示例)。
  • 子域名配置的conf.json示例
{
    "api": "<https://taiga.mycompany.com/api/v1/>",
    "eventsUrl": "wss://taiga.mycompany.com/events",
    "baseHref": "/"
}

  • 子路径配置的conf.json示例
{
    "api": "<https://mycompany.com/taiga/api/v1/>",
    "eventsUrl": "wss://mycompany.com/taiga/events",
    "baseHref": "/taiga/"
}

检查配置文件的其余部分,以确定是否需要启用某些高级功能。

将此文件映射到/taiga-front/dist/conf.json路径下。

配置管理员用户

  1. 启动服务:
$ docker compose up -d

  1. 使用以下命令创建超级用户:
$ docker compose -f docker-compose.yml -f docker-compose-inits.yml run --rm taiga-manage createsuperuser

启动与运行

完成所有安装后,启动所有服务并检查结果:

$ docker compose up -d

配置代理

您的主机配置需要将请求代理到http://localhost:9000

  • 如果Taiga在子域中提供服务
server {
    server_name taiga.mycompany.com;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect off;
        proxy_pass <http://localhost:9000/>;
    }

    # 事件
    location /events {
        proxy_pass <http://localhost:9000/events>;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_connect_timeout 7d;
        proxy_send_timeout 7d;
        proxy_read_timeout 7d;
    }

    # TLS:按照您公司内部的最佳实践进行配置
    # 日志及其他配置
}

  • 如果Taiga在子路径中提供服务
server {
    server_name mycompany.com;

    location /taiga/ {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect off;
        proxy_pass <http://localhost:9000/>;
    }

    # 事件
    location /taiga/events {
        proxy_pass <http://localhost:9000/events>;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_connect_timeout 7d;
        proxy_send_timeout 7d;
        proxy_read_timeout 7d;
    }

    # TLS:按照您公司内部的最佳实践进行配置
    # 日志及其他配置
}

在子路径与子域之间切换

如果您将Taiga的配置从默认的子域名(例如https://taiga.mycompany.com)切换到子路径(例如http://mycompany.com/subpath),或反之,除了调整前述配置外,还应考虑更改TAIGA_SECRET_KEY,以便用户刷新页面时能正常工作。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐