অফলাইন স্থাপনা সংস্করণ
লক্ষ্য পাঠক: স্থাপনার দায়িত্বপ্রাপ্ত IT অ্যাডমিনিস্ট্রেটর বা প্রযুক্তিগত দলপ্রধান। সাধারণ ব্যবহারকারীরা অ্যাডমিনিস্ট্রেটরের স্থাপন করা ইন্ট্রানেট ঠিকানায় প্রবেশ করলেই হবে, এই নথিটি পড়ার প্রয়োজন নেই।
প্রযোজ্য পরিস্থিতি: ব্যাংক ও আর্থিক প্রতিষ্ঠানের ইন্ট্রানেট, সরকারি অধিদপ্তরের নেটওয়ার্ক, প্রতিরক্ষা ও গোপনীয়তামূলক পরিবেশ, BGD e-GOV CIRT-সংরক্ষিত নেটওয়ার্ক, BUET/DU-এর মতো শিক্ষা প্রতিষ্ঠানের ক্যাম্পাস নেটওয়ার্ক, এবং অন্যান্য ইন্টারনেট অ্যাক্সেস না থাকা বা সীমিত পরিবেশ।
কোনো ব্যাকএন্ড নেই, নিবন্ধন প্রয়োজন নেই — সমস্ত ডেটা ব্রাউজারের স্থানীয় স্টোরেজে সংরক্ষিত থাকে। স্থাপনার পরে ইন্ট্রানেটের দলের সদস্যরা ব্রাউজার খুললেই ব্যবহার করতে পারবেন।
দলের ব্যবহার পদ্ধতি
অফলাইন সংস্করণটি একটি সম্পূর্ণ স্ট্যাটিক ওয়েবসাইট। ইন্ট্রানেট সার্ভারে স্থাপনার পরে, সদস্যরা ব্রাউজারের মাধ্যমে ইন্ট্রানেট ঠিকানায় প্রবেশ করে ব্যবহার করতে পারবেন:
১. অ্যাডমিনিস্ট্রেটর অফলাইন সংস্করণটি ইন্ট্রানেট সার্ভারে স্থাপন করেন (যেমন http://192.168.1.100:3000)
২. দলের সদস্যরা ব্রাউজারে সেই ঠিকানা খুলে প্রম্পট ব্রাউজ, অনুসন্ধান এবং কপি করতে পারবেন
৩. প্রতিটি ব্যবহারকারীর সংগ্রহ ও কাস্টম প্রম্পট তাদের নিজস্ব ব্রাউজারে সংরক্ষিত থাকে, একে অপরকে প্রভাবিত করে না
৪. অ্যাকাউন্ট নিবন্ধনের প্রয়োজন নেই, কোনো সফটওয়্যার ইনস্টল করার প্রয়োজন নেই, খুললেই ব্যবহার করা যায়
প্রম্পট লাইব্রেরি (নির্বাচিত প্রম্পট) হল বিল্ড সময়ে প্যাকেজ করা স্ট্যাটিক ডেটা, সকল ব্যবহারকারী একই বিষয়বস্তু দেখেন। প্রতিটি ব্যবহারকারীর সংগ্রহ, কাস্টম প্রম্পট, ক্রম এবং ট্যাগ তাদের নিজ নিজ ব্রাউজারের localStorage-এ সংরক্ষিত থাকে, পরস্পর স্বাধীন।
অনলাইন সংস্করণের সঙ্গে পার্থক্য
| বৈশিষ্ট্য | অনলাইন সংস্করণ | অফলাইন সংস্করণ |
|---|---|---|
| প্রম্পট ব্রাউজ/অনুসন্ধান/ফিল্টার | ✅ | ✅ |
| প্রম্পট কপি | ✅ | ✅ |
| সংগ্রহ ব্যবস্থাপনা | সার্ভার স্টোরেজ | ব্রাউজার স্থানীয় স্টোরেজ |
| কাস্টম প্রম্পট | সার্ভার স্টোরেজ | ব্রাউজার স্থানীয় স্টোরেজ |
| আমার সংগ্রহ (ড্র্যাগ সর্টিং, ট্যাগ) | ✅ | ✅ |
| বহুভাষিক সমর্থন (১৮টি) | ✅ | ✅ |
| ডেটা ইম্পোর্ট/এক্সপোর্ট | ✅ | ✅ (ফরম্যাট পরস্পর সঙ্গতিপূর্ণ) |
| প্রম্পটের বিস্তারিত পৃষ্ঠা | ✅ | ✅ (স্ট্যাটিক ডেটা, মন্তব্য নেই) |
| ব্যবহারকারী নিবন্ধন/লগইন | ✅ | ❌ (অ্যাকাউন্ট প্রয়োজন নেই) |
| কমিউনিটি প্রম্পট তালিকা/ভোটিং | ✅ | ❌ |
| মন্তব্য ও প্রতিক্রিয়া | ✅ | ❌ |
ডেটা স্টোরেজ
প্রতিটি ব্যবহারকারীর ডেটা তাদের নিজস্ব ব্রাউজারের localStorage-এ সংরক্ষিত হয়, সার্ভারের সঙ্গে কোনো সম্পর্ক নেই:
| ডেটা | স্টোরেজ কী | বর্ণনা |
|---|---|---|
| সংগ্রহ তালিকা | local_favorites | সংগৃহীত প্রম্পট ID-র অ্যারে |
| কাস্টম প্রম্পট | local_user_prompts | ব্যবহারকারীর তৈরি প্রম্পটের ডেটা |
| বিন্যাস ক্রম | local_myspace_order | আমার সংগ্রহে কার্ডের ক্রম |
| কাস্টম ট্যাগ | local_custom_tags | ট্যাগের সংজ্ঞা ও বরাদ্দ সম্পর্ক |
- ব্রাউজারের স্থানীয় স্টোরেজের সীমা প্রায় ৫MB, দৈনন্দিন ব্যবহারের জন্য পর্যাপ্ত।
- ব্রাউজার ডেটা মুছে ফেললে ব্যক্তিগত ডেটা হারিয়ে যাবে — নিয়মিত "আমার অ্যাকাউন্ট → ডেটা ব্যবস্থাপনা → এক্সপোর্ট" এর মাধ্যমে ব্যাকআপ নেওয়ার পরামর্শ দেওয়া হচ্ছে।
- কম্পিউটার বা ব্রাউজার পরিবর্তন করার পরে ডেটা পুনরায় ইম্পোর্ট করতে হবে।
স্থাপনা
অফলাইন সংস্করণটি offline শাখার উপর ভিত্তি করে। অ্যাডমিনিস্ট্রেটর একবার স্থাপনা সম্পন্ন করলেই দলের সদস্যরা কোনো অতিরিক্ত পদক্ষেপ ছাড়াই ব্যবহার করতে পারবেন।
Docker স্থাপনা (প্রস্তাবিত)
সবচেয়ে সহজ স্থাপনা পদ্ধতি, একটি কমান্ডেই ইন্ট্রানেট সার্ভারে চালু করা যায়:
# পূর্বনির্মিত অফলাইন সংস্করণ ইমেজ ব্যবহার করুন
docker run -d -p 3000:3000 --name aishort-offline ghcr.io/rockbenben/chatgpt-shortcut:offline
# অথবা Docker Hub ব্যবহার করুন
docker run -d -p 3000:3000 --name aishort-offline rockben/chatgpt-shortcut:offline
স্থাপনার পরে দলের সদস্যরা http://<সার্ভার IP>:3000 ঠিকানায় প্রবেশ করে ব্যবহার করতে পারবেন।
docker-compose ব্যবহার করে:
services:
aishort-offline:
container_name: aishort-offline
image: ghcr.io/rockbenben/chatgpt-shortcut:offline
ports:
- "3000:3000"
restart: unless-stopped
সোর্স কোড থেকে বিল্ড
যদি প্রম্পটের বিষয়বস্তু কাস্টমাইজ করতে বা কনফিগারেশন পরিবর্তন করতে চান:
# অফলাইন শাখা ক্লোন করুন
git clone -b offline https://github.com/rockbenben/ChatGPT-Shortcut.git
cd ChatGPT-Shortcut
# ডিপেন্ডেন্সি ইনস্টল করুন
yarn
# স্থানীয় ডেভেলপমেন্ট
yarn start
# একক ভাষার সংস্করণ বিল্ড করুন (বাংলা)
yarn build --locale bn
# সকল ভাষা বিল্ড করুন
yarn build
বিল্ড আউটপুট build/ ডিরেক্টরিতে থাকে, যা যেকোনো স্ট্যাটিক ফাইল সার্ভারে (Nginx, Apache, Caddy ইত্যাদি) স্থাপন করা যায়।
Nginx কনফিগারেশন উদাহরণ
server {
listen 3000;
server_name _;
root /path/to/build;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
প্ল্যাটফর্ম স্থাপনা
Vercel, Cloudflare Pages-এর মতো প্ল্যাটফর্মে স্থাপনের সময় offline শাখা নির্বাচন করলেই হবে, বাকি পদক্ষেপগুলো অনলাইন সংস্করণের মতোই, বিস্তারিত জানতে প্রকল্প স্থাপনা দেখুন।
ডেটা ইম্পোর্ট ও এক্সপোর্ট
এক্সপোর্ট
"আমার অ্যাকাউন্ট → ডেটা ব্যবস্থাপনা → এক্সপোর্ট" এ প্রবেশ করুন, ব্যক্তিগত সংগ্রহ ও কাস্টম প্রম্পট JSON ফাইল হিসেবে এক্সপোর্ট করুন।
ইম্পোর্ট
নিম্নলিখিত ফরম্যাটের JSON ফাইল ইম্পোর্ট করা যাবে:
- অফলাইন সংস্করণ থেকে এক্সপোর্ট করা ফাইল: সংগ্রহ, প্রম্পট, ক্রম ও ট্যাগ সম্পূর্ণরূপে পুনরুদ্ধার করে
- অনলাইন সংস্করণ থেকে এক্সপোর্ট করা ফাইল: স্বয়ংক্রিয়ভাবে সঙ্গতিপূর্ণভাবে প্রক্রিয়াজাত হয়
- ব্যবহারকারীর প্রম্পট → স্থানীয়ের সঙ্গে মার্জ হয় (শিরোনাম অনুযায়ী ডুপ্লিকেট অপসারণ)
- নির্বাচিত সংগ্রহ (card) → স্থানীয় সংগ্রহের সঙ্গে মার্জ হয়
- কমিউনিটি সংগ্রহ (community) → স্বয়ংক্রিয়ভাবে স্থানীয় কাস্টম প্রম্পটে রূপান্তরিত হয়
- MySpace ক্রম → স্থানীয়ে পুনরুদ্ধার হয়
- কাস্টম ট্যাগ → যুক্ত করে মার্জ হয় (বিদ্যমান ট্যাগ ওভাররাইট করে না)
অনলাইন সংস্করণ থেকে মাইগ্রেশন
১. অনলাইন সংস্করণে (aishort.top) "আমার অ্যাকাউন্ট" পৃষ্ঠা থেকে ডেটা এক্সপোর্ট করুন ২. অফলাইন সংস্করণের "আমার অ্যাকাউন্ট → ডেটা ব্যবস্থাপনা → ইম্পোর্ট" এ সেই JSON ফাইলটি ইম্পোর্ট করুন ৩. কমিউনিটি সংগ্রহগুলি স্বয়ংক্রিয়ভাবে স্থানীয় প্রম্পটে রূপান্তরিত হবে, নির্বাচিত সংগ্রহগুলি স্বাভাবিকভাবে সিঙ্ক হবে
সাধারণ প্রশ্ন
স্থাপনার পরে দল কীভাবে ব্যবহার করবে?
অ্যাডমিনিস্ট্রেটর ইন্ট্রানেট সার্ভারে স্থাপনার পরে, অ্যাক্সেস ঠিকানা (যেমন http://192.168.1.100:3000) দলের সদস্যদের জানিয়ে দিন। প্রত্যেকে ব্রাউজারে এটি খুলে ব্যবহার করতে পারবেন, কোনো ইনস্টলেশন বা নিবন্ধন প্রয়োজন নেই।
প্রত্যেকের ডেটা কি পরস্পরকে প্রভাবিত করবে?
না। প্রত্যেকের সংগ্রহ ও কাস্টম প্রম্পট তাদের নিজস্ব ব্রাউজারের localStorage-এ সংরক্ষিত হয়, সম্পূর্ণ স্বাধীনভাবে। সার্ভারে শুধুমাত্র শেয়ার্ড প্রম্পট লাইব্রেরি (শুধুমাত্র পঠনযোগ্য) থাকে।
ডেটা কি হারিয়ে যাবে?
নিম্নলিখিত কার্যকলাপ ব্যক্তিগত ডেটা হারানোর কারণ হতে পারে:
- ব্রাউজার ডেটা/ক্যাশে মুছে ফেলা
- প্রাইভেট/ইনকগনিটো মোডে ব্রাউজিং
- কম্পিউটার বা ব্রাউজার পরিবর্তন
গুরুত্বপূর্ণ ডেটা নিয়মিতভাবে "আমার অ্যাকাউন্ট → ডেটা ব্যবস্থাপনা → এক্সপোর্ট" এর মাধ্যমে JSON ফাইল হিসেবে ব্যাকআপ নেওয়ার পরামর্শ দেওয়া হচ্ছে।
দলের মধ্যে কাস্টম প্রম্পট শেয়ার করা যাবে কি?
হ্যাঁ, যাবে। একজন JSON ফাইল এক্সপোর্ট করার পরে, অন্যান্য সদস্যরা "আমার অ্যাকাউন্ট → ডেটা ব্যবস্থাপনা → ইম্পোর্ট" এ ইম্পোর্ট করতে পারবেন, স্বয়ংক্রিয়ভাবে ডুপ্লিকেট অপসারণ হবে।
প্রম্পট লাইব্রেরি কীভাবে আপডেট করব?
প্রম্পট লাইব্রেরি হল বিল্ড সময়ে প্যাকেজ করা স্ট্যাটিক ডেটা। আপডেট পদ্ধতি:
১. অ্যাডমিনিস্ট্রেটর সর্বশেষ offline শাখার কোড পুল করুন
২. পুনরায় বিল্ড করে স্থাপন করুন (অথবা সর্বশেষ Docker ইমেজ পুল করুন)
৩. দলের সদস্যরা ব্রাউজার রিফ্রেশ করলেই নতুন বিষয়বস্তু দেখতে পাবেন (ব্যক্তিগত ডেটা অক্ষত থাকবে)
অফলাইন সংস্করণের ডেটা ফরম্যাট কি অনলাইন সংস্করণের সঙ্গে সঙ্গতিপূর্ণ?
সঙ্গতিপূর্ণ। এক্সপোর্ট করা JSON ফরম্যাট একই, দুই সংস্করণের মধ্যে পরস্পর ইম্পোর্ট করা যায়। প্রম্পটের ID আলাদা (অনলাইন সংস্করণে সার্ভার ID, অফলাইন সংস্করণে টাইমস্ট্যাম্প ID), কিন্তু ইম্পোর্ট শিরোনাম অনুযায়ী ডুপ্লিকেট অপসারণ করে, কোনো সংঘর্ষ হবে না।