如何部署和配置项目管理工具 Plane - 开源 Jira 替代方案

news/2024/12/19 16:26:40/

简介

Plane 是一个高度可扩展的开源项目管理工具,支持多种框架类型,如敏捷、看板、瀑布和时间线。它是 Jira、Asana 和 Linear 等平台的替代方案,允许您使用 Docker 或 Kubernetes 等工具在容器化环境中自托管所有应用程序资源。

本指南将介绍如何在云服务器上部署 Plane,并设置具有可信 SSL 证书、电子邮件通知和身份验证方法的问题跟踪环境,以确保应用程序的安全。

image.png

接下来,我将一步一步教大家如何进行安装和部署!!

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 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

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

https://img-blog.csdnimg.cn/img_convert/4c16271f125adea69da6ed9e7b2a4226.png

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

https://img-blog.csdnimg.cn/img_convert/414570cd3da48d4cc4bf51489992000b.png

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器Win+R 打开运行窗口,输入 powershell 后点击确定。

https://img-blog.csdnimg.cn/img_convert/c8afbeb764459a37a8451dd2ed8eeff1.png

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器

https://img-blog.csdnimg.cn/img_convert/ea5814f1d1068ca9fa2bb94631cfbdf1.png

  • 到此为止,我们的云服务器就远程连接上了。

开始部署

先决条件

  • 将用户添加到Docker组。例如,linuxuser
$ usermod -aG docker linuxuser
  • 切换到非root用户账户。
$ su linuxuser

Plane_66">创建Plane数据库

应用程序的Docker环境中安装的默认Plane PostgreSQL数据库在生产环境中无法提供最佳性能。将Plane数据库权限转移到用于PostgreSQL的数据库,以提高应用程序的可用性和性能,并实现异地数据存储。请按照以下步骤使用用于PostgreSQL的数据库创建一个新的Plane数据库。

  1. 使用连接字符串登录到用于PostgreSQL的数据库。将pg.domain.com替换为实际的数据库主机URL。
$ psql postgres://pgadmin:password@pg.domain.com:16751/defaultdb

当提示时,输入用于PostgreSQL的数据库用户密码以访问集群。

  1. 创建一个用于Plane的新数据库。例如,planedb
defaultdb=> CREATE DATABASE planedb;
  1. 切换到该数据库。
defaultdb=> \\c planedb;
  1. 创建一个新的示例表,以验证PostgreSQL用户是否具有在数据库上的CREATE权限。
planedb=> CREATE TABLE people ( country VARCHAR(255), continent VARCHAR(255), age INT);
  1. 退出PostgreSQL控制台。
planedb=> \\q

Plane需要一个超级用户PostgreSQL账户,如pgadmin,才能成功迁移数据并在数据库中创建所有必要的资源。在使用外部数据库时,由于需要根级权限,非超级用户账户与Plane不兼容。

Plane_105">在服务器上安装Plane

  1. 创建一个新的Plane项目目录。
$ mkdir plane
  1. 切换到该目录。
$ cd plane
  1. 使用Curl下载最新的Plane安装脚本。
$ curl -fsSL -o setup.sh https://raw.githubusercontent.com/makeplane/plane/master/deploy/selfhost/install.sh
  1. 授予脚本执行权限。
$ chmod +x setup.sh
  1. 运行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的访问。

  1. 打印当前工作目录并验证你正在使用Plane项目目录。
$ pwd

输出:

/home/user/plane
  1. 创建一个新的数据目录来存储Docker文件。例如,nginx-proxy-man
$ mkdir nginx-proxy-man
  1. 切换到新的数据目录。
$ cd nginx-proxy-man
  1. 创建一个新的Docker Compose文件。
$ touch docker-compose.yaml
  1. 使用你选择的文本编辑器(如Nano)打开文件。
$ nano docker-compose.yaml
  1. 将以下内容添加到文件中。
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

image.png

  1. 更改管理用户详细信息或关闭**“Edit User”**对话框以访问应用程序控制面板。

  2. 单击应用程序导航菜单上的Hosts,然后选择Proxy Hosts以创建新的主机配置。

  3. 单击**“Add Proxy Host”** ,打开主机配置页面。

    image.png

  4. 在**“Domain Names”字段中输入你的域名,然后单击“Add”**叠加层以保存你的主机域。

  5. 单击**“Scheme”字段并保留“http”**作为连接类型以访问内部 Plane 网络。

  6. Forward Hostname/IP 字段中输入你的主平面容器名称plane-app-proxy-1

  7. Forward Port字段中输入内部平面代理容器端口80

    image.png

  8. 将**“Publicly Accessible”保留为访问列表值,然后单击“Save”**以应用新的主机更改。

  9. 打开新的 Web 浏览器选项卡并访问你的域以验证对 Plane 应用程序界面的访问。

    http://plane.example.com
    

Plane__SSL__649">生成与 Plane 一起使用的可信 SSL 证书

Nginx 代理管理器使用 Let’s Encrypt 作为默认的 SSL 证书颁发机构。在以下步骤中,修改 Plane 主机配置并生成受信任的 SSL 证书以与你的域名一起使用。

  1. 登录 Nginx 代理管理器控制面板。

  2. 单击Hosts 以访问你的主机配置。

  3. 单击Status 旁边的选项**:符号,然后从列表中选择Edit**以修改主机配置。

    image.png

  4. 单击Edit Host弹出对话框中的SSL选项卡。

  5. 单击SSL Certificate 字段并选择 Request a new SSL certificate with Let's Encrypt 从列表中。

  6. 切换Force SSL以启用从 HTTP 到 HTTPS 的自动重定向。

  7. 输入你的电子邮件地址以与 Let’s Encrypt 证书请求关联。

  8. 切换I Agree to the Let’s Encrypt Terms of Service选项以同意 SSL 证书颁发机构条款。

    image.png

  9. 单击**“Save** **”**应用主机配置更改。

  10. 打开新的 Web 浏览器选项卡并通过 HTTPS 访问你的域,以使用安全连接验证对 Plane 应用程序的访问。

    https://plane.example.com
    

    image.png

Plane_677">配置Plane

当安装在服务器上时,Plane 需要额外的配置来设置应用程序结构并邀请其他用户。在以下步骤中,配置 Plane 界面并启用全局选项以激活其他用户以访问你的服务器

  1. 打开一个新的 Web 浏览器窗口并使用/god-mode路径访问你的 Plane 域以访问应用程序配置屏幕。

    https://plane.example.com/god-mode
    
  2. name@company.com字段中输入你的电子邮件地址。

  3. Enter password字段中输入强密码以与管理员电子邮件关联。

    image.png

  4. 单击**“Sign in”**以创建你的 Plane 管理员帐户。

  5. 单击**“Go to God Mode”** ,进入Plane实例配置页面。

  6. Name of instance中输入所需的 Plane 应用程序名称,然后单击Save Changes以保存实例详细信息。

    image.png

  7. 单击导航栏上的Email 以修改你的 Plane 电子邮件通知设置,并为应用程序分配 SMTP 主机和发件人地址以发送用户电子邮件。

  8. 单击Save Changes以应用你的平面应用程序设置。

  9. 单击顶部栏上的Exit 符号退出God Mode并访问你的飞机实例。

  10. 在**“Name it”字段中输入新的工作区名称,验证你的域 URL,然后单击“Make it live”**以创建工作区。

    image.png

  11. 在输入你Enter your full name段中输入你的第一个用户名,选择你的飞机使用类别以个性化工作区,然后单击Continue 应用新的更改。

  12. 输入你的团队电子邮件地址并选择适当的权限来分配新的工作区用户。

    image.png

  13. 单击Invite members向用户电子邮件地址发送电子邮件通知,或单击Do this later以跳过邀请过程,具体取决于你的电子邮件服务器设置。

  14. 确认你的新 Plane 实例工作区,然后单击**“Take a Product Tour”**以探索所有应用程序功能,例如周期、视图、模块、分析和问题。

    image.png

  15. 单击Create my first project 以设置第一个工作区项目并访问主应用程序界面。

  16. 要邀请其他团队成员加入 Plane 应用程序,请单击工作区名称并选择Settings 以访问项目Members 列表。

  17. 要修改你的应用程序设置,请单击左上方栏上的用户名图标,然后选择Enter God Mode以访问实例配置页面。

    image.png

总结

在本指南中,你已成功在 云服务器上部署 Plane 并使用生产环境设置配置应用程序。 Managed Database for PostgreSQL 作为主数据库,而 对象存储则存储所有 Plane 应用程序资产。这提高了实例可用性和性能,类似于 Jira 和 Linear 等闭源应用程序。有关更多信息,请访问Plane 官方文档。

相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site


http://www.ppmy.cn/news/1556427.html

相关文章

Vue.js前端框架教程5:Vue数据拷贝和数组函数

文章目录 Vue数组函数 filtermapreducelength使用示例Vue 拷贝展开运算符 (...)Object.assign()JSON.stringify() 和 JSON.parse()注意事项 Vue数组函数 在 Vue 中&#xff0c;处理列表时经常需要用到数组的内置方法&#xff0c;如 filter、map、reduce 以及检查数组长度的 le…

NSDT 3DConvert:高效实现大模型文件在线预览与转换

NSDT 3DConvert 作为一个 WebGL 展示平台&#xff0c;能够实现多种模型格式免费在线预览&#xff0c;并支持大于1GB的OBJ、STL、GLTF、点云等模型进行在线查看与交互&#xff0c;这在3D模型展示领域是一个相当强大的功能。 平台特点 多格式支持 NSDT 3DConvert兼容多种3D模型…

TCP 三次握手四次挥手

目录 TCP 三次握手四次挥手 一、TCP基础 二、TCP数据报结构 三、名词术语 四、TCP的三次握手 ✍️过 程描述: 举例说明: 总结: 思考 &#x1f914; : 五、TCP的四次挥手 ✍️ 过 程描述: ☕️ 川 航图举例: 思考 &#x1f914;: TCP 三次握手四次挥手 一、TCP基础…

【Spring】Spring框架概述与IoC容器—Spring设计理念:弱耦合、强内聚

在软件开发中&#xff0c;尤其是在Java开发中&#xff0c;设计理念的好坏直接影响到应用程序的可维护性、可扩展性和可测试性。Spring框架作为一个流行的Java开发框架&#xff0c;其设计理念中的“弱耦合”和“强内聚”是非常重要的概念。这些理念帮助开发者构建灵活、可扩展的…

Python爬虫之Selenium的应用

【1】Selenium基础介绍 1.什么是selenium&#xff1f; &#xff08;1&#xff09;Selenium是一个用于Web应用程序测试的工具。 &#xff08;2&#xff09;Selenium 测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。 &#xff08;3&#xff09;支持通过各种driv…

Linux 打印队列功能解析

在 Linux 系统中&#xff0c;打印队列是一个管理和处理打印任务的机制。通过打印队列&#xff0c;用户可以将多个打印任务排队等待打印机处理&#xff0c;而打印机按顺序处理这些任务。Linux 使用 CUPS&#xff08;Common UNIX Printing System&#xff09;或 LPD&#xff08;L…

docker安装、升级、以及sudo dockerd --debug查看启动失败的问题

1、docker安装包tar下载地址 Index of linux/static/stable/x86_64/ 2、下载tgz文件并解压 tar -zxvf docker-24.0.8.tgz 解压后docker文件夹下位docker相关文件 3、将老版本docker相关文件&#xff0c;备份 将 /usr/bin/docker下docker相关的文件&#xff0c;mv到备份目录…

获取github容器注册表

登录 GitHub 容器注册表&#xff08;GitHub Container Registry&#xff09;。要使其正常工作&#xff0c;请将 username 和 token 替换为你自己的 GitHub 用户名和相应的个人访问令牌。完整步骤如下&#xff1a; 生成 GitHub Personal Access Token 登录 GitHub&#xff0c;进…