نحوه کارکرد پنپاتیفای
در این بخش میآموزید که پنپاتیفای چگونه کار میکند و چه تکنولوژیهایی استفاده میکند.
معماری کلی
پنپاتیفای بر اساس Penpot ساخته شده که یک ابزار طراحی اوپنسورس است. ما آن را با استفاده از Docker بستهبندی کردهایم تا نصب و راهاندازی آسان شود.
معماری Docker
Penpot با Docker کار میکند. یعنی همه چیز داخل کانتینرهای جداگانه اجرا میشود:
┌─────────────────────────────────────┐
│ Docker Compose │
├─────────────────────────────────────┤
│ ┌──────────┐ ┌──────────┐ │
│ │ Frontend │ │ Backend │ │
│ │ (React) │ │(Clojure) │ │
│ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │PostgreSQL│ │ Redis │ │
│ │ Database │ │ Cache │ │
│ └──────────┘ └──────────┘ │
│ │
│ ┌──────────────────────────────┐ │
│ │ Storage Volumes │ │
│ │ (دادههای شما) │ │
│ └──────────────────────────────┘ │
└─────────────────────────────────────┘
اجزای اصلی
۱. Frontend (رابط کاربری)
- تکنولوژی: React + ClojureScript
- وظیفه: رابط کاربری که شما میبینید
- پورت: 9001
- کانتینر:
penpot-frontend
این همان چیزی است که در مرورگر میبینید — ابزار طراحی، منوها، و همه چیز.
۲. Backend (سرور)
- تکنولوژی: Clojure
- وظیفه: پردازش درخواستها، مدیریت دادهها
- کانتینر:
penpot-backend
تمام منطق برنامه، API، و پردازش دادهها در اینجا انجام میشود.
۳. PostgreSQL (پایگاه داده)
- وظیفه: ذخیره اطلاعات کاربران، پروژهها، تنظیمات
- کانتینر:
penpot-postgres
تمام دادههای ساختاریافته (مثل اطلاعات کاربر، پروژهها) در اینجا ذخیره میشود.
۴. Redis (کش)
- وظیفه: ذخیره موقت دادهها برای سرعت بیشتر
- کانتینر:
penpot-redis
برای بهبود عملکرد و سرعت، برخی دادهها در Redis ذخیره میشوند.
۵. Storage Volumes (ذخیرهسازی)
- وظیفه: ذخیره فایلهای طراحی، تصاویر، و دادههای بزرگ
- مکان: پوشه
volumesروی کامپیوتر شما
تمام فایلهای طراحی شما در اینجا ذخیره میشوند.
جریان کار
۱. راهاندازی
وقتی docker compose up -d را اجرا میکنید:
- Docker ایمیجها را دانلود میکند (اگر موجود نباشند)
- کانتینرها را میسازد
- شبکه داخلی بین کانتینرها برقرار میکند
- سرویسها را راهاندازی میکند
- همه چیز آماده استفاده میشود
۲. دسترسی کاربر
وقتی به http://localhost:9001 میروید:
- مرورگر → درخواست به Frontend میفرستد
- Frontend → درخواست را به Backend میفرستد
- Backend → دادهها را از PostgreSQL میخواند
- Backend → پاسخ را به Frontend برمیگرداند
- Frontend → صفحه را نمایش میدهد
۳. ذخیره پروژه
وقتی یک پروژه را ذخیره میکنید:
- Frontend → دادههای پروژه را به Backend میفرستد
- Backend → اطلاعات را در PostgreSQL ذخیره میکند
- Backend → فایلهای بزرگ را در Storage Volumes ذخیره میکند
- Backend → تأیید را به Frontend برمیگرداند
- Frontend → پیام "ذخیره شد" را نمایش میدهد
مزایای این معماری
✅ نصب آسان
- فقط یک دستور:
docker compose up -d - همه چیز خودکار نصب میشود
- نیازی به تنظیمات پیچیده نیست
✅ بهروزرسانی ساده
docker compose pull
docker compose up -d
همه چیز بهروز میشود!
✅ دادهها امن و محلی
- تمام دادهها روی کامپیوتر شماست
- هیچ دادهای به اینترنت ارسال نمیشود
- کنترل کامل روی دادههایتان دارید
✅ کاملاً آفلاین
- بعد از نصب اولیه، نیازی به اینترنت نیست
- حتی میتوانید از بسته آفلاین استفاده کنید
- کار میکند حتی اگر اینترنت کاملاً قطع باشد
✅ قابل حمل
- میتوانید volumes را کپی کنید
- روی هر کامپیوتری کار میکند
- میتوانید به سرور دیگر منتقل کنید
✅ ایزوله و امن
- هر سرویس در کانتینر جداگانه است
- اگر یک سرویس مشکل داشته باشد، بقیه کار میکنند
- امنیت بیشتر
نحوه ذخیرهسازی دادهها
دادههای ساختاریافته
در PostgreSQL ذخیره میشوند: - اطلاعات کاربران - پروژهها و فولدرها - تنظیمات - کامنتها و بازخوردها
فایلهای بزرگ
در Storage Volumes ذخیره میشوند: - فایلهای طراحی - تصاویر و داراییها - اکسپورتها
دادههای موقت
در Redis ذخیره میشوند: - session ها - کش دادهها - دادههای موقت
عملکرد و بهینهسازی
کشگذاری
- دادههای پرکاربرد در Redis کش میشوند
- سرعت دسترسی بیشتر میشود
بهینهسازی پایگاه داده
- PostgreSQL برای دادههای ساختاریافته بهینه است
- Index ها برای جستجوی سریع
مدیریت حافظه
- هر کانتینر حافظه محدود دارد
- میتوانید محدودیتها را تنظیم کنید
امنیت
ایزولهسازی
- هر سرویس در کانتینر جداگانه است
- دسترسی محدود بین کانتینرها
شبکه داخلی
- کانتینرها از طریق شبکه داخلی Docker ارتباط برقرار میکنند
- فقط پورت 9001 به بیرون باز است
دادههای محلی
- تمام دادهها روی کامپیوتر شماست
- هیچ دادهای به اینترنت ارسال نمیشود
مقیاسپذیری
برای استفاده شخصی
- یک کانتینر از هر سرویس کافی است
- نیاز به منابع کم
برای تیم
- میتوانید منابع را افزایش دهید
- میتوانید چند instance از Backend اجرا کنید
- میتوانید از load balancer استفاده کنید
عیبیابی
بررسی وضعیت
docker compose ps
بررسی لاگها
docker compose logs
بررسی استفاده از منابع
docker stats
خلاصه
پنپاتیفای با استفاده از Docker و Penpot، یک راهحل قدرتمند و آفلاین برای طراحی ارائه میدهد. معماری مبتنی بر کانتینر باعث میشود که:
- نصب و راهاندازی آسان باشد
- بهروزرسانی ساده باشد
- دادهها امن و محلی باشند
- کاملاً آفلاین کار کند
- قابل حمل و مقیاسپذیر باشد
سوالی دارید؟ به بخش سوالات متداول یا عیبیابی مراجعه کنید.