আমার শেষ ফাবুলা প্রকাশের পর থেকে অগ্রগতি। নতুন হোস্টিংয়ে স্থানান্তর। মেইল সার্ভার, ব্যাকআপ এবং সার্ভার রিসোর্স নোটিফিকেশন সিস্টেম সেটআপ। programmer-underworlds-এর স্থানীয়করণ (Localization)।
শুভেচ্ছা জানবেন। এখন ২৬শে এপ্রিল, ২০২৬, সেন্ট্রাল স্ট্যান্ডার্ড টাইম রাত ০১:৩৭। আমি সিদ্ধান্ত নিলাম যে এখন চিন্তার ডানা মেলার এবং গত ফেব্রুয়ারিতে আমার শেষ ফাবুলা প্রকাশের পর থেকে আমার কাজগুলো তুলে ধরার সঠিক সময়। ইউটিউব দেখার সময় আপনি যে পানীয়টি পছন্দ করেন সেটি নিয়ে তৈরি হয়ে নিন এবং চলুন শুরু করা যাক... :)
আমি এই নিবন্ধটি একটি সুপরিকল্পিত রিপোর্টের পরিবর্তে চিন্তার অবাধ প্রবাহ হিসেবে সাজাতে চাই। :) আমি আমার প্রকল্পের বিভিন্ন অংশে কঠোর পরিশ্রম করেছি যা নিচে বর্ণনা করব এবং এটি বেশ নিবিড় ছিল। খুব সম্ভবত আমি এই নিবন্ধটি বেশ কয়েকটি সেশনে লিখব।
একটি বড় এবং দায়িত্বশীল সিদ্ধান্ত ছিল নতুন হোস্টিংয়ে চলে যাওয়া, কারণ গুগল ক্লাউড (Google Cloud)-এর আগের ফ্রি হোস্টিং আমার প্রয়োজন এবং প্রকল্পের চাহিদা মেটাতে পারছিল না এবং একদিন এটি হঠাৎ হ্যাং হয়ে যায়। আমি ধারণা করেছিলাম যে র্যাম (RAM) পর্যাপ্ত ছিল না কারণ গুগলের ফ্রি হোস্টিংয়ে মাত্র ২ জিবি র্যাম পাওয়া যেত। এর ঠিক পরের দিনই আমি বিকল্প এবং সাশ্রয়ী সুযোগগুলো খুঁজতে শুরু করি। আমি Contabo হোস্টিং খুঁজে পাই, যা আমার মতে (গুগলের বিকল্পগুলোর তুলনায়) বেশ ভালো সুবিধা প্রদান করেছে। এরপর শুরু হলো কাজ... আমি আগের হোস্টিং থেকে বিদ্যমান সেটিংসগুলো নতুনে স্থানান্তর করতে শুরু করি এবং প্রায় এক সপ্তাহের মধ্যে সফলভাবে তা সম্পন্ন করি।
পরবর্তী ধাপে আমি দীর্ঘ সময় ধরে ভাবছিলাম যে কনফিগারেশনের ব্যাকআপ নেওয়া প্রয়োজন। কারণ কনফিগারেশনের একটি বিশাল অংশ ChatGPT-এর সাহায্যে তৈরি করা হয়েছিল এবং নতুন করে সবকিছু সেটআপ করতে অনেক সময় লেগে যেত। আমি rsync-এর কথা ভেবেছিলাম, কিন্তু চ্যাট (LLM) আমাকে restic-এর পরামর্শ দেয়। restic-এর ইনক্রিমেন্টাল ব্যাকআপ (incremental backups) পদ্ধতি আমার খুব পছন্দ হয়েছে। এটি পূর্ণ ব্যাকআপের চেয়ে অনেক দ্রুত কাজ করে এবং অনেকটা git রিপোজিটরির মতো কাজ করে, যা প্রয়োজন হলে আগের সংস্করণে ফিরে যাওয়ার সুযোগ দেয়। আমি দ্রুত আমার সার্ভারের ব্যাকআপের জন্য restic যুক্ত করি এবং ফলাফলে আমি খুব সন্তুষ্ট। এখন আমার সিস্টেমের পূর্ণ ব্যাকআপের জন্য আমি শুধু Contabo-তে আমার VPS-এ লগইন করি এবং একটি স্ক্রিপ্ট চালাই যা সমস্ত কনফিগারেশন আমার লোকাল কম্পিউটারে ব্যাকআপ করে দেয়।
এরপর আমার দীর্ঘদিনের ইচ্ছা ছিল সার্ভারের অবস্থা ভালো না থাকলে নোটিফিকেশন পাওয়া। আরও সুনির্দিষ্টভাবে বললে—ডিস্ক স্পেস শেষ হয়ে গেলে (গুগলে মাত্র ১০ জিবি ছিল, এখন ১০০ জিবি) এবং যদি কোনো কারণে আমার programmer-underworlds প্রজেক্ট (java process) বন্ধ হয়ে যায়, তবে ইমেইলে নোটিফিকেশন পাওয়া। এজন্য আমি সিদ্ধান্তে পৌঁছলাম যে নিজের একটি মেইল সার্ভার থাকা ভালো, কারণ এখনকার VPS কনফিগারেশন সেটি সমর্থন করে (৪ জিবি র্যাম এবং ৪ কোর প্রসেসর, যেখানে গুগলে ছিল ২ কোর)। যেহেতু আমার নিজস্ব ডোমেইন কেনা আছে, তাই আমি বুঝতে পারলাম LLM-এর সাহায্যে মেইল সার্ভার সেটআপ করা বেশ সহজ হবে। এবং আমি সঠিক ছিলাম। :) Mailcow একটি বেশ সহজ এবং সুবিধাজনক সমাধান যাতে আমার প্রয়োজনীয় সবকিছু (web interface, imap, spamassassin) রয়েছে। যাইহোক, আপনার যদি @programmer-underworlds.dev ডোমেইনে একটি ইমেইল বক্স পাওয়ার ইচ্ছা থাকে (সেই সাথে @p-u.dev নামে একটি অ্যালিয়াসও আছে যা সরাসরি কথা বলার সময় বা ফোনে ইমেইল অ্যাড্রেস বলা সহজ করে দেয়), তবে আমাকে pasha@p-u.dev ঠিকানায় লিখে জানান। :)
মেইল সার্ভার সেটআপ করার পর রিসোর্স মনিটরিং সিস্টেম (র্যাম ব্যবহার, ডিস্ক স্পেস, জাভা প্রসেস চেক) সেটআপ করার দরকার ছিল। ChatGPT-এর পরামর্শে আমি monit ইউটিলিটির সাহায্য নেই। এটি বেশ সুবিধাজনক একটি টুল এবং আমি এতে সন্তুষ্ট। উদাহরণস্বরূপ, এখানে monit পেজটি কেমন দেখায় তা দেওয়া হলো, যা আমার প্রয়োজনীয় রিসোর্সগুলোর ভিজ্যুয়াল তথ্য প্রদান করে।
আমি জাভা প্রসেস (icoupserver, programmer-underworlds) এবং সাইটের SSL সার্টিফিকেটের নিয়মিত আপডেট চেক করার সুবিধা যুক্ত করেছি। এখন যদি আমি জাভা প্রসেস বন্ধ করি (যেমন আপডেটের জন্য), তবে আমি আমার ইমেইলে নিচের মতো একটি নোটিফিকেশন পাই:
এখন ২৬শে এপ্রিল, ২০২৬, সন্ধ্যা ১৮:২৯ এবং আমি এই ফাবুলা লেখা চালিয়ে যাচ্ছি।
এরপর আমি নিজেকে প্রশ্ন করলাম, "যদি আমার মেইল সার্ভারটিই বন্ধ হয়ে যায়, তবে আমি মনিট (monit) থেকে নোটিফিকেশন পাব কীভাবে?" প্রথমে আমি ফোনে SMS নোটিফিকেশন সেটআপ করতে চেয়েছিলাম, কিন্তু LLM-এর সাথে আলোচনার পর আমি নিশ্চিত হলাম যে Telegram-এর মাধ্যমে নোটিফিকেশন নেওয়া আরও ভালো। আমি দ্রুত এটি সম্পন্ন করলাম এবং এটি বেশ সহজ ছিল। LLM-এর সাহায্যে একটি Telegram বট এবং মেইল সার্ভারের স্ট্যাটাস সরাসরি আমার Telegram অ্যাকাউন্টে পাঠানোর জন্য একটি মনিট স্ক্রিপ্ট তৈরি করা হলো।
আমার সার্ভারটি দিন দিন একটি পূর্ণাঙ্গ প্রোডাকশন লেভেল সার্ভারের রূপ নিচ্ছে দেখে খুব ভালো লাগছিল। :)
আমি বুঝতে পেরেছিলাম যে আমার মেইল সার্ভারের ওয়েব ইন্টারফেস এবং programmer-underworlds অ্যাপ্লিকেশনের জন্য আলাদা ডোমেইন নাম থাকা প্রয়োজন, যাতে আলাদা পোর্ট নম্বর উল্লেখ না করেই পেজগুলো খোলা যায়। স্বাভাবিকভাবেই আমি ইগর সাইসোয়েভ (Igor Sysoev) দ্বারা তৈরি এবং বড় বড় কোম্পানিগুলোর ব্যবহৃত রিভার্স প্রক্সি প্রোগ্রাম nginx-এর নাম অনেক আগে থেকেই শুনেছিলাম। LLM-এর সাহায্যে প্রায় ২ দিনে এই ধাপটি সম্পন্ন হলো এবং একটি যথাযথ nginx কনফিগারেশন তৈরি করা হলো। এখন আমার সার্ভার সফলভাবে programmer-underworlds.dev এবং mail.programmer-underworlds.dev ডোমেইন নামে রিকোয়েস্টগুলো প্রসেস করছে।
এরপর আমি আমার প্রজেক্টকে দুই ভাগে ভাগ করলাম: programmer-underworlds এবং icoupserver। আমি গেমের লজিক অংশটিকে একটি আলাদা প্রজেক্টে সরিয়ে নেওয়ার সিদ্ধান্ত নিলাম, কারণ এখন আমি গেমের চেয়ে ওয়েবসাইট অংশের কাজ বেশি করছি।
এই সময়ে আমার প্রায়ই মনে হচ্ছিল যে আমার নিবন্ধগুলো আমার মা এবং রুশভাষী বন্ধুদের সাথে শেয়ার করা উচিত। আমি জানতাম যে তাদের অনেকের জন্যই ইংরেজিতে নিবন্ধ পড়া আরামদায়ক হবে না। আমি তাদের ওপর "ম্যানুয়াল" ট্রান্সলেশনের বোঝা চাপাতে চাইনি এবং চেয়েছিলাম তারা যেন তাদের নিজস্ব ভাষায় স্বাচ্ছন্দ্যে আমার সাইটটি ব্যবহার করতে পারেন। তাই আমি রুশ (সেইসাথে চীনা, জাপানি এবং আরও অনেক) ভাষার ব্যবহারকারীদের জন্য সাইটের ইন্টারফেস এবং নিবন্ধগুলো স্থানীয়করণের (Localization) কাজ শুরু করি। যথারীতি প্রায় ২ সপ্তাহের মধ্যে লক্ষ্য অর্জিত হলো এবং এখন অনেক দেশের ব্যবহারকারীরা তাদের নিজস্ব ভাষায় আমার ফাবুলাগুলো পড়ার সুযোগ পাচ্ছেন। এটি সম্পন্ন হওয়ার পর আমি রুশ, চীনা, জাপানি এবং হিন্দি ভাষার জন্য সুন্দর গথিক ফন্ট (Gothic fonts) যুক্ত করেছি।
প্রসঙ্গক্রমে, আমার এক ভালো বন্ধু জখার (Zakhar) কিছুদিন আগে অনেকটা এভাবে বলেছিল, উদ্ধৃতি দিচ্ছি: "ফন্ট পড়া যাচ্ছে না। একদম চোখে রক্ত আসার মতো অবস্থা )"। আপনি যদি তার সাথে একমত হন (ব্যক্তিগতভাবে আমি মনে করি এই ফন্টগুলো চোখের জন্য প্রশান্তি), তবে আমি আপনাকে (এবং তাকেও) এই ফাবুলাটি পড়ার পরামর্শ দিচ্ছি।
আর এখন আমি এই রিপোর্ট-নিবন্ধটি লেখার সময় পেয়েছি। শেষ ফাবুলা লেখার পর থেকে যা যা ঘটেছে তার অনেক কিছুই আমি শেয়ার করতে চেয়েছিলাম। যেমন আমার ইউটিউব অ্যাকাউন্টটি ইউটিউব কর্তৃক ব্লক হয়ে যাওয়া এবং ইউটিউব সাপোর্ট টিমের সাথে কথা বলে আমার প্রায় ১০ বছরের পুরনো ভিডিওগুলোর অ্যাক্সেস পাওয়ার চেষ্টা করা (যা আমি হারিয়ে ফেলেছি) এবং এর ফলে ইউটিউব প্রতিনিধিদের প্রতি আমার তৈরি হওয়া ঘৃণা সম্পর্কে। হয়তো আমি ভবিষ্যতে এই নির্দিষ্ট ঘটনাটি নিয়ে লিখব, কিন্তু এখন আমি এই নিবন্ধটি আমার সার্ভার দ্বারা সমর্থিত অন্যান্য ভাষায় স্থানীয়করণ করতে চাই এবং বিশ্বের সাথে শেয়ার করতে চাই।
আপনার সময় এবং মনোযোগের জন্য ধন্যবাদ। এবং বরাবরের মতোই...
ইম্পেরার রক্ষা করেন (The Emperor Protects)।