简介
Plane 是一个高度可扩展的开源项目管理工具,支持多种框架类型,如敏捷、看板、瀑布和时间线。它是 Jira、Asana 和 Linear 等平台的替代方案,允许您使用 Docker 或 Kubernetes 等工具在容器化环境中自托管所有应用程序资源。
本指南将介绍如何在云服务器上部署 Plane,并设置具有可信 SSL 证书、电子邮件通知和身份验证方法的问题跟踪环境,以确保应用程序的安全。
接下来,我将一步一步教大家如何进行安装和部署!!
准备工作
服务器准备
必要前提:
- 一个充满求知欲的大脑。
- 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。
- 预先部署PostgreSQL,可参考这篇文章: https://blog.csdn.net/weixin_53510183/article/details/144380103
- 预先部署Minio,可参考这篇文章:https://blog.csdn.net/weixin_53510183/article/details/143511235
我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。
注册链接: https://rainyun.ivwv.site
创建雨云服务器
以下步骤仅供参考,请根据实际需求选择配置。
- 点击 云产品 → 云服务器 → 立即购买。
- 选择距离你较近的区域,以保证低延迟。
- 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
- 最后按照提示进行购买。
- 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。
- 我们使用
PowerShell
进行SSH
远程连接到服务器,Win+R
打开运行窗口,输入powershell
后点击确定。
- 到此为止,我们的云服务器就远程连接上了。
开始部署
先决条件
- 将用户添加到Docker组。例如,
linuxuser
。
$ usermod -aG docker linuxuser
- 切换到非root用户账户。
$ su linuxuser
Plane_66">创建Plane数据库
应用程序的Docker环境中安装的默认Plane PostgreSQL数据库在生产环境中无法提供最佳性能。将Plane数据库权限转移到用于PostgreSQL的数据库,以提高应用程序的可用性和性能,并实现异地数据存储。请按照以下步骤使用用于PostgreSQL的数据库创建一个新的Plane数据库。
- 使用连接字符串登录到用于PostgreSQL的数据库。将
pg.domain.com
替换为实际的数据库主机URL。
$ psql postgres://pgadmin:password@pg.domain.com:16751/defaultdb
当提示时,输入用于PostgreSQL的数据库用户密码以访问集群。
- 创建一个用于Plane的新数据库。例如,
planedb
。
defaultdb=> CREATE DATABASE planedb;
- 切换到该数据库。
defaultdb=> \\c planedb;
- 创建一个新的示例表,以验证PostgreSQL用户是否具有在数据库上的
CREATE
权限。
planedb=> CREATE TABLE people ( country VARCHAR(255), continent VARCHAR(255), age INT);
- 退出PostgreSQL控制台。
planedb=> \\q
Plane需要一个超级用户PostgreSQL账户,如pgadmin
,才能成功迁移数据并在数据库中创建所有必要的资源。在使用外部数据库时,由于需要根级权限,非超级用户账户与Plane不兼容。
Plane_105">在服务器上安装Plane
- 创建一个新的Plane项目目录。
$ mkdir plane
- 切换到该目录。
$ cd plane
- 使用Curl下载最新的Plane安装脚本。
$ curl -fsSL -o setup.sh https://raw.githubusercontent.com/makeplane/plane/master/deploy/selfhost/install.sh
- 授予脚本执行权限。
$ chmod +x setup.sh
- 运行Plane安装脚本。
$ ./setup.sh
输出:
---------------------------------------
____ _
| _ \\| | __ _ _ __ ___
| |_) | |/ _` | '_ \\ / _ \\
| __/| | (_| | | | | __/
|_| |_|\\__,_|_| |_|\\___|---------------------------------------
Project management tool from the future
---------------------------------------Select a Action you want to perform:1) Install (x86_64)2) Start3) Stop4) Restart5) Upgrade6) View Logs7) ExitAction []:
输入1
作为操作值,然后按Enter键在服务器上安装初始Plane配置。
验证过程是否成功,输出应类似于以下内容:
Installing Plane..........
WARN[0000] /root/plane/plane-app/docker-compose.yaml: `version` is obsolete
[+] Pulling 10/10
✔ plane-redis Skipped - Image is already present locally 0.0s
✔ worker Skipped - Image is already being pulled by beat-worker 0.0s
✔ api Skipped - Image is already being pulled by beat-worker 0.0s
✔ migrator Skipped - Image is already being pulled by beat-worker 0.0s
✔ plane-db Skipped - Image is already present locally 0.0s
✔ proxy Pulled 2.5s
✔ plane-minio Pulled 2.7s
✔ space Pulled 2.5s
✔ beat-worker Pulled 2.5s
✔ web Pulled 2.5sLatest version is now available for you to use
输入7
作为操作值,然后按Enter键退出安装脚本。
列出项目目录文件,并验证是否有一个新的plane-app
目录可用。
$ ls
切换到该目录。
$ cd plane-app
列出所有目录文件,以验证是否有新的docker-compose.yaml
和.env
文件可用。
$ ls -a
输出:
. .. archive docker-compose.yaml .env
打开.env
环境变量文件以修改Plane安装值。
$ nano.env
找到NGINX_PORT
字段,将默认端口80
替换为另一个端口,如8080
。
NGINX_PORT=8080
保存文件。
找到WEB_URL
,将http://localhost
替换为你的域名URL。例如,https://plane.example.com
。
WEB_URL=https://plane.example.com
保存文件。
找到NEXT_PUBLIC_DEPLOY_URL
字段,将http://localhost/spaces
更改为你的域名URL,同时保持/spaces
路径。
NEXT_PUBLIC_DEPLOY_URL=https://plane.example.com/spaces
保存文件。
滚动到CORS_ALLOWED_ORIGINS
字段,将http://localhost
更改为你的域名URL。
CORS_ALLOWED_ORIGINS=https://plane.example.com
保存文件。
找到DB Settings
部分,将所有默认变量值替换为你的用于PostgreSQL的数据库详细信息。特别是,将DATABASE_URL
变量值替换为你完整的用于PostgreSQL的数据库连接字符串,如下所示配置。
#DB SETTINGS
PGHOST=pg.domain.com
PGDATABASE=planedb
POSTGRES_USER=pgadmin
POSTGRES_PASSWORD=password
POSTGRES_DB=planedb
PGDATA=/var/lib/postgresql/data
DATABASE_URL=postgres://pgadmin:password@pg.domain.com:16751/planedb
保存并关闭文件。
根据变量字段,将上述用于PostgreSQL的数据库连接详细信息替换为你的匹配值:
- PGHOST:你的用于PostgreSQL的数据库URL。
- PGDATABASE:要与Plane一起使用的目标PostgreSQL数据库。
- POSTGRES_USER:你的PostgreSQL数据库用户名。
- POSTGRES_PASSWORD:你的PostgreSQL数据库用户密码。
- POSTGRES_DB:要与Plane一起使用的PostgreSQL数据库。
- PGDATA:存储PostgreSQL数据文件的主机目录路径。
- DATABASE_URL:连接到数据库时要使用的用于PostgreSQL的数据库连接字符串。
滚动到DATA STORE SETTINGS
部分,设置Plane与对象存储的连接。
使用你的对象存储详细信息修改默认变量值,以便与Plane一起使用。
# DATA STORE SETTINGS
USE_MINIO=0
AWS_REGION=ewr
AWS_ACCESS_KEY_ID=example-access-key
AWS_SECRET_ACCESS_KEY=example-secret
AWS_S3_ENDPOINT_URL=https://ewr1.objects.com
AWS_S3_BUCKET_NAME=plane
MINIO_ROOT_USER=access-key
MINIO_ROOT_PASSWORD=secret-key
BUCKET_NAME=uploads
FILE_SIZE_LIMIT=5242880
保存并关闭文件。
将上述对象存储示例连接详细信息替换为你的实际值。以下是每个变量的含义:
- USE_MINIO:值
0
禁用默认的MinIO对象存储并启用外部访问变量。 - AWS_REGION:设置你的对象存储位置。根据部署区域,将
ewr
替换为你的对象存储位置ID。 - AWS_ACCESS_KEY_ID:设置与Plane连接时要使用的对象存储访问密钥。将
example-access-key
替换为你实际的对象存储访问密钥字符串。 - AWS_SECRET_ACCESS_KEY:设置用于验证访问密钥的对象存储秘密密钥。将
example-secret
替换为你实际的秘密密钥。 - AWS_S3_ENDPOINT_URL:设置用于存储Plane数据文件的对象存储主机URL。将
ewr1.objects.com
替换为你实际的对象存储URL。 - AWS_S3_BUCKET_NAME:定义要与Plane一起使用的对象存储桶。如果存储桶不存在,安装时将自动创建。将
plane
值替换为你所需的存储桶名称。
切换回主Plane项目目录。
$ cd ../
再次运行Plane安装脚本。
$ ./setup.sh
输入操作值2
(启动),然后按Enter键启动Plane安装。
在安装过程中,所有数据库对象将迁移到你的用于PostgreSQL的数据库,并且对象存储将用作默认存储介质。安装成功后,你的输出应如下所示:
✔ web Pulled 2.7s
✔ api Pulled 2.6s
✔ migrator Pulled 2.7s
✔ beat-worker Pulled 2.7s
✔ proxy Pulled 2.7s
✔ worker Pulled 2.8s
✔ space Pulled 2.6s
⠏ Network plane-app_default Created 2.9s
⠇ Volume "plane-app_redisdata" Created 2.8s
⠇ Volume "plane-app_uploads" Created 2.8s
⠇ Volume "plane-app_pgdata" Created 2.8s
✔ Container plane-app-plane-db-1 Started 0.6s
✔ Container plane-app-plane-redis-1 Started 0.6s
✔ Container plane-app-plane-minio-1 Started 0.5s
✔ Container plane-app-api-1 Started 0.9s
✔ Container plane-app-migrator-1 Started 1.1s
✔ Container plane-app-worker-1 Started 1.3s
✔ Container plane-app-beat-worker-1 Started 1.4s
✔ Container plane-app-web-1 Started 1.7s
✔ Container plane-app-space-1 Started 2.1s
✔ Container plane-app-proxy-1 Started 2.7s
1) Install (x86_64)
2) Start
3) Stop
4) Restart
5) Upgrade
6) View Logs
7) Exit
输入操作值7
,然后按Enter键关闭Plane安装脚本并验证安装。
查看正在运行的Docker容器列表,并验证所有活动的Plane实例。
$ docker ps
输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3709c99e7f33 makeplane/plane-proxy:latest "/docker-entrypoint.…" 2 minutes ago Up About a minute 0.0.0.0:8080->80/tcp, :::8080->80/tcp plane-app-proxy-1
747480ec5bd6 makeplane/plane-space:latest "docker-entrypoint.s…" 2 minutes ago Up About a minute 3000/tcp plane-app-space-1
9ed0792056e5 makeplane/plane-frontend:latest "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 3000/tcp plane-app-web-1
da03e3631f32 makeplane/plane-backend:latest "./bin/beat" 2 minutes ago Up 2 minutes 8000/tcp plane-app-beat-worker-1
46eeef24aad2 makeplane/plane-backend:latest "./bin/worker" 2 minutes ago Up 2 minutes 8000/tcp plane-app-worker-1
a64a2737f813 makeplane/plane-backend:latest "./bin/takeoff" 2 minutes ago Up 2 minutes 8000/tcp plane-app-api-1
eac0ca80f5d6 minio/minio "/usr/bin/docker-ent…" 2 minutes ago Up 2 minutes 9000/tcp plane-app-plane-minio-1
12c94f7b2291 redis:6.2.7-alpine "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 6379/tcp plane-app-plane-redis-1
662eea3ef147 postgres:15.2-alpine "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 5432/tcp plane-app-plane-db-1
向Plane主机端口8080
发送HTTP请求,测试对应用程序接口的访问。
$ curl 127.0.0.1:8080
你的输出应如下所示:
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>Plane | Simple, extensible, open-source project management tool.</title><meta name="next-head-count" content="3"/><meta property="og:site_name" content="Plane | Simple, extensible, open-source project management tool."/><meta property="og:title" content="Plane | Simple, extensible, open-source project management tool."/><meta property="og:url" content="<https://app.plane.so/>"/><meta name="description" content="Open-source project management tool to manage issues, sprints, and product roadmaps with peace of mind."/><meta property="og:description" content="Open-source project management tool to manage issues, sprints, and product roadmaps with peace of mind."/><meta name="keywords" content="software development, plan, ship, software, accelerate, code management, release management, project management, issue tracking, agile, scrum, kanban, collaboration"/><meta name="twitter:site" content="@Plane | Simple, extensible, open-source project management tool."/><meta name="theme-color" content="#fff"/><link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png"/><link rel="manifest" href="/site.webmanifest.json"/><link rel="shortcut icon" href="/favicon/favicon.ico"/><link rel="preload" href="/_next/static/css/54a545252dd6995d.css" as="style" crossorigin=""/><link rel="stylesheet" href="/_next/static/css/54a545252dd6995d.css" crossorigin="" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-1b4c5bc8f318bd96.js" defer="" crossorigin="">
根据你的Plane配置,应用程序在由.env
文件中的NGINX_PORT
值定义的主机端口8080
上运行。连接成功时,请求将输出表示成功连接到Plane应用程序的HTML原始数据。
Plane_391">保护Plane
Plane是一个项目跟踪平台,通常用于特定的团队、部门或组织。使用生产环境实践(包括安全防火墙规则和可信SSL证书)来保护Plane,以便使用你的域名公开应用程序。请按照以下部分使用Let’s Encrypt证书颁发机构(CA)生成有效的SSL证书,并通过默认服务器防火墙应用程序仅允许连接端口。
配置服务器防火墙
默认情况下,Uncomplicated Firewall(UFW)作为Ubuntu服务器上的默认防火墙包可用且处于活动状态。配置UFW以仅允许通过防火墙的连接端口,以实现对Plane应用程序资源的安全访问。
确认防火墙状态。
$ sudo ufw status
输出:
Status: activeTo Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
如果已禁用,允许SSH端口22
并使用以下命令启用防火墙。
$ sudo ufw allow 22/tcp$ sudo ufw enable
允许HTTP连接端口80
通过防火墙。
$ sudo ufw allow 80/tcp
允许HTTPS连接端口443
以启用安全的TLS/SSL连接。
$ sudo ufw allow 443/tcp
重新加载防火墙表以应用新的端口更改。
$ sudo ufw reload
查看防火墙表以验证所有可用端口。
$ sudo ufw status
输出:
Status: activeTo Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
Plane_464">安装Nginx Proxy Manager以使用域名公开Plane
Nginx Proxy Manager是一个反向代理应用程序,可在服务器上安全地公开Docker应用程序以供外部访问。在以下步骤中,安装Nginx Proxy Manager并将其附加到内部Plane Docker网络。此外,使用在.env
配置中定义的域名URLplane.example.com
启用对Plane的访问。
- 打印当前工作目录并验证你正在使用Plane项目目录。
$ pwd
输出:
/home/user/plane
- 创建一个新的数据目录来存储Docker文件。例如,
nginx-proxy-man
。
$ mkdir nginx-proxy-man
- 切换到新的数据目录。
$ cd nginx-proxy-man
- 创建一个新的Docker Compose文件。
$ touch docker-compose.yaml
- 使用你选择的文本编辑器(如Nano)打开文件。
$ nano docker-compose.yaml
- 将以下内容添加到文件中。
version: '3.8'
services:app:image: 'jc21/nginx-proxy-manager:latest'container_name: nginx-proxy-managerrestart: unless-stoppedports:- '80:80'- '81:81'- '443:443'volumes:-./data:/data-./letsencrypt:/etc/letsencrypt
保存并关闭文件。
上述Docker配置创建了一个新的Nginx Proxy Manager容器,并在以下主机端口上公开应用程序以供访问:
- 80:Nginx Proxy Manager用于公开应用程序的默认HTTP端口。
- 81:启用对Nginx Proxy Manager控制面板的访问。
- 443:使用Nginx Proxy Manager生成的有效SSL证书为公开的应用程序启用安全的HTTPS访问。
测试对HTTP和HTTPS主机端口的访问,以验证服务器上没有正在使用的现有冲突。
$ sudo lsof -i :80,443
如果没有应用程序正在使用这些端口,你的输出将为空,类似于以下内容:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
如果有任何应用程序正在使用这些端口,请使用Kill
命令停止该应用程序,以避免与Nginx Proxy Manager发生端口冲突。例如,停止进程ID1234
。
$ kill 1234
使用你的Docker Compose文件安装Nginx Proxy Manager。
$ docker compose up -d
监控安装过程并验证其是否成功,输出应类似于以下内容:
0ce5af7edd8a: Pull complete
0745a37aa26c: Pull complete
5460cddfb366: Pull complete
Digest: sha256:7f67eed835ed95108623183b35471f953630a7be480d6a2009bd79c68667ac77
Status: Downloaded newer image for jc21/nginx-proxy-manager:latest
Creating nginx-proxy-manager... done
查看所有正在运行的Docker容器,并验证Nginx Proxy Manager容器是否处于活动状态。
$ docker ps
输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b5cccf3a26a jc21/nginx-proxy-manager:latest "/init" 19 seconds ago Up 18 seconds 0.0.0.0:80-81->80-81/tcp, :::80-81->80-81/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx-proxy-manager
3709c99e7f33 makeplane/plane-proxy:latest "/docker-entrypoint.…" 5 minutes ago Up 5 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp plane-app-proxy-1
747480ec5bd6 makeplane/plane-space:latest "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 3000/tcp plane-app-space-1
9ed0792056e5 makeplane/plane-frontend:latest "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 3000/tcp plane-app-web-1
da03e3631f32 makeplane/plane-backend:latest "./bin/beat" 5 minutes ago Up 5 minutes 8000/tcp plane-app-beat-worker-1
46eeef24aad2 makeplane/plane-backend:latest "./bin/worker" 5 minutes ago Up 5 minutes 8000/tcp plane-app-worker-1
a64a2737f813 makeplane/plane-backend:latest "./bin/takeoff" 5 minutes ago Up 5 minutes 8000/tcp plane-app-api-1
eac0ca80f5d6 minio/minio "/usr/bin/docker-ent…" 5 minutes ago Up 5 minutes 9000/tcp plane-app-plane-minio-1
12c94f7b2291 redis:6.2.7-alpine "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 6379/tcp plane-app-plane-redis-1
662eea3ef147 postgres:15.2-alpine "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 5432/tcp plane-app-plane-db-1
验证可用的Docker网络,并记下Plane网络名称。
$ docker network ls
输出:
NETWORK ID NAME DRIVER SCOPE
7ec823c55c9d bridge bridge local
fa2aca31dd03 host host local
2254ef893bb3 nginx-proxy-man_default bridge local
2ed043be89df none null local
ce8716e47741 plane-app_default bridge local
将Nginx Proxy Manager附加到Plane网络,以启用对应用程序的内部访问。
$ docker network connect plane-app_default nginx-proxy-manager
使用Web浏览器(如Firefox)访问服务器IP地址的端口81
,以打开Nginx Proxy Manager控制面板。将172.16.0.2
替换为你的实际服务器IP地址。
http://172.16.0.2:81
登录到你的账户(电子邮件地址)。
输入以下默认管理员信息以登录应用程序:
- 用户:
admin@example.com
- 密码:
changeme
-
更改管理用户详细信息或关闭**“Edit User”**对话框以访问应用程序控制面板。
-
单击应用程序导航菜单上的Hosts,然后选择Proxy Hosts以创建新的主机配置。
-
单击**“Add Proxy Host”** ,打开主机配置页面。
-
在**“Domain Names”字段中输入你的域名,然后单击“Add”**叠加层以保存你的主机域。
-
单击**“Scheme”字段并保留“http”**作为连接类型以访问内部 Plane 网络。
-
在 Forward Hostname/IP 字段中输入你的主平面容器名称
plane-app-proxy-1
。 -
在Forward Port字段中输入内部平面代理容器端口
80
。 -
将**“Publicly Accessible”保留为访问列表值,然后单击“Save”**以应用新的主机更改。
-
打开新的 Web 浏览器选项卡并访问你的域以验证对 Plane 应用程序界面的访问。
http://plane.example.com
Plane__SSL__649">生成与 Plane 一起使用的可信 SSL 证书
Nginx 代理管理器使用 Let’s Encrypt 作为默认的 SSL 证书颁发机构。在以下步骤中,修改 Plane 主机配置并生成受信任的 SSL 证书以与你的域名一起使用。
-
登录 Nginx 代理管理器控制面板。
-
单击Hosts 以访问你的主机配置。
-
单击Status 旁边的选项**:符号,然后从列表中选择Edit**以修改主机配置。
-
单击Edit Host弹出对话框中的SSL选项卡。
-
单击SSL Certificate 字段并选择
Request a new SSL certificate with Let's Encrypt
从列表中。 -
切换Force SSL以启用从 HTTP 到 HTTPS 的自动重定向。
-
输入你的电子邮件地址以与 Let’s Encrypt 证书请求关联。
-
切换I Agree to the Let’s Encrypt Terms of Service选项以同意 SSL 证书颁发机构条款。
-
单击**“Save** **”**应用主机配置更改。
-
打开新的 Web 浏览器选项卡并通过 HTTPS 访问你的域,以使用安全连接验证对 Plane 应用程序的访问。
https://plane.example.com
Plane_677">配置Plane
当安装在服务器上时,Plane 需要额外的配置来设置应用程序结构并邀请其他用户。在以下步骤中,配置 Plane 界面并启用全局选项以激活其他用户以访问你的服务器。
-
打开一个新的 Web 浏览器窗口并使用
/god-mode
路径访问你的 Plane 域以访问应用程序配置屏幕。https://plane.example.com/god-mode
-
在
name@company.com
字段中输入你的电子邮件地址。 -
在
Enter password
字段中输入强密码以与管理员电子邮件关联。 -
单击**“Sign in”**以创建你的 Plane 管理员帐户。
-
单击**“Go to God Mode”** ,进入Plane实例配置页面。
-
在Name of instance中输入所需的 Plane 应用程序名称,然后单击Save Changes以保存实例详细信息。
-
单击导航栏上的Email 以修改你的 Plane 电子邮件通知设置,并为应用程序分配 SMTP 主机和发件人地址以发送用户电子邮件。
-
单击Save Changes以应用你的平面应用程序设置。
-
单击顶部栏上的Exit 符号退出God Mode并访问你的飞机实例。
-
在**“Name it”字段中输入新的工作区名称,验证你的域 URL,然后单击“Make it live”**以创建工作区。
-
在输入你
Enter your full name
段中输入你的第一个用户名,选择你的飞机使用类别以个性化工作区,然后单击Continue 应用新的更改。 -
输入你的团队电子邮件地址并选择适当的权限来分配新的工作区用户。
-
单击Invite members向用户电子邮件地址发送电子邮件通知,或单击Do this later以跳过邀请过程,具体取决于你的电子邮件服务器设置。
-
确认你的新 Plane 实例工作区,然后单击**“Take a Product Tour”**以探索所有应用程序功能,例如周期、视图、模块、分析和问题。
-
单击Create my first project 以设置第一个工作区项目并访问主应用程序界面。
-
要邀请其他团队成员加入 Plane 应用程序,请单击工作区名称并选择Settings 以访问项目Members 列表。
-
要修改你的应用程序设置,请单击左上方栏上的用户名图标,然后选择Enter God Mode以访问实例配置页面。
总结
在本指南中,你已成功在 云服务器上部署 Plane 并使用生产环境设置配置应用程序。 Managed Database for PostgreSQL 作为主数据库,而 对象存储则存储所有 Plane 应用程序资产。这提高了实例可用性和性能,类似于 Jira 和 Linear 等闭源应用程序。有关更多信息,请访问Plane 官方文档。
相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site