সেরা 5টি Self-hosted Trello বিকল্পের তুলনা
Planka, Vikunja, Focalboard, Wekan এবং Kanboard-এর মধ্যে কোনটি আপনার জন্য সেরা? RAM ব্যবহার, ডেটাবেস, SSO সাপোর্ট এবং Trello ইমপোর্ট সুবিধা নিয়ে বিস্তারিত তুলনামূলক আলোচনা দেখুন।
কোন self-hosted Trello বিকল্পটি আপনার বেছে নেওয়া উচিত?
তিনটি self-hosted Trello বিকল্প আপনার সময়ের যোগ্য: আপনি যদি Trello-এর হুবহু বোর্ড এবং এর import ফাইল চান তবে Planka, যখন কোনো টিমের single sign-on এবং বোর্ডের চেয়ে বেশি কিছুর প্রয়োজন হয় তখন Vikunja, এবং যখন VPS (virtual private server) ছোট হয় তখন Kanboard। Focalboard-এ নতুন কোনো প্রজেক্ট শুরু করবেন না। এর standalone সার্ভারের কোনো release 783 দিন ধরে আসেনি এবং এর README এখন একজন maintainer খুঁজছে।
Wekan হলো এখানে থাকা 5 টি টুলের মধ্যে পঞ্চম। এটি কাজ করে, তবে এটি অন্য সবকিছুর তুলনায় কয়েক গুণ বেশি memory খরচ করে। নিচে উল্লিখিত প্রতিটি version, licence এবং তারিখ 5 আগস্ট 2026 তারিখে যাচাই করা হয়েছে।
প্রতিটি বোর্ড টুলের জন্য কতটুকু RAM প্রয়োজন?
The data behind this chart
[
{
"tool": "Planka + Postgres",
"idle_memory_mb": 280
},
{
"tool": "Vikunja + SQLite",
"idle_memory_mb": 110
},
{
"tool": "Focalboard + SQLite",
"idle_memory_mb": 120
},
{
"tool": "Wekan + FerretDB",
"idle_memory_mb": 750
},
{
"tool": "Kanboard + SQLite",
"idle_memory_mb": 70
}
]এগুলো হলো একটি নতুন ইনস্টলেশনের সাধারণ idle ফিগার, যখন কেউ এটি ব্যবহার করছে না; স্ট্যাক চালু হওয়ার এক মিনিট পর docker stats যে ধরনের সংখ্যা রিপোর্ট করে। একটি প্ল্যান তৈরির জন্য এগুলো ব্যবহার করুন, তারপর আপনার নিজের ব্যবহারের ওপর ভিত্তি করে পরিমাপ করুন। সঠিক মেগাবাইটের চেয়ে ব্যবহারের ধরনটি বেশি গুরুত্বপূর্ণ।
Kanboard-এর জন্য সর্বনিম্ন প্রয়োজন 70 MB, কারণ এটি PHP এবং SQLite-এর ওপর ভিত্তি করে চলে। কোনো দীর্ঘস্থায়ী অ্যাপ্লিকেশন প্রসেস মেমরিতে আপনার বোর্ডগুলো ধরে রাখে না, তাই অনুরোধের মাঝে কন্টেইনারটি প্রায় কিছুই ব্যবহার করে না। Vikunja হলো একটি একক Go বাইনারি, যার প্রয়োজন 110 MB এবং SQLite হলো এর ডিফল্ট ডাটাবেস, তাই একটি কন্টেইনারই পুরো স্ট্যাক হিসেবে কাজ করে। Planka-এর জন্য 280 MB প্রয়োজন, কারণ এটি সবসময় দুটি কন্টেইনার নিয়ে চলে: একটি Node সার্ভার এবং PostgreSQL। Planka-তে SQLite ব্যবহারের কোনো বিকল্প নেই, তাই ডাটাবেসটি বাধ্যতামূলক।
Wekan-এর প্রয়োজন 750 MB, কারণ এটি একটি Meteor অ্যাপ্লিকেশন। Meteor নোড মেমরিতে একটি লাইভ কুয়েরি লেয়ার ধরে রাখে এবং WebSocket-এর মাধ্যমে প্রতিটি বোর্ডের পরিবর্তন প্রতিটি খোলা ব্রাউজারে পাঠিয়ে দেয়, তাই এর মেমরি ব্যবহারের পরিমাণ স্থির না থেকে সংযুক্ত ব্যবহারকারীর সংখ্যার সাথে বাড়তে থাকে। 1 GB RAM-এর একটি VPS-এ Wekan চালু হয়, কিন্তু কয়েকজন ব্যবহারকারী বড় কোনো বোর্ড খোলার সাথে সাথেই এটি বন্ধ হয়ে যায়। এর লক্ষণ হলো কন্টেইনারটি অদৃশ্য হয়ে যায় এবং exit code 137 নিয়ে পুনরায় চালু হয়, যা docker compose ps-এ একটি রিস্টার্ট লুপ হিসেবে দেখা যায়। হোস্ট মেশিনে dmesg -T | grep -i "out of memory" ব্যবহার করে এটি নিশ্চিত করুন, কারণ কার্নেলের out-of-memory killer অ্যাপ্লিকেশনকে কোনো বার্তা দেয় না।
ডাটাবেস নির্ভরতা আপনার ব্যাকআপ কাজের অর্ধেক নির্ধারণ করে, তাই নিচে প্রতিটি টুলের ডাটাবেস সাপোর্ট দেওয়া হলো। Planka-এর জন্য PostgreSQL প্রয়োজন। Vikunja ডিফল্টভাবে SQLite ব্যবহার করে এবং PostgreSQL, MySQL বা MariaDB-ও সাপোর্ট করে। Kanboard ডিফল্টভাবে SQLite ব্যবহার করে এবং MySQL, MariaDB ও PostgreSQL সাপোর্ট করে; এর ডকুমেন্টেশনে PostgreSQL ব্যবহারের পরামর্শ দেওয়া হয়েছে এবং NFS (network file system)-এ SQLite ব্যবহার না করার সতর্কবার্তা দেওয়া হয়েছে। Focalboard ডিফল্টভাবে SQLite ব্যবহার করে। Wekan MongoDB ওয়্যার প্রোটোকল সাপোর্ট করে এবং এর ডিফল্ট Compose ফাইলে এখন আসল MongoDB সার্ভারের পরিবর্তে একটি এমবেডেড SQLite ব্যাকএন্ডসহ FerretDB v1 থাকে; আপনি চাইলে আলাদা MongoDB 7 Compose ফাইলও ব্যবহার করতে পারেন।
এই প্রজেক্টগুলোর মধ্যে কোনটি বর্তমানে রক্ষণাবেক্ষণ করা হচ্ছে?
The data behind this chart
[
{
"tool": "Planka 2.1.1",
"release_age": 109
},
{
"tool": "Vikunja 2.5.0",
"release_age": 1
},
{
"tool": "Focalboard 8.0.0",
"release_age": 783
},
{
"tool": "Wekan 10.67",
"release_age": 1
},
{
"tool": "Kanboard 1.2.53",
"release_age": 12
}
]Focalboard এই তালিকার ব্যতিক্রম, যার সর্বশেষ রিলিজের বয়স 783 দিন। এর সর্বশেষ standalone রিলিজ, v8.0.0, 2024 সালের জুন মাসের। Mattermost বোর্ড ডেভেলপমেন্টকে একটি আলাদা রিপোজিটরির প্লাগিনে স্থানান্তর করেছে এবং standalone README ফাইলটিতে বলা হয়েছে যে এই রিপোজিটরি বর্তমানে রক্ষণাবেক্ষণ করা হচ্ছে না। এই তুলনার মধ্যে এটিই একমাত্র স্পষ্ট "না"। বাকি সবগুলোর ক্ষেত্রে কিছু সুবিধা-অসুবিধা রয়েছে।
Planka-এর 109 দিন সময়কাল এমন একটি প্রজেক্টের জন্য বেশ ভালো যেটি বছরে অল্প কয়েকটি রিলিজ দেয়। এর 2.1.1 সংস্করণটি 2026 সালের এপ্রিল মাসের। Kanboard চেক করার 12 দিন আগে v1.2.53 রিলিজ করেছে এবং এর আগের দুটি রিলিজ 2026 সালের মার্চ ও এপ্রিল মাসে এসেছিল।
Vikunja এবং Wekan উভয়ই চেক করার একদিনের মধ্যে রিলিজ দিয়েছে, তবে এই দুটি তথ্যকে ভিন্নভাবে দেখা উচিত। Vikunja v2.5.0-কে একটি সাধারণ মাইনর রিলিজ হিসেবে ট্যাগ করেছে। Wekan একই দিনে v10.65, v10.66 এবং v10.67 ট্যাগ করেছে, যা তাদের স্বাভাবিক কাজের গতি। ঘনঘন রিলিজ মানেই যে সেটি একটি স্থিতিশীল টার্গেট, তা নয়। Wekan ব্যবহারের ক্ষেত্রে আপনি একটি দ্রুত পরিবর্তনশীল ভার্সন নম্বর অনুসরণ করছেন, তাই প্রতিটি আপডেটের আগে নির্দিষ্ট ট্যাগ পিন করুন এবং নোটগুলো পড়ে নিন।
আপনি কি শুধু একটি বোর্ড পাচ্ছেন?
তুলনামূলক বেশিরভাগ পোস্ট "এটি Trello-এর মতো দেখতে" এই কথাতেই থেমে যায়। RAM-এর চেয়েও এই বিষয়টি বেশি গুরুত্বপূর্ণ, কারণ ডেডলাইন আছে এমন যেকোনো কাজের জন্য বোর্ড খুব একটা কার্যকর কাঠামো নয়।
- Planka শুধুমাত্র একটি বোর্ড টুল: প্রজেক্ট, বোর্ড, লিস্ট, কার্ড, লেবেল, চেকলিস্ট, কমেন্ট এবং অ্যাটাচমেন্ট। আগস্ট 2026 অনুযায়ী, ক্যালেন্ডার এবং ম্যাপ ভিউগুলো প্রো ফিচারের অন্তর্ভুক্ত।
- Vikunja একই টাস্ক সেটের ওপর চারটি ভিউ প্রদান করে: লিস্ট, কানবান, টেবিল এবং গ্যান্ট। একটি টাস্ক একবারই তৈরি হয় এবং আপনি সেটিকে ডুপ্লিকেট না করেই ভিউ পরিবর্তন করতে পারেন।
- Kanboard হলো ওয়ার্ক-ইন-প্রোগ্রেস লিমিট, সাবটাস্ক, অ্যাটাচমেন্ট, কমেন্ট, অটোমেটিক অ্যাকশন এবং ফিল্টারিংয়ের জন্য একটি ছোট কুয়েরি ল্যাঙ্গুয়েজসহ বোর্ড। তাদের নিজস্ব হোমপেজেই বলা হয়েছে, "ফিচারের সংখ্যা ইচ্ছাকৃতভাবে সীমিত রাখা হয়েছে", যা এর সঠিক বর্ণনা।
- Wekan হলো সুইমলেনসহ বোর্ড, যার সাথে আছে চেকলিস্ট, কাস্টম ফিল্ড, একটি REST (representational state transfer) API এবং ওয়েবহুক।
- Focalboard একই কার্ডের ওপর বোর্ড, টেবিল এবং ক্যালেন্ডার ভিউ প্রদান করত। সম্পূর্ণ তালিকার স্বার্থে এটি এখানে উল্লেখ করা হলো।
আপনি যদি আসলে এমন একটি উইকি চান যার সাথে কিছু টাস্ক ট্র্যাকিং যুক্ত আছে, তবে এই তুলনাটি আপনার জন্য নয়। BookStack, Wiki.js এবং Outline সেই কাঠামোটি নিয়ে আলোচনা করে এবং self-hosted Notion বিকল্পগুলো অল-ইন-ওয়ান ওয়ার্কস্পেসের বিষয়টি কভার করে।
মাল্টি-ইউজার অ্যাক্সেস এবং সিঙ্গেল সাইন-অন
Planka-এর ফ্রি কমিউনিটি এডিশনে OpenID Connect সাপোর্ট করে। অফিসিয়াল Compose ফাইলে এই সেটিংসগুলো কমেন্ট করা অবস্থায় থাকে, যার মধ্যে OIDC_ISSUER, OIDC_CLIENT_ID এবং OIDC_CLIENT_SECRET অন্তর্ভুক্ত। তাই আপনাকে নতুন করে আপগ্রেড করার পরিবর্তে শুধু কমেন্ট আউট (uncomment) করতে হবে। আপনার প্রতিষ্ঠানের বাইরের ব্যক্তিদের জন্য গেস্ট রোল (Guest roles) একটি প্রো (Pro) ফিচার।
Vikunja একই সাথে একাধিক প্রোভাইডারের মাধ্যমে OpenID Connect সাপোর্ট করে। VIKUNJA_AUTH_OPENID_ENABLED=true সেট করুন, তারপর প্রতিটি প্রোভাইডারের জন্য VIKUNJA_AUTH_OPENID_PROVIDERS_<ID>_* ভেরিয়েবলের একটি করে ব্লক যোগ করুন। এতে টিম এবং প্রজেক্ট-ভিত্তিক শেয়ারিং সুবিধা রয়েছে, যা বিশ জনের একটি প্রতিষ্ঠানের জন্য প্রকৃতপক্ষে প্রয়োজন।
Wekan-এ LDAP (lightweight directory access protocol), OAuth2, OIDC এবং SAML সাপোর্ট করে। Kanboard-এ বিল্ট-ইন LDAP এবং অন্য সবকিছুর জন্য একটি জেনেরিক OAuth2 প্লাগইন রয়েছে, পাশাপাশি এতে প্রজেক্ট-ভিত্তিক রোল এবং গ্রুপ ব্যবহারের সুবিধা আছে। Focalboard-এর স্ট্যান্ডঅ্যালোন সার্ভারে কোনো সিঙ্গেল সাইন-অন সুবিধা নেই, যা এটিকে বাদ দেওয়ার দ্বিতীয় কারণ।
এর যেকোনো একটির সাথে আপনার নিজের চালানো একটি Authentik identity provider ব্যবহার করা যেতে পারে, যা বিশ জন ব্যবহারকারীকে প্রতিটি অ্যাপের জন্য আলাদা পাসওয়ার্ড দেওয়ার চেয়ে সাধারণত ভালো সমাধান।
আপনি কি আপনার Trello বোর্ড ইমপোর্ট করতে পারবেন?
Planka-এর পদ্ধতিটি সবচেয়ে সহজ। Trello থেকে বোর্ডটিকে JSON হিসেবে এক্সপোর্ট করুন, Planka-তে একটি নতুন বোর্ড তৈরি করুন, তারপর Import-এ ক্লিক করে Trello নির্বাচন করুন। তবে আগে সীমাবদ্ধতাগুলো জেনে নিন, কারণ এগুলো বাস্তব: ব্যবহারকারী এবং অ্যাটাচমেন্ট ইমপোর্ট হয় না, প্রতিটি কার্ডের জন্য কেবল একটি চেকলিস্ট আসে এবং Trello-এর ডিফল্ট JSON এক্সপোর্ট কোনো সতর্কতা ছাড়াই 1,000 অ্যাকশনের পর বন্ধ হয়ে যায়। ফলাফলের ওপর নির্ভর করার আগে ফাইলটি নিজে যাচাই করে নিন।
Vikunja, Trello-এর OAuth ফ্লো-এর মাধ্যমে ইমপোর্ট করে, যা Settings-এর অধীনে "Import from other services" অপশনে থাকে। প্রতিটি মাইগ্রেটরকে কনফিগারেশনে এনাবল করতে হয়, তবেই এর আইকন দেখা যায়। এক্ষেত্রে VIKUNJA_SERVICE_PUBLICURL অবশ্যই সঠিক হতে হবে, কারণ OAuth রিডাইরেক্ট আপনার ব্রাউজারে ঘটে, সার্ভার থেকে নয়। Vikunja এছাড়াও Todoist, Microsoft To Do, TickTick এবং Wekan থেকে ইমপোর্ট করতে পারে।
Wekan তার ইমপোর্ট ফর্মে Trello বোর্ডের JSON পেস্ট করলে তা গ্রহণ করে। Kanboard-এ কোনো বিল্ট-ইন Trello ইমপোর্টার নেই, আর যদি আপনার কাছে বছরের পর বছর ধরে জমানো Trello হিস্ট্রি থাকে, তবে এটি বাদ দেওয়াই বুদ্ধিমানের কাজ।
মোবাইল অভিজ্ঞতা কেমন?
পাঁচটি অ্যাপের মধ্যে শুধুমাত্র Vikunja-এর অফিসিয়াল মোবাইল অ্যাপ রয়েছে। প্রতিটি release-এর সাথে Android এবং iOS build দেওয়া থাকে। অ্যাপ রিপোজিটরি এটিকে alpha হিসেবে বর্ণনা করে, তাই এটিকে মূল ব্যবহারের মাধ্যম হিসেবে না দেখে ওয়েব ইন্টারফেসের একটি সহায়ক মাধ্যম হিসেবে বিবেচনা করুন। Planka-এর কোনো অফিসিয়াল অ্যাপ নেই, যদিও এর ওয়েব ইন্টারফেসটি responsive এবং কিছু third-party client রয়েছে। Wekan এবং Kanboard শুধুমাত্র ওয়েব-ভিত্তিক, এবং Kanboard-এর ইন্টারফেসটি স্পষ্টভাবে ডেস্কটপ স্ক্রিনের জন্য তৈরি করা হয়েছে।
লাইসেন্স সংক্রান্ত প্রশ্ন এবং কেন Planka আলাদা
Planka এখন আর ওপেন সোর্স নয়, এবং অধিকাংশ তুলনামূলক আলোচনায় এই বিষয়টি এড়িয়ে যাওয়া হয়। এটি MIT লাইসেন্সের অধীনে শুরু হয়েছিল, 2023 সালে AGPL-3.0-এ স্থানান্তরিত হয় এবং 2.0 সিরিজ থেকে এটি PLANKA Community License-এর অধীনে রিলিজ করা হচ্ছে। এটি PLANKA Software GmbH-এর মালিকানাধীন একটি ফেয়ার-কোড (fair-code) লাইসেন্স। GitHub এর লাইসেন্সকে "Other" হিসেবে দেখায় কারণ এই লাইসেন্সটি OSI অনুমোদিত নয়। আপনার নিজের ব্যবহারের জন্য এটি সেলফ-হোস্ট করা বিনামূল্যে এবং স্পষ্টভাবে অনুমোদিত, যার মধ্যে ব্যক্তিগত, অভ্যন্তরীণ, অলাভজনক এবং শিক্ষামূলক ব্যবহার অন্তর্ভুক্ত। তবে এর অ্যাক্সেস পুনরায় বিক্রি করা বা অন্য কোম্পানির জন্য সার্ভিস হিসেবে এটি চালানো হলে বাণিজ্যিক লাইসেন্সের প্রয়োজন হয়।
দুইজন ব্যবহারকারীর জন্য এটি একটি যৌক্তিক চুক্তি। কিন্তু একটি কোম্পানির ক্ষেত্রে, বিশ জনের কাজ এতে যুক্ত করার আগে এই শর্তগুলো পড়ে নেওয়া জরুরি। বাকি চারটি টুল সাধারণ ওপেন সোর্স: Vikunja হলো AGPL-3.0, Wekan এবং Kanboard হলো MIT, এবং Focalboard হলো Apache 2.0 ও AGPL-3.0-এর মিশ্রণ।
দুটি পছন্দের জন্য পিন করা Compose ফাইল
ইমেজ ট্যাগটি পিন করুন। latest মানে হলো পরবর্তী docker compose pull আপনাকে একটি মেজর ভার্সন থেকে অন্যটিতে নিয়ে যেতে পারে, আর মেজর ভার্সনগুলো এমন ডাটাবেস মাইগ্রেশন চালায় যা সহজে আগের অবস্থায় ফিরিয়ে আনা যায় না। নিচের দুটি ফাইলই হলো আপস্ট্রিম ফাইল, যেখানে ট্যাগটি একটি নির্দিষ্ট রিলিজের সাথে ফিক্স করা হয়েছে।
SQLite-এ Vikunja, একটি কন্টেইনার:
services:
vikunja:
image: vikunja/vikunja:2.5.0
restart: unless-stopped
environment:
VIKUNJA_SERVICE_PUBLICURL: https://tasks.example.com
VIKUNJA_SERVICE_SECRET: replace-with-a-long-random-string
VIKUNJA_SERVICE_TIMEZONE: Europe/Berlin
VIKUNJA_DATABASE_TYPE: sqlite
VIKUNJA_DATABASE_PATH: /app/vikunja/files/vikunja.db
ports:
- "127.0.0.1:3456:3456"
volumes:
- ./files:/app/vikunja/filesপ্রথমে সঠিক মালিকানা (owner) দিয়ে ডাটা ডিরেক্টরি তৈরি করুন, কারণ কন্টেইনারটি UID 1000 হিসেবে চলে এবং root-এর মালিকানাধীন ডিরেক্টরিতে লিখতে পারে না:
mkdir -p files && sudo chown 1000 files
docker compose up -d
docker compose ps
curl -sf http://127.0.0.1:3456/api/v1/infoএকটি সচল স্ট্যাক সার্ভিসটিকে running হিসেবে দেখাবে এবং info endpoint একটি JSON রিটার্ন করবে যাতে version ফিল্ডটি থাকবে। এখানে Connection refused আসার মানে হলো কন্টেইনারটি বন্ধ হয়ে গেছে। docker compose logs vikunja ব্যর্থতার কারণ নির্দেশ করে, এবং ডাটাবেস ফাইলে পারমিশন এরর হওয়া একটি সাধারণ সমস্যা।
PostgreSQL-এ Planka, দুটি কন্টেইনার:
services:
planka:
image: ghcr.io/plankanban/planka:2.1.1
restart: unless-stopped
volumes:
- data:/app/data
ports:
- "127.0.0.1:3000:1337"
environment:
- BASE_URL=https://boards.example.com
- DATABASE_URL=postgresql://postgres@postgres/planka
- SECRET_KEY=replace-with-openssl-rand-hex-64
depends_on:
postgres:
condition: service_healthy
postgres:
image: postgres:16-alpine
restart: unless-stopped
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=planka
- POSTGRES_HOST_AUTH_METHOD=trust
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d planka"]
interval: 10s
timeout: 5s
retries: 5
volumes:
data:
db-data:POSTGRES_HOST_AUTH_METHOD=trust মানে হলো PostgreSQL কোনো পাসওয়ার্ড ছাড়াই যেকোনো কানেকশন গ্রহণ করবে। এটি কেবল তখনই নিরাপদ যখন ডাটাবেস পোর্টটি হোস্টের জন্য উন্মুক্ত (publish) করা হয় না, তাই শুধুমাত্র একই Compose নেটওয়ার্কে থাকা অন্য কন্টেইনারই এতে পৌঁছাতে পারে। postgres সার্ভিসে কোনো ports: এন্ট্রি যোগ করবেন না।
কোনো স্ট্যাকই সরাসরি ইন্টারনেটের মুখোমুখি হওয়া উচিত নয়। উভয়ই 127.0.0.1-এ বাইন্ড করে, তাই সামনে একটি reverse proxy বসান এবং সেখানে TLS (transport layer security) টার্মিনেট করুন। আপনি যখন একাধিক অ্যাপ হোস্ট করবেন, তখন একাধিক Compose অ্যাপের সামনে Traefik ব্যবহার করা একটি সাধারণ পদ্ধতি, এবং Docker Compose বেসিক গাইড এই পৃষ্ঠায় বাদ দেওয়া ফাইলগুলোর অংশগুলো কভার করে।
আপনার বোর্ড একটি ডেটাবেস, তাই এর ব্যাকআপ রাখুন
একটি বোর্ড টুল নীরবে ব্যর্থ হতে পারে। কোনো ভলিউম হারিয়ে না যাওয়া পর্যন্ত কেউ ব্যাকআপের অভাব লক্ষ্য করে না, এবং একটি ক্ষতিগ্রস্ত SQLite ফাইল সাধারণত ওপেন হলেও database disk image is malformed সপ্তাহ পরে ত্রুটি রিপোর্ট করতে পারে।
কখনোই cp ব্যবহার করে চলমান SQLite ফাইল কপি করবেন না। কপি করার সময় রাইট অপারেশন চলতে থাকলে আর্কাইভটি অসম্পূর্ণ থেকে যায় এবং রিস্টোর করার পর ডেটাবেসে অনেক সারি (row) অনুপস্থিত থাকতে পারে। কপি করার জন্য প্রয়োজনীয় কয়েক সেকেন্ডের জন্য সার্ভিসটি বন্ধ রাখুন:
docker compose stop vikunja
tar czf vikunja-$(date +%F).tgz files
docker compose start vikunjaPlanka-এর ক্ষেত্রে, চলমান ক্লাস্টারের ডেটা ডিরেক্টরি কপি না করে PostgreSQL ডাম্প করুন এবং আপলোড ভলিউমটি আলাদাভাবে ব্যাকআপ নিন, কারণ অ্যাটাচমেন্টগুলো ডেটাবেসের ভেতরে থাকে না:
docker compose exec -T postgres pg_dump -U postgres -Fc planka > planka-db.dump
docker volume ls
docker run --rm -v planka_data:/data -v "$PWD":/backup alpine \
tar czf /backup/planka-files.tgz -C /data .docker volume ls কমান্ডটি প্রকৃত ভলিউমের নাম প্রদর্শন করে, যা আপনার Compose প্রজেক্টের নামের সাথে _data যুক্ত থাকে। অস্তিত্বহীন কোনো নাম দিলে এটি একটি খালি ভলিউম তৈরি করবে এবং কোনো ত্রুটি ছাড়াই আপনাকে একটি বৈধ কিন্তু খালি আর্কাইভ দেবে, তাই পরে ফাইলের সাইজ চেক করে নিন।
এরপর, একই সার্ভারে একটি স্ক্র্যাচ স্ট্যাকে এটি একবার রিস্টোর করুন এবং আপনার পরিচিত একটি কার্ড ওপেন করে দেখুন। যে ব্যাকআপ আপনি কখনো রিস্টোর করে দেখেননি, তা কেবল একটি অনুমান। আর্কাইভগুলো সার্ভারের বাইরে কোথাও পাঠান, কারণ যে VPS-কে আপনি সুরক্ষিত করছেন, সেখানে রাখা কপি কোনো প্রকৃত ব্যাকআপ নয়। VPS থেকে restic ব্যাকআপ বিষয়টি এই অংশের সমাধান দেয়।
দুটি সুপারিশ
2 GB VPS-এ দুইজন ব্যবহারকারীর জন্য: Planka ব্যবহার করুন। এটি দেখতে এবং কাজ করার ধরনে Trello-এর সবচেয়ে কাছাকাছি। Trello থেকে ডেটা ইমপোর্ট করার জন্য শুধু একটি ফাইল ড্র্যাগ করলেই হয় এবং 280 MB অলস মেমরি ব্যবহারের ফলে 2 GB-এর বেশিরভাগ অংশই reverse proxy এবং অন্যান্য অ্যাপের জন্য খালি থাকে। Community License-এর আওতায় দুইজন সদস্যের অভ্যন্তরীণ টিম কোনো খরচ ছাড়াই এটি ব্যবহার করতে পারে। যদি আপনি source-available লাইসেন্সের ওপর নির্ভর করতে না চান, তবে একই সার্ভারের জন্য 110 MB মেমরি ব্যবহারকারী open-source বিকল্প হিসেবে Vikunja বেছে নিতে পারেন।
প্রতিষ্ঠানে বিশজন ব্যবহারকারীর জন্য: PostgreSQL-এর সাথে Vikunja ব্যবহার করুন। এই আকারের টিমের জন্য বিশটি আলাদা local password-এর পরিবর্তে OpenID Connect প্রয়োজন। এছাড়া টিম এবং প্রজেক্ট অনুযায়ী শেয়ারিং সুবিধা দরকার হয় এবং কাজের পরিধি বড় হওয়ায় List, Table ও Gantt view কেবল বাড়তি সুবিধা নয়, বরং প্রয়োজনীয় হয়ে দাঁড়ায়। AGPL-3.0 লাইসেন্স ব্যবহারের ফলে সদস্য সংখ্যা বাড়লেও লাইসেন্স নিয়ে কোনো জটিলতা তৈরি হয় না। এটিকে SQLite-এর পরিবর্তে PostgreSQL-এ চালান, একটি reverse proxy-এর পেছনে রাখুন এবং প্রতিদিনের ডেটা ডাম্প সার্ভারের বাইরে অন্য কোথাও সংরক্ষণ করুন।
সার্ভারে যদি 1 GB-এর কম RAM থাকে, তবে উপরের কোনোটিই প্রযোজ্য নয়। সেক্ষেত্রে 70 MB মেমরি ব্যবহারকারী Kanboard বেছে নিন। মেনে নিন যে আপনাকে Trello কার্ডগুলো পুনরায় টাইপ করতে হবে এবং বেঁচে যাওয়া মেমরি 2026 সালের সেলফ-হোস্টিং তালিকা থেকে অন্য কোনো অ্যাপের জন্য ব্যবহার করুন। আপনার পছন্দের টুলের বিস্তারিত ইনস্টলেশন প্রক্রিয়া সংশ্লিষ্ট গাইডে দেওয়া আছে। এই পৃষ্ঠাটি কেবল সঠিক টুল নির্বাচনের জন্য।
FAQ
কোন self-hosted Trello বিকল্পটি সবচেয়ে কম RAM ব্যবহার করে?
Kanboard, যা অলস অবস্থায় প্রায় 70 MB RAM ব্যবহার করে, কারণ এটি PHP এবং SQLite দিয়ে তৈরি এবং প্রতিটি অনুরোধের মাঝে মেমরিতে কোনো তথ্য জমা রাখে না। এর পরেই আছে Vikunja, যা একটি একক Go binary হিসেবে প্রায় 110 MB RAM ব্যবহার করে। Wekan সবচেয়ে বেশি মেমরি খরচ করে, প্রায় 750 MB, কারণ Meteor প্রতিটি সংযুক্ত ব্রাউজারের জন্য Node মেমরিতে একটি live query layer বজায় রাখে। আপনার নিজের সার্ভারে স্ট্যাকটি অলস অবস্থায় থাকলে docker stats ব্যবহার করে মেমরি পরিমাপ করুন, কারণ এগুলো সাধারণ পরিসংখ্যান, কোনো নিশ্চয়তা নয়।
আমি কি আমার Trello বোর্ডগুলো কোনো self-hosted টুলে ইমপোর্ট করতে পারি?
Planka এবং Wekan উভয়ই সরাসরি Trello-এর JSON বোর্ড এক্সপোর্ট গ্রহণ করে। Vikunja Trello-এর OAuth flow-এর মাধ্যমে ইমপোর্ট করে এবং ইন্টারফেসে এটি দেখার আগে কনফিগারেশনে migrator সক্রিয় করতে হয়। Kanboard-এ কোনো বিল্ট-ইন ইমপোর্টার নেই। দুটি সীমাবদ্ধতা মাথায় রাখুন: Planka ব্যবহারকারী বা অ্যাটাচমেন্ট ইমপোর্ট করে না এবং প্রতি কার্ডে কেবল একটি চেক লিস্ট হ্যান্ডেল করতে পারে, আর Trello-এর ডিফল্ট JSON এক্সপোর্ট কোনো সতর্কবার্তা ছাড়াই 1,000 অ্যাকশনের পর ডেটা ট্রাঙ্কেট (truncate) করে দেয়।
2026 সালে Focalboard কি এখনো একটি ভালো পছন্দ?
না। সর্বশেষ standalone রিলিজ, v8.0.0, জুন 2024-এর, যা 5 আগস্ট 2026-এ এই তুলনাটি যাচাই করার সময় থেকে 783 দিন আগের। README ফাইল অনুযায়ী রিপোজিটরিটি বর্তমানে রক্ষণাবেক্ষণ করা হচ্ছে না। Mattermost কেবল একটি আলাদা রিপোজিটরিতে প্লাগইন হিসেবে বোর্ড ডেভেলপমেন্ট চালিয়ে গেছে, তাই আপনি যে সার্ভারটি self-host করবেন, সেই অংশটির ডেভেলপমেন্ট বন্ধ হয়ে গেছে। এর পরিবর্তে Planka বা Vikunja বেছে নিন।
Planka কি এখনো open source?
OSI-এর সংজ্ঞা অনুযায়ী নয়। Planka আগে MIT লাইসেন্সে ছিল, 2023 সালে AGPL-3.0-তে স্থানান্তরিত হয় এবং 2.0 সংস্করণ থেকে এটি PLANKA Community License-এর অধীনে রিলিজ হয়। ব্যক্তিগত, অভ্যন্তরীণ, অলাভজনক এবং শিক্ষামূলক ব্যবহারের জন্য self-hosting বিনামূল্যে। তৃতীয় পক্ষের কাছে অ্যাক্সেস বিক্রি করা বা সার্ভিস হিসেবে চালানোর জন্য বাণিজ্যিক লাইসেন্স প্রয়োজন, এবং ক্যালেন্ডার ভিউ, গেস্ট রোল ও রিকারিং কার্ডগুলো Pro টিয়ারের অন্তর্ভুক্ত। যদি OSI-অনুমোদিত লাইসেন্স আপনার জন্য বাধ্যতামূলক হয়, তবে Vikunja হলো AGPL-3.0 এবং Kanboard হলো MIT লাইসেন্সভুক্ত।
আমার কি PostgreSQL প্রয়োজন, নাকি SQLite যথেষ্ট?
Vikunja, Kanboard এবং Focalboard ডিফল্টভাবে SQLite ব্যবহার করে, যা একটি সার্ভারে অল্প সংখ্যক ব্যবহারকারীর জন্য যথেষ্ট। Planka-এর জন্য PostgreSQL প্রয়োজন এবং এতে SQLite ব্যবহারের কোনো সুযোগ নেই। যখন একাধিক ব্যবহারকারী একসাথে ডেটা লিখবেন, তখন PostgreSQL-এ চলে যান, কারণ SQLite রাইট অপারেশনগুলোকে সিরিয়ালাইজ করে এবং ব্যস্ত ইনস্ট্যান্সে database is locked ত্রুটি দেখা দিতে পারে। নেটওয়ার্ক শেয়ারে SQLite ফাইল রাখবেন না: Kanboard-এর ডকুমেন্টেশনে ঠিক এই কারণেই NFS-এ SQLite ব্যবহার না করার সতর্কবার্তা দেওয়া হয়েছে।