نحوه نصب Plane – یک جایگزین متن باز برای Jira #
مقدمه #
Plane یک ابزار مدیریت پروژه متنباز با قابلیت توسعهپذیری بالا است که از انواع مختلفی از چارچوبها مانند Agile، Kanban، waterfall و timelines پشتیبانی میکند. این ابزار جایگزینی برای پلتفرمهایی مانند Jira، Asana و Linear است که به شما امکان میدهد با استفاده از ابزارهایی مانند Docker یا Kubernetes، تمام منابع برنامه را در یک محیط کانتینر شده به صورت مستقل میزبانی کنید.
این راهنما نحوه استقرار Plane روی یک سرور مجازی و راهاندازی یک محیط ردیابی مشکل با گواهینامههای SSL معتبر، اعلانهای ایمیل و روشهای احراز هویت برای ایمنسازی برنامه شما را توضیح میدهد.
پیش نیازها #
- با استفاده از سرور مجازی نگارنوین با حداقل رم، یک سرور با نصب داکر راهاندازی کنید
۴ GB. - یک پایگاه داده مدیریت شده برای PostgreSQL جهت استفاده با Plane نصب کنید.
- Object Storage را به عنوان فضای ذخیرهسازی پیشفرض Plane مستقر کنید .
- برای دسترسی به سرور از SSH استفاده کنید .
- کاربر را به گروه Docker اضافه کنید. برای مثال،
linuxuser.کنسول# usermod -aG docker linuxuser - به حساب کاربری غیر ریشه (non-root) بروید.کنسول
# su linuxuser
ایجاد پایگاه داده Plane #
پایگاه داده پیشفرض Plane PostgreSQL که در محیط Docker برنامه نصب شده است، بهترین عملکرد را در محیطهای عملیاتی ارائه نمیدهد. امتیازات پایگاه داده Plane را به یک NegarNovin Managed Database for PostgreSQL منتقل کنید تا علاوه بر ذخیرهسازی دادههای خارج از سایت، در دسترس بودن و عملکرد برنامه را بهبود بخشید. مراحل زیر را برای ایجاد یک پایگاه داده Plane جدید با استفاده از NegarNovin Managed Database for PostgreSQL خود دنبال کنید.
- با استفاده از رشته اتصال، به پایگاه داده مدیریتشده NegarNovin خود برای PostgreSQL وارد شوید.
NegarNovinآدرس میزبان پایگاه داده واقعی خود را جایگزین کنید.کنسول$ psql postgres://negarnovinadmin:password@abcd.negarnovin.com:16751/defaultdbوقتی از شما خواسته شد، رمز عبور کاربر NegarNovin Managed Database for PostgreSQL خود را برای دسترسی به کلاستر وارد کنید.
- یک پایگاه داده جدید برای استفاده با Plane ایجاد کنید. برای مثال،
planedb.postgresqldefaultdb=> CREATE DATABASE planedb;
- به پایگاه داده سوئیچ کنید.postgresql
defaultdb=> \c planedb;
- یک جدول نمونه جدید ایجاد کنید تا تأیید کنید که کاربر PostgreSQL شما
CREATEبه پایگاه داده دسترسی دارد.پستگرسکیوالplanedb=> CREATE TABLE people ( country VARCHAR(۲۵۵), continent VARCHAR(۲۵۵), age INT);
- از کنسول PostgreSQL خارج شوید.پستگرسکیوال
planedb=> \q
Plane برای انتقال موفقیتآمیز دادهها و ایجاد تمام منابع لازم در پایگاه داده، به یک حساب کاربری PostgreSQL با سطح دسترسی super user نیاز دارد
negarnovinadmin. حسابهای کاربری غیر super user هنگام استفاده از پایگاههای داده خارجی به دلیل مجوزهای سطح ریشه مورد نیاز، با Plane سازگار نیستند.
نصب Plane روی سرور #
- یک دایرکتوری پروژه جدید Plane ایجاد کنید.کنسول
$ mkdir plane - به دایرکتوری تغییر دهید.کنسول
$ cd plane
- آخرین اسکریپت نصب Plane را با استفاده از Curl دانلود کنید.کنسول
$ 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: ۱) Install (x86_64) ۲) Start ۳) Stop ۴) Restart ۵) Upgrade ۶) View Logs ۷) Exit Action []: ۱به عنوان مقدار اکشن وارد کنید و 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.5s Latest version is now available for you to use ۷به عنوان مقدار اکشن وارد کنید و Enterبرای خروج از اسکریپت نصب، فشار دهید.- فایلهای دایرکتوری پروژه را فهرست کنید و تأیید کنید که
plane-appدایرکتوری جدیدی در دسترس است.کنسول$ ls - به دایرکتوری تغییر دهید.کنسول
$ cd plane-app
- تمام فایلهای دایرکتوری را فهرست کنید تا تأیید کنید که فایلهای جدید
docker-compose.yamlو موجود هستند..envکنسول$ ls -aخروجی:
. .. archive docker-compose.yaml .env - فایل متغیرهای محیطی را باز کنید
.envتا مقادیر نصب Plane را تغییر دهید.کنسول$ nano .env - فیلد را پیدا کنید
NGINX_PORTو پورت پیشفرض را۸۰با پورت دیگری مانند۸۰۸۰. جایگزین کنید.NGINX_PORT=8080فایل را ذخیره کنید.
- پیدا کنید
WEB_URLوhttp://localhostبا آدرس دامنه خود جایگزین کنید. برای مثال،https://plane.example.com.WEB_URL=https://plane.example.comفایل را ذخیره کنید.
- فیلد NEXT_PUBLIC_DEPLOY_URL را پیدا کنید و
http://localhost/spacesضمن حفظ مسیر، آن را به آدرس دامنه خود تغییر دهید/spaces.NEXT_PUBLIC_DEPLOY_URL=https://plane.example.com/spacesفایل را ذخیره کنید.
- به فیلد CORS_ALLOWED_ORIGINS بروید و
http://localhostآدرس دامنه خود را وارد کنید.CORS_ALLOWED_ORIGINS=https://plane.example.comفایل را ذخیره کنید.
- بخش تنظیمات پایگاه داده (DB Settings) را پیدا کنید و تمام مقادیر پیشفرض متغیرها را با جزئیات negarnovin Managed Database for PostgreSQL خود جایگزین کنید. به طور خاص، مقدار متغیر DATABASE_URL را با رشته اتصال کامل negarnovin Managed Database for PostgreSQL خود، مشابه پیکربندی زیر، جایگزین کنید.
#DB SETTINGS PGHOST=abcd.negarnovin.com PGDATABASE=planedb POSTGRES_USER=negarnovinadmin POSTGRES_PASSWORD=password POSTGRES_DB=planedb PGDATA=/var/lib/postgresql/data DATABASE_URL=postgres://negarnovinadmin:password@abcd.negarnovin.com:16751/planedbفایل را ذخیره کنید و ببندید.
جزئیات اتصال NegarNovin Managed Database for PostgreSQL فوق را با مقادیر منطبق خود بسته به فیلد متغیر جایگزین کنید:
- PGHOST : آدرس پایگاه داده مدیریت شده شما در negarnovin برای PostgreSQL.
- PGDATABASE : پایگاه داده PostgreSQL هدف برای استفاده با Plane.
- POSTGRES_USER : نام کاربری پایگاه داده PostgreSQL شما.
- POSTGRES_PASSWORD : رمز عبور کاربر پایگاه داده PostgreSQL شما
- POSTGRES_DB : پایگاه داده PostgreSQL که با Plane استفاده میشود.
- PGDATA : مسیر دایرکتوری میزبان برای ذخیره فایلهای داده PostgreSQL شما.
- DATABASE_URL : رشته اتصال پایگاه داده مدیریت شده نگارنوین برای PostgreSQL که هنگام اتصال به پایگاه داده استفاده میشود.
- برای تنظیم اتصال Plane به negarnovin Object Storage، به بخش تنظیمات فروشگاه داده (DATA STORE SETTINGS) بروید .
- مقادیر متغیر پیشفرض را با جزئیات NegarNovin Object Storage خود برای استفاده با 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.negarnovin.com AWS_S3_BUCKET_NAME=plane MINIO_ROOT_USER=access-key MINIO_ROOT_PASSWORD=secret-key BUCKET_NAME=uploads FILE_SIZE_LIMIT=5242880فایل را ذخیره کنید و ببندید.
جزئیات اتصال مثال negarnovin Object Storage فوق را با مقادیر واقعی خود جایگزین کنید. در زیر آنچه هر متغیر نشان میدهد آمده است:
- USE_MINIO : این مقدار
۰، فضای ذخیرهسازی پیشفرض اشیاء MinIO را غیرفعال کرده و متغیرهای دسترسی خارجی را فعال میکند. - AWS_REGION : مکان ذخیرهسازی اشیاء نگارنوین شما را تنظیم میکند.
ewrبسته به منطقه استقرار، شناسه مکان ذخیرهسازی اشیاء خود را جایگزین کنید. - AWS_ACCESS_KEY_ID : کلید دسترسی NegarNovin Object Storage را برای استفاده هنگام اتصال با Plane تنظیم میکند. آن را
example-access-keyبا رشته کلید دسترسی واقعی خود به Object Storage جایگزین کنید. - AWS_SECRET_ACCESS_KEY : کلید مخفی NegarNovin Object Storage را برای احراز هویت با کلید دسترسی شما تنظیم میکند. آن را
example-secretبا کلید مخفی واقعی خود جایگزین کنید. - AWS_S3_ENDPOINT_URL : آدرس میزبان negarnovin Object Storage را برای ذخیره فایلهای داده Plane شما تنظیم میکند. آن را
ewr1.negarnovin.comبا آدرس واقعی ذخیرهسازی شیء خود جایگزین کنید. - AWS_S3_BUCKET_NAME : باکت ذخیرهسازی اشیاء نگارنوین شما را برای استفاده با Plane تعریف میکند. اگر باکت وجود نداشته باشد، پس از نصب به طور خودکار ایجاد میشود. مقدار را
planeبا نام باکت دلخواه خود جایگزین کنید.
- USE_MINIO : این مقدار
- به دایرکتوری اصلی پروژه Plane خود برگردید.کنسول
$ cd ../
- اسکریپت نصب Plane را دوباره اجرا کنید.کنسول
$ ./setup.sh - مقدار اکشن
۲(شروع) را وارد کنید و Enterبرای شروع نصب Plane، دکمه را فشار دهید. - در حین نصب، تمام اشیاء پایگاه داده به پایگاه داده مدیریت شده نگار نوین شما برای PostgreSQL منتقل میشوند و NegarNovin Object Storage به عنوان رسانه ذخیرهسازی پیشفرض فعال میشود. هنگامی که نصب موفقیتآمیز باشد، خروجی شما باید مانند تصویر زیر باشد:
✔ 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 ۱) Install (x86_64) ۲) Start ۳) Stop ۴) Restart ۵) Upgrade ۶) View Logs ۷) Exit - مقدار اکشن را وارد کنید
۷و Enterبرای بستن اسکریپت نصب Plane و تأیید نصب، فشار دهید. - لیست کانتینرهای داکر در حال اجرا را مشاهده کنید و تمام نمونههای فعال Plane را تأیید کنید.کنسول
$ docker psخروجی:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3709c99e7f33 makeplane/plane-proxy:latest "/docker-entrypoint.…" ۲ 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…" ۲ minutes ago Up About a minute 3000/tcp plane-app-space-1 9ed0792056e5 makeplane/plane-frontend:latest "docker-entrypoint.s…" ۲ 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…" ۲ minutes ago Up 2 minutes 9000/tcp plane-app-plane-minio-1 12c94f7b2291 redis:6.2.7-alpine "docker-entrypoint.s…" ۲ minutes ago Up 2 minutes 6379/tcp plane-app-plane-redis-1 662eea3ef147 postgres:15.2-alpine "docker-entrypoint.s…" ۲ minutes ago Up 2 minutes 5432/tcp plane-app-plane-db-1 - یک درخواست HTTP به پورت میزبان Plane ارسال کنید
۸۰۸۰و دسترسی به رابط برنامه را آزمایش کنید.کنسول$ curl ۱۲۷.۰.۰.۱:۸۰۸۰
خروجی شما باید مانند تصویر زیر باشد:
<!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 شما، برنامه روی پورت میزبان
۸۰۸۰تعریف شده توسط مقدار شماNGINX_PORTدر.envفایل اجرا میشود. هنگامی که اتصال موفقیتآمیز باشد، درخواست، دادههای خام HTML را که نشان دهنده اتصال موفقیتآمیز به برنامه Plane است، خروجی میدهد.
هواپیمای امن #
Plane یک پلتفرم ردیابی پروژه است که معمولاً توسط تیمها، دپارتمانها یا سازمانهای خاص استفاده میشود. Plane امن با رویههای محیط تولید شامل قوانین فایروال امن و گواهینامههای SSL قابل اعتماد برای نمایش برنامه با استفاده از نام دامنه شما. بخشهای زیر را دنبال کنید تا گواهینامههای SSL معتبر را با استفاده از مجوز گواهی Let’s Encrypt (CA) تولید کنید و پورتهای فقط اتصال را از طریق برنامه فایروال سرور پیشفرض مجاز کنید.
پیکربندی فایروال سرور #
به طور پیشفرض، فایروال بدون عارضه (UFW) به عنوان بسته فایروال پیشفرض در سرورهای NegarNovin Debian موجود و فعال است. UFW را پیکربندی کنید تا پورتهای فقط اتصال از طریق فایروال مجاز باشند تا دسترسی ایمن به منابع برنامه Plane امکانپذیر شود.
- وضعیت فایروال را تأیید کنید.کنسول
$ sudo ufw statusخروجی:
Status: active To Action From -- ------ ---- ۲۲/tcp ALLOW Anywhere ۲۲/tcp (v6) ALLOW Anywhere (v6)در صورت غیرفعال بودن، پورت SSH را فعال کرده
۲۲و فایروال را با استفاده از دستورات زیر فعال کنید.کنسول$ sudo ufw allow ۲۲/tcp $ sudo ufw enable
- پورت اتصال HTTP را
۸۰از طریق فایروال مجاز کنید.کنسول$ sudo ufw allow ۸۰/tcp
- به پورت اتصال HTTPS اجازه دهید
۴۴۳تا اتصالات امن TLS/SSL را فعال کند.کنسول$ sudo ufw allow ۴۴۳/tcp
- برای اعمال تغییرات پورت جدید، جدول فایروال را مجدداً بارگذاری کنید.کنسول
$ sudo ufw reload - برای تأیید تمام پورتهای موجود، جدول فایروال را مشاهده کنید.کنسول
$ sudo ufw statusخروجی:
Status: active To Action From -- ------ ---- ۲۲/tcp ALLOW Anywhere ۸۰/tcp ALLOW Anywhere ۴۴۳/tcp ALLOW Anywhere ۲۲/tcp (v6) ALLOW Anywhere (v6) ۸۰/tcp (v6) ALLOW Anywhere (v6) ۴۴۳/tcp (v6) ALLOW Anywhere (v6)
نصب Nginx Proxy Manager برای نمایش صفحه با استفاده از نام دامنه #
Nginx Proxy Manager یک برنامه پروکسی معکوس است که به طور ایمن برنامههای Docker را برای دسترسی خارجی روی سرور در معرض دید قرار میدهد. در مراحل زیر، Nginx Proxy Manager را نصب کرده و آن را به شبکه داخلی Plane Docker متصل کنید. علاوه بر این، دسترسی به Plane را با استفاده از URL نام دامنهای که در پیکربندی plane.example.comخود تعریف کردهاید، فعال کنید..env
- دایرکتوری کاری خود را چاپ کنید و تأیید کنید که به طور فعال از دایرکتوری پروژه Plane استفاده میکنید.کنسول
$ pwd
خروجی:
/home/user/plane - یک دایرکتوری داده جدید برای ذخیره فایلهای داکر خود ایجاد کنید. برای مثال،
nginx-proxy-man.کنسول$ mkdir nginx-proxy-man - به دایرکتوری داده جدید بروید.کنسول
$ cd nginx-proxy-man
- یک فایل جدید Docker Compose ایجاد کنید.کنسول
$ touch docker-compose.yaml - فایل را با استفاده از یک ویرایشگر متن دلخواه مانند Nano باز کنید.کنسول
$ nano docker-compose.yaml - محتویات زیر را به فایل اضافه کنید.yaml
version: '۳.۸' services: app: image: 'jc21/nginx-proxy-manager:latest' container_name: nginx-proxy-manager restart: unless-stopped ports: - '۸۰:۸۰' - '۸۱:۸۱' - '۴۴۳:۴۴۳' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt
فایل را ذخیره کنید و ببندید.
پیکربندی Docker فوق یک کانتینر جدید Nginx Proxy Manager ایجاد میکند و برنامه را برای دسترسی به پورتهای میزبان زیر در معرض نمایش قرار میدهد:
- ۸۰ : پورت HTTP پیشفرض که توسط Nginx Proxy Manager برای نمایش برنامهها استفاده میشود.
- ۸۱ : دسترسی به کنترل پنل Nginx Proxy Manager را فعال میکند.
- ۴۴۳ : دسترسی امن HTTPS را برای برنامههای کاربردیِ در معرض خطر با گواهیهای SSL معتبر تولید شده توسط Nginx Proxy Manager فعال میکند.
- دسترسی به پورتهای میزبان HTTP و HTTPS را آزمایش کنید تا مطمئن شوید که هیچ تداخل فعالی روی سرور شما وجود ندارد.کنسول
$ sudo lsof -i :80,443اگر هیچ برنامهای به طور فعال از پورتها استفاده نکند، خروجی شما خالی و مشابه تصویر زیر خواهد بود:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEاگر برنامهای از پورتها استفاده میکند،
Killبرای جلوگیری از تداخل پورت با Nginx Proxy Manager، آن برنامه را با استفاده از دستور زیر متوقف کنید. برای مثال، process ID را متوقف کنید۱۲۳۴.کنسول$ kill ۱۲۳۴
- Nginx Proxy Manager را با استفاده از فایل Docker Compose خود نصب کنید.کنسول
$ 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 - تمام کانتینرهای داکر در حال اجرا را مشاهده کنید و تأیید کنید که کانتینر 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.…" ۵ 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…" ۵ minutes ago Up 5 minutes 3000/tcp plane-app-space-1 9ed0792056e5 makeplane/plane-frontend:latest "docker-entrypoint.s…" ۵ 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…" ۵ minutes ago Up 5 minutes 9000/tcp plane-app-plane-minio-1 12c94f7b2291 redis:6.2.7-alpine "docker-entrypoint.s…" ۵ minutes ago Up 5 minutes 6379/tcp plane-app-plane-redis-1 662eea3ef147 postgres:15.2-alpine "docker-entrypoint.s…" ۵ minutes ago Up 5 minutes 5432/tcp plane-app-plane-db-1 - شبکههای داکر موجود را بررسی کنید و نام شبکه 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 ۸۱برای باز کردن پنل کنترل Nginx Proxy Manager با استفاده از یک مرورگر وب مانند فایرفاکس، به آدرس IP سرور خود در پورت دسترسی پیدا کنید .۱۷۲.۱۶.۰.۲آدرس IP سرور واقعی خود را جایگزین کنید.http://172.16.0.2:81
نصب Plane جایگزین Jira برای ورود به برنامه، اطلاعات پیشفرض مدیر زیر را وارد کنید:
- کاربر :
admin@example.com - رمز عبور :
changeme
برای دسترسی به پنل کنترل برنامه، جزئیات کاربر اداری را تغییر دهید یا پنجره ویرایش کاربر را ببندید.
- کاربر :
- در منوی پیمایش برنامه، روی Hosts کلیک کنید و Proxy Hosts را برای ایجاد پیکربندی میزبان جدید انتخاب کنید.
- برای باز کردن صفحه پیکربندی میزبان، روی افزودن میزبان پروکسی کلیک کنید .

- نام دامنه خود را در فیلد نام دامنه وارد کنید و برای ذخیره دامنه میزبان خود، روی افزودن کلیک کنید.
- روی فیلد Scheme کلیک کنید و http را به عنوان نوع اتصال برای دسترسی به شبکه داخلی Plane نگه دارید.
- نام کانتینر اصلی Plane خود را
plane-app-proxy-1در فیلد Forward Hostname/IP وارد کنید . - پورت کانتینر پروکسی داخلی Plane را
۸۰در فیلد Forward Port وارد کنید .
- مقدار Publicly Accessible را به عنوان مقدار لیست دسترسی نگه دارید و برای اعمال تغییرات جدید میزبان، روی Save کلیک کنید.
- یک تب جدید در مرورگر وب باز کنید و دامنه خود را بررسی کنید تا دسترسی به رابط برنامه Plane را تأیید کنید.
http://plane.example.com
ایجاد گواهینامههای SSL معتبر برای استفاده با Plane #
Nginx Proxy Manager از Let’s Encrypt به عنوان مرجع صدور گواهینامه SSL پیشفرض استفاده میکند. در مراحل زیر، پیکربندی میزبان Plane را تغییر داده و گواهینامههای SSL معتبری را برای استفاده با نام دامنه خود ایجاد کنید.
- وارد کنترل پنل Nginx Proxy Manager شوید.
- برای دسترسی به تنظیمات هاست خود، روی Hosts کلیک کنید .
- روی نماد options : در کنار Status کلیک کنید و برای تغییر پیکربندی میزبان، Edit را از لیست انتخاب کنید.

- در پنجرهی بازشو Edit Host، روی تبSSL کلیک کنید .
- روی فیلد SSL Certificate کلیک کنید و
Request a new SSL certificate with Let's Encryptاز لیست انتخاب کنید. - برای فعال کردن تغییر مسیرهای خودکار از HTTP به HTTPS، گزینه Force SSL را فعال کنید .
- آدرس ایمیل خود را برای ارتباط با درخواست گواهی Let’s Encrypt وارد کنید.
- برای موافقت با شرایط مجوز گواهی SSL، گزینه «I Agree to the Let’s Encrypt Terms of Service» را فعال یا غیرفعال کنید .

- برای اعمال تغییرات پیکربندی میزبان، روی Save کلیک کنید .
- یک تب جدید در مرورگر وب باز کنید و از طریق HTTPS به دامنه خود مراجعه کنید تا دسترسی به برنامه Plane را با استفاده از یک اتصال امن تأیید کنید.
https://plane.example.com
پیکربندی صفحه #
Plane هنگام نصب روی سرور شما، برای تنظیم ساختار برنامه و دعوت از کاربران اضافی، به تنظیمات اضافی نیاز دارد. در مراحل زیر، رابط Plane را پیکربندی کنید و گزینههای سراسری را برای فعالسازی با کاربران اضافی برای دسترسی به سرور خود فعال کنید.
- یک پنجره مرورگر وب جدید باز کنید و با استفاده از
/god-modeمسیر به دامنه Plane خود دسترسی پیدا کنید تا به صفحه پیکربندی برنامه دسترسی پیدا کنید.https://plane.example.com/god-mode - آدرس ایمیل خود را در
name@company.comفیلد وارد کنید. - یک رمز عبور قوی در
Enter passwordفیلد مربوطه وارد کنید تا با ایمیل مدیر مرتبط شود.
- برای ایجاد حساب کاربری مدیر Plane خود، روی Sign inکلیک کنید .
- برای دسترسی به صفحه پیکربندی نمونه Plane، روی «Go to God Mode» کلیک کنید .
- نام دلخواه برنامه Plane خود را در فیلد Name of instance وارد کنید و برای ذخیره جزئیات نمونه خود، روی Save Changes کلیک کنید.

- برای تغییر تنظیمات اعلان ایمیل Plane و اختصاص یک میزبان SMTP و یک آدرس فرستنده به برنامه برای ارسال ایمیلهای کاربر، روی Email در نوار پیمایش کلیک کنید .
- برای اعمال تنظیمات برنامه Plane خود، روی Save Changes کلیک کنید .
- برای خروج از حالت خدا و دسترسی به نمونه صفحه خود، روی نماد 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، روی نام Workspace کلیک کنید و برای دسترسی به لیست Members پروژه، گزینه Settings را انتخاب کنید .
- برای تغییر تنظیمات برنامه، روی نماد نام کاربری خود در نوار بالا سمت چپ کلیک کنید و گزینه Enter God Mode را انتخاب کنید تا به صفحه پیکربندی نمونه دسترسی پیدا کنید.

نتیجه گیری #
در این راهنما، شما با موفقیت Plane را روی یک سرور نگار نوین مستقر کردهاید و برنامه را با تنظیمات محیط تولید پیکربندی کردهاید. پایگاه داده مدیریتشده negarnovin برای PostgreSQL به عنوان پایگاه داده اصلی عمل میکند در حالی که NegarNovin Object Storage تمام داراییهای برنامه Plane را ذخیره میکند. این امر، دسترسیپذیری و عملکرد نمونه را مشابه برنامههای منبع بسته مانند Jira و Linear بهبود میبخشد. برای اطلاعات بیشتر، به مستندات رسمی Plane مراجعه کنید .











