0


开源项目管理工具Plane

在这里插入图片描述

本文软件由网友

不长到一百四誓不改名

推荐,不过这次是在他推荐之前,就已经完成了的 🙂

什么是 Plane ?

Plane

是一个简单的、可扩展的、开源的项目和产品管理工具。它允许用户从一个基本的任务跟踪工具开始,逐步采用各种项目管理框架,如

Agile

Waterfall

等。

命令行安装

在群晖上以 Docker 方式安装。

老苏折腾时,

latest

对应

0.7

新建安装目录

# 新建文件夹 plane 和 子目录mkdir -p /volume1/docker/plane/{pgdata,redisdata,uploads}# 进入 plane 目录cd /volume1/docker/plane

env.txt

官方的提供了

.env.example

文件,地址在:https://github.com/makeplane/plane/blob/develop/.env.example,你可以在本地复制粘贴生成后,上传到

plane

目录,也可以直接用下面的命令下载

# 下载 env.txtwget -O env.txt https://raw.githubusercontent.com/makeplane/plane/develop/.env.example

# 下不动的话可以加个代理wget -O env.txt https://ghproxy.com/raw.githubusercontent.com/makeplane/plane/develop/.env.example

虽然参数很多,但是要跑起来,需要修改的并不多,原本的内容老苏只填了

email

部分,因为要通过邮件邀请团队成员

# Email Settings
EMAIL_HOST=smtp.88.com
[email protected]
EMAIL_HOST_PASSWORD=<第三方邮件客户端密码>
EMAIL_PORT=25
EMAIL_FROM="laosu <[email protected]>"

其他的部分未做修改,但是要跑起来,还需要在文件的最后面加上

3

行内容

# Auto generated and Required that will be generated from setup.sh
NEXT_PUBLIC_API_BASE_URL=https://plane.laosu.ml:444
WEB_URL=https://plane.laosu.ml:444
SECRET_KEY=IVBfieeGdbKOIXC1a+Pqb989ju41Swyv6sxNUZLv6ZA=
  • SECRET_KEY:可以用命令 openssl rand -base64 32 来生成;

在这里插入图片描述

  • NEXT_PUBLIC_API_BASE_URL:后端 API 的地址;
  • WEB_URL:前端网页地址;

以上两个地址,老苏曾经尝试过用局域网

IP
  • 端口,但在登录时会显示
    404
    
    错误,实际地址变成了
    http://192.168.0.197:3639/api/api/users/me/
    
    , 显然应该是多了一层
    api
    
    ,不确定是不是
    bug
    
    ,用域名或者干脆留空的话,是可以正常登录的
# Default Creds
DEFAULT_EMAIL="[email protected]"
DEFAULT_PASSWORD="password123"

设置的是缺省的用户和密码,你可以改出你自己的

nginx.conf

将下面的内容保存为

nginx.conf
upstream plane {
    server plane-nginx:80;
}

error_log /var/log/nginx/error.log;

server {
    listen       80;
    root   /www/data/;
    access_log /var/log/nginx/access.log;
    location / {
        proxy_pass http://plane-web:3000/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /api/ {
        proxy_pass http://plane-api:8000/api/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /uploads/ {
        proxy_pass http://plane-minio:9000/uploads/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

docker-compose.yml

官方的示例:https://github.com/makeplane/plane/blob/develop/docker-compose-hub.yml

你可以下载下来自己修改

# 下载 docker-compose.ymlwget -O docker-compose.yml https://raw.githubusercontent.com/makeplane/plane/develop/docker-compose-hub.yml

# 下不动的话可以加个代理wget -O docker-compose.yml https://ghproxy.com/raw.githubusercontent.com/makeplane/plane/develop/docker-compose-hub.yml

也可以直接将下面老苏修改后的内容保存为

docker-compose.yml

文件

version:"3.8"services:plane-web:container_name: plane-frontend
    image: makeplane/plane-frontend:latest
    restart: always
    command: /usr/local/bin/start.sh
    environment:NEXT_PUBLIC_API_BASE_URL: ${NEXT_PUBLIC_API_BASE_URL}NEXT_PUBLIC_GOOGLE_CLIENTID:0NEXT_PUBLIC_GITHUB_APP_NAME:0NEXT_PUBLIC_GITHUB_ID:0NEXT_PUBLIC_SENTRY_DSN:0NEXT_PUBLIC_ENABLE_OAUTH:0NEXT_PUBLIC_ENABLE_SENTRY:0#ports:#  - 3636:3000plane-api:container_name: plane-backend
    image: makeplane/plane-backend:latest
    restart: always
    command: ./bin/takeoff
    environment:DJANGO_SETTINGS_MODULE: plane.settings.production
      DATABASE_URL: postgres://${PGUSER}:${PGPASSWORD}@${PGHOST}:5432/${PGDATABASE}REDIS_URL: redis://plane-redis:6379/
      EMAIL_HOST: ${EMAIL_HOST}EMAIL_HOST_USER: ${EMAIL_HOST_USER}EMAIL_HOST_PASSWORD: ${EMAIL_HOST_PASSWORD}EMAIL_PORT: ${EMAIL_PORT}EMAIL_FROM: ${EMAIL_FROM}AWS_REGION: ${AWS_REGION}AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}AWS_S3_BUCKET_NAME: ${AWS_S3_BUCKET_NAME}FILE_SIZE_LIMIT: ${FILE_SIZE_LIMIT}WEB_URL: ${WEB_URL}GITHUB_CLIENT_SECRET: ${GITHUB_CLIENT_SECRET}DISABLE_COLLECTSTATIC:1DOCKERIZED:1OPENAI_API_KEY: ${OPENAI_API_KEY}GPT_ENGINE: ${GPT_ENGINE}SECRET_KEY: ${SECRET_KEY}DEFAULT_EMAIL: ${DEFAULT_EMAIL}DEFAULT_PASSWORD: ${DEFAULT_PASSWORD}USE_MINIO:1depends_on:- plane-db
      - plane-redis
    #ports:#  - 3637:8000plane-worker:container_name: plane-worker
    image: makeplane/plane-worker:latest
    restart: always
    command: ./bin/worker
    environment:DJANGO_SETTINGS_MODULE: plane.settings.production
      DATABASE_URL: postgres://${PGUSER}:${PGPASSWORD}@${PGHOST}:5432/${PGDATABASE}REDIS_URL: redis://plane-redis:6379/
      EMAIL_HOST: ${EMAIL_HOST}EMAIL_HOST_USER: ${EMAIL_HOST_USER}EMAIL_HOST_PASSWORD: ${EMAIL_HOST_PASSWORD}EMAIL_PORT: ${EMAIL_PORT}EMAIL_FROM: ${EMAIL_FROM}AWS_REGION: ${AWS_REGION}AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}AWS_S3_BUCKET_NAME: ${AWS_S3_BUCKET_NAME}FILE_SIZE_LIMIT: ${FILE_SIZE_LIMIT}WEB_URL: ${WEB_URL}GITHUB_CLIENT_SECRET: ${GITHUB_CLIENT_SECRET}DISABLE_COLLECTSTATIC:1DOCKERIZED:1OPENAI_API_KEY: ${OPENAI_API_KEY}GPT_ENGINE: ${GPT_ENGINE}SECRET_KEY: ${SECRET_KEY}DEFAULT_EMAIL: ${DEFAULT_EMAIL}DEFAULT_PASSWORD: ${DEFAULT_PASSWORD}USE_MINIO:1depends_on:- plane-api
      - plane-db
      - plane-redis

  plane-db:container_name: plane-db
    image: postgres:14restart: always
    command: postgres -c 'max_connections=1000'
    environment:POSTGRES_USER: ${PGUSER}POSTGRES_DB: ${PGDATABASE}POSTGRES_PASSWORD: ${PGPASSWORD}volumes:- ./pgdata:/var/lib/postgresql/data

  plane-redis:container_name: plane-redis
    image: redis:6.2restart: always
    volumes:- ./redisdata:/data

  plane-minio:container_name: plane-minio
    image: minio/minio
    volumes:- ./uploads:/export
    environment:MINIO_ROOT_USER: ${AWS_ACCESS_KEY_ID}MINIO_ROOT_PASSWORD: ${AWS_SECRET_ACCESS_KEY}command: server /export --console-address ":9090"
    #ports:#  - 3638:9000createbuckets:image: minio/mc
    depends_on:- plane-minio
    entrypoint:>
      /bin/sh -c " /usr/bin/mc config host add plane-minio http://plane-minio:9000 \$AWS_ACCESS_KEY_ID \$AWS_SECRET_ACCESS_KEY; /usr/bin/mc mb plane-minio/\$AWS_S3_BUCKET_NAME; /usr/bin/mc anonymous set download plane-minio/\$AWS_S3_BUCKET_NAME; exit 0; "plane-nginx:container_name: plane-nginx
    image: nginx
    ports:- 3639:80volumes:- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:- plane-web
      - plane-api

然后执行下面的命令

# 新建文件夹 plane 和 子目录mkdir -p /volume1/docker/plane/{pgdata,redisdata,uploads}# 进入 plane 目录cd /volume1/docker/plane

# 将 docker-compose.yml、env.txt、nginx.conf 放入当前目录# 一键运行  docker-compose --env-file env.txt up -d

在这里插入图片描述

如果没意外的话,除了

plane_createbuckets_1

外,另外

7

个容器应该都是正常启动的

在这里插入图片描述

老苏将用到的

env.txt

config.conf
docker-compose.yml

文件放到了 https://github.com/wbsu2003/synology/tree/main/Plane,方便大家对比着看

运行

在浏览器中输入

https://plane.laosu.ml:444

就能看到登录界面

在这里插入图片描述

默认用户:

[email protected]

,密码为:

password123

需要设置角色

在这里插入图片描述

创建工作区

在这里插入图片描述

邀请成员

输入要邀请的人员

在这里插入图片描述

可以一次输入多个邮件地址

在这里插入图片描述

接下来的提示界面看看就可以了

在这里插入图片描述

完成后就可以看到

Dashboard

界面了

在这里插入图片描述

团队成员

如果邮件设置没问题,受邀请的成员很快会收到邮件

在这里插入图片描述

在这里插入图片描述

但是实际上地址存在问题,获取的地址是

http:///workspace-member-invitation/[email protected]

需要自行添加域名后变成

https://plane.laosu.ml:444/workspace-member-invitation/[email protected]

可以选择接受或者忽略

在这里插入图片描述

尚未接受邀请的成员会有

Pending

标志

在这里插入图片描述

接下来就可以开始建项目(

Create Project

),功能就留给需要的人自己摸索吧

在这里插入图片描述

遗留问题

  1. 就是上面提到的邮件的邀请链接问题;
  2. 上传图片没解决;

不知道是设置问题还是软件本身的

bug

参考文档

makeplane/plane: Plane helps you track your issues, epics, and product roadmaps in the simplest way possible.
地址:https://github.com/makeplane/plane

Plane - The open source project management tool
地址:https://plane.so/

Plane Documentation
地址:https://docs.plane.so/

Plane - Open-source project planning tool to streamline issues, sprints, and product roadmaps. (W.I.P., Linear/JIRA Alternative) - New release update v0.2-dev 🚀 🍰 : selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/10q7h1z/plane_opensource_project_planning_tool_to/


本文转载自: https://blog.csdn.net/wbsu2004/article/details/131508854
版权归原作者 杨浦老苏 所有, 如有侵权,请联系我们删除。

“开源项目管理工具Plane”的评论:

还没有评论