SSD Nodes Learn 🎉 VPS $5.50/মাস থেকে
নির্দেশিকা Matt Connorদ্বারা Matt Connor

VPS-এ Cloudron ইনস্টল করার নিয়ম ও প্রয়োজনীয় ধাপসমূহ

একটি নতুন Ubuntu VPS-এ Cloudron ইনস্টল করার পূর্ণাঙ্গ নির্দেশিকা। wildcard DNS কনফিগারেশন, সঠিক সার্ভার সাইজিং, SSL সার্টিফিকেট ইস্যু এবং ব্যাকআপ সেটআপের সহজ নিয়ম জানুন।

VPS-এ Cloudron ইনস্টল করা: সংক্ষিপ্ত সংস্করণ

VPS-এ Cloudron ইনস্টল করার জন্য আপনার একটি নতুন Ubuntu সার্ভার, কমপক্ষে 2 GB RAM এবং এমন একটি ডোমেইন প্রয়োজন যার DNS রেকর্ড আপনি পরিবর্তন করতে পারেন। ইনস্টলেশন প্রক্রিয়াটি মূলত তিনটি কমান্ড এবং একটি রিবুট (reboot)-এর বিষয়। সাধারণত সমস্যাগুলো এই ধাপের আগে (ভুল বেস ইমেজ, ভুল ভার্চুয়ালাইজেশন টাইপ) অথবা পরে (DNS, মেইল, ব্যাকআপ) হয়ে থাকে।

wget https://cloudron.io/cloudron-setup
chmod +x cloudron-setup
sudo ./cloudron-setup

Cloudron সেলফ-হোস্টেড অ্যাপগুলোর জন্য ইনস্টলেশন, আপডেট, ব্যাকআপ এবং TLS (transport layer security) সার্টিফিকেট ইস্যু করার কাজগুলো পরিচালনা করে। প্রতিটি অ্যাপ Docker-এর ভেতরে চলে, সবগুলোর সামনে Nginx থাকে এবং প্রতিটি অ্যাপ আপনার ডোমেইনের নিজস্ব সাবডোমেইন পায়। এই শেষ বিষয়টিই কারণ যে কেন এখানে DNS-এর কাজ সবার আগে করতে হয়।

কেন Cloudron বেস OS নিয়ে খুঁতখুঁতে

ইনস্টলেশনের আগে সেটআপ স্ক্রিপ্ট সার্ভারটি পরীক্ষা করে। কোনো পরীক্ষায় ব্যর্থ হলে নতুন সার্ভার নেওয়া ছাড়া উপায় থাকে না। তাই ইমেজ নির্বাচনের আগে এই শর্তগুলো পড়ে নিন।

  • শুধুমাত্র Ubuntu এবং এর তিনটি নির্দিষ্ট রিলিজ সমর্থিত। অন্য কিছু থাকলে স্ক্রিপ্ট Cloudron requires Ubuntu 20.04, 22.04, 24.04 দিয়ে বন্ধ হয়ে যায়। Debian, Rocky এবং Alpine সমর্থিত নয়। Ubuntu 24.04 এর জন্য Cloudron 8 বা তার পরের ভার্সন প্রয়োজন, স্ক্রিপ্ট নিজে থেকেই তা যাচাই করে নেয়।
  • শুধুমাত্র 64-bit Intel বা AMD প্রসেসর: Error: Cloudron only supports amd64/x86_64। ARM VPS-এ এটি চলবে না।
  • শুধুমাত্র ফুল হার্ডওয়্যার ভার্চুয়ালাইজেশন। কন্টেইনার-ভিত্তিক VPS-এ স্ক্রিপ্ট Error: Cloudron does not support lxc, only runs on bare metal or with full hardware virtualization দিয়ে থেমে যায়, কারণ এটি systemd-detect-virt --container দিয়ে কন্টেইনার শনাক্ত করে। KVM ঠিক আছে, কিন্তু OpenVZ এবং LXC সমর্থিত নয়।
  • রুট ফাইলসিস্টেম অবশ্যই ext4 অথবা xfs হতে হবে। অন্য কিছু হলে আপনি Error: Cloudron requires '/' to be ext4 or xfs পাবেন, যার কারণে btrfs এবং zfs ইমেজগুলো ব্যর্থ হয়।
  • কমপক্ষে 941 MB RAM এবং /-এ 20 GB জায়গা থাকতে হবে, যা free -m এবং রুট ফাইলসিস্টেমের আকার দিয়ে পরিমাপ করা হয়।
  • একটি সম্পূর্ণ নতুন সার্ভার হতে হবে। যদি nginx, docker অথবা node আগে থেকেই ইনস্টল করা থাকে, তবে স্ক্রিপ্ট Error: Some packages like nginx/docker/nodejs are already installed. দিয়ে কাজ করতে অস্বীকার করবে।

শেষের এই পরীক্ষাটি নিয়ে অনেকেই দ্বিমত পোষণ করেন, তাই এর পেছনের কারণটি এখানে দেওয়া হলো। Cloudron নির্দিষ্ট ভার্সনের Docker, nginx, Node.js এবং MySQL ইনস্টল করে, প্রতিটি অ্যাপের জন্য nginx কনফিগারেশন নিজে লেখে এবং iptables ফায়ারওয়াল রুলগুলো নিয়ন্ত্রণ করে। আপনার আগে থেকে ইনস্টল করা Docker-এর ভার্সন ভুল হতে পারে এবং আপনার বিদ্যমান nginx সাইট ফাইলগুলো মুছে যেতে পারে। Cloudron পুরো মেশিনটির নিয়ন্ত্রণ নেয়, তাই একে একটি ডেডিকেটেড VPS দিন।

আরও একটি পরীক্ষা আছে যা এড়িয়ে যাওয়া সহজ। AVX (advanced vector extensions) নেই এমন পুরনো CPU-তে স্ক্রিপ্ট CPU has no AVX support. MongoDB will be disabled প্রদর্শন করে এবং MongoDB প্রয়োজন এমন প্রতিটি অ্যাপ ইনস্টল করা অসম্ভব হয়ে পড়ে। সার্ভার নেওয়ার আগে grep -m1 -o avx /proc/cpuinfo দিয়ে CPU পরীক্ষা করে নিন, যা সক্ষম হোস্টের ক্ষেত্রে avx প্রদর্শন করবে এবং পুরনো হোস্টের ক্ষেত্রে কিছুই দেখাবে না।

Cloudron-এর জন্য কতটুকু RAM প্রয়োজন?

941 MB-এর নিচে স্ক্রিপ্টটি চলতে অস্বীকার করে, যার সাথে Error: Cloudron requires atleast 1GB physical memory ত্রুটি দেখায়। ডকুমেন্টেশনে 2 GB RAM এবং 20 GB ডিস্কের কথা বলা হয়েছে। এই দুটি সংখ্যাই প্ল্যাটফর্মটির জন্য সর্বনিম্ন প্রয়োজনীয়তা, আপনার অ্যাপগুলোর জন্য নয়। একটি অ্যাপ ইনস্টল করার আগেই Cloudron-এ Docker, nginx, নিজস্ব box সার্ভিস, অ্যাপগুলোকে দেওয়া ডাটাবেস কন্টেইনার (MySQL, PostgreSQL, MongoDB), Redis এবং মেইল স্ট্যাক চলতে থাকে। একটি নতুন ইনস্টলেশনে docker ps চালিয়ে দেখুন এবং সেগুলোর সংখ্যা গণনা করুন।

অ্যাপের মেমোরি লিমিট এই বেস মেমোরির অতিরিক্ত হিসেবে কাজ করে। প্রতিটি অ্যাপ প্যাকেজ একটি কম ডিফল্ট লিমিট নিয়ে আসে এবং আপনি অ্যাপের Resources ভিউতে থাকা স্লাইডার ব্যবহার করে তা বাড়াতে পারেন। যখন কোনো অ্যাপ তার লিমিট অতিক্রম করে, তখন সেটি রিস্টার্ট হয় এবং আপনাকে একটি OOM (out of memory) নোটিফিকেশন পাঠায়। তাই কোনো বক্সে যদি একটি অ্যাপ বারবার রিস্টার্ট হতে থাকে, তবে সাধারণত সেটি কোনো বাগ নয়, বরং লিমিটের সমস্যা।

আমি নিচে সাইজিংয়ের একটি পরামর্শ দিচ্ছি। এগুলো এমন একটি সার্ভারের জন্য সুপারিশ যা আপনাকে আগামী মাসে পুনরায় তৈরি করতে হবে না। এগুলো কোনো পরিমাপকৃত বেঞ্চমার্ক ফলাফল নয়।

ChartCloudron VPS sizing floor by number of apps
The data behind this chart
[
  {
    "label": "2 apps (free tier)",
    "vcpu": 2,
    "ram_gb": 4,
    "disk_gb": 60
  },
  {
    "label": "5 apps",
    "vcpu": 4,
    "ram_gb": 8,
    "disk_gb": 120
  },
  {
    "label": "10 apps",
    "vcpu": 6,
    "ram_gb": 16,
    "disk_gb": 240
  }
]

4 GB RAM এবং 60 GB ডিস্কের সার্ভারে দুটি অ্যাপ স্বাচ্ছন্দ্যে চলে। প্রায় দশটি অ্যাপের জন্য 16 GB RAM এবং 240 GB ডিস্ক প্রয়োজন, কারণ প্ল্যাটফর্মের বেস মেমোরি কখনোই কমে না এবং প্রতিটি অ্যাপ একটি Docker ইমেজ, একটি ডাটাবেস এবং নিজস্ব ডাটা যোগ করে। ডিস্ক মানুষের প্রত্যাশার চেয়ে দ্রুত পূর্ণ হয়: ইমেজ, অ্যাপ ডাটা এবং লোকাল ব্যাকআপ একই ভলিউম শেয়ার করে, যতক্ষণ না আপনি ব্যাকআপগুলো বক্স থেকে সরিয়ে নিচ্ছেন।

Cloudron প্রতিটি অ্যাপকে আনলিমিটেড সোয়াপ (swap) দেয়, তাই আপনার সেট করা মেমোরি লিমিট শুধুমাত্র RAM-এর ক্ষেত্রে প্রযোজ্য। কোনো সোয়াপ ফাইল নেই এমন VPS ইমেজে, swapon --show কিছুই দেখায় না এবং মেমোরির চাপ সরাসরি OOM রিস্টার্টে পরিণত হয়, অ্যাপ ধীরগতির হওয়ার পরিবর্তে। 2 GB সোয়াপ যোগ করা একটি সস্তা সুরক্ষা, যদিও এটি প্রকৃত মেমোরির বিকল্প নয়। লিমিট টিউন করার জন্য যে সময় ব্যয় করবেন তার তুলনায় বিভিন্ন VPS প্ল্যানের মূল্যের পার্থক্য খুবই সামান্য, তাই একটি VPS-এর প্রকৃত খরচ দেখুন এবং পরবর্তী বড় সাইজটি কিনুন।

DNS: wildcard রেকর্ড যা অ্যাপ সাবডোমেনগুলোকে কার্যকর করে

Cloudron ড্যাশবোর্ডকে my.example.com-এ রাখে এবং প্রতিটি অ্যাপকে তার নিজস্ব সাবডোমেনে স্থাপন করে, তাই DNS পরবর্তী কোনো ধাপ না হয়ে বরং একটি পূর্বশর্ত। প্রথমবার ড্যাশবোর্ড খোলার আগেই এই রেকর্ডগুলোকে সার্ভারের পাবলিক IP ঠিকানায় পয়েন্ট করুন:

  • my.example.com একটি A রেকর্ড হিসেবে। এটি হলো ড্যাশবোর্ড।
  • *.example.com একটি A রেকর্ড হিসেবে। এটিই সেই রেকর্ড যা অ্যাপ সাবডোমেনগুলোকে কার্যকর করে, ফলে আপনি যখনই অ্যাপ ইনস্টল করবেন, wiki.example.com এবং git.example.com সাথে সাথে রিজলভ হবে।
  • example.com একটি A রেকর্ড হিসেবে, শুধুমাত্র যদি আপনি বেয়ার ডোমেনে (bare domain) কোনো অ্যাপ রাখতে চান।

একটি wildcard রেকর্ডের অগ্রাধিকার একটি নির্দিষ্ট রেকর্ডের চেয়ে কম, তাই অন্য কোথাও পয়েন্ট করা কোনো বিদ্যমান www.example.com কাজ চালিয়ে যাবে।

সেটআপের সময় আপনি বেছে নেবেন Cloudron এরপর থেকে কীভাবে DNS পরিচালনা করবে:

  • একটি API প্রোভাইডার। Cloudron Cloudflare, DigitalOcean, Route53, Hetzner, Porkbun, Linode, deSEC, Gandi, Namecheap এবং আরও প্রায় বিশটির জন্য একটি টোকেন সংরক্ষণ করে এবং মেইল রেকর্ডসহ প্রতিটি রেকর্ড নিজেই লিখে রাখে।
  • Wildcard। আপনি নিজে * রেকর্ডটি যোগ করবেন এবং Cloudron কিছুই লিখবে না।
  • Manual। Cloudron আপনাকে প্রতিটি রেকর্ড দেখাবে এবং প্রতিটি অ্যাপ ইনস্টলের আগে আপনি সেগুলো যোগ না করা পর্যন্ত অপেক্ষা করবে।

একটি wildcard DNS রেকর্ড মানেই wildcard সার্টিফিকেট নয়। ডিফল্ট সার্টিফিকেট প্রোভাইডার হলো Let's Encrypt Prod - Wildcard, যা DNS-এর মাধ্যমে মালিকানা প্রমাণ করে, তাই এটি শুধুমাত্র একটি API প্রোভাইডারের সাথেই কাজ করে। Wildcard বা Manual ব্যাকএন্ডে আপনি প্রতি অ্যাপে একটি করে সার্টিফিকেটের ওপর নির্ভর করেন যা HTTP-এর মাধ্যমে ভ্যালিডেট হয়, যার অর্থ হলো ইনবাউন্ড পোর্ট 80 সবসময় খোলা রাখতে হবে। যদি আপনার রেজিস্ট্রার বা DNS হোস্ট API তালিকায় থাকে, তবে সেটিই ব্যবহার করুন: মেইল রেকর্ড এবং সার্টিফিকেট—উভয় দায়িত্বই আপনার থেকে সরে যাবে।

এগোনোর আগে যাচাই করে নিন। dig +short my.example.com এবং dig +short anything.example.com উভয়ই আপনার সার্ভারের IP ঠিকানা প্রদর্শন করা উচিত। যদি wildcard কুয়েরি কিছু না দেখায়, তবে ড্যাশবোর্ড ঠিকঠাক কাজ করলেও পরবর্তীতে অ্যাপগুলো ব্যর্থ হবে।

যদি ডোমেনটি Cloudflare-এর পেছনে থাকে, তবে রেকর্ডগুলোকে DNS only মোডে সেট করুন। প্রক্সি শুধুমাত্র HTTP এবং HTTPS ফরওয়ার্ড করে, ফলে মেইল পোর্টগুলো কাজ করা বন্ধ করে দেয় এবং প্রতিটি অ্যাপ ভিজিটরের IP-এর পরিবর্তে একটি Cloudflare ঠিকানা দেখতে পায়।

সেটআপ স্ক্রিপ্টটি চালান

wget https://cloudron.io/cloudron-setup
chmod +x cloudron-setup
sudo ./cloudron-setup

এটি root হিসেবে অথবা sudo ব্যবহার করে চালান, কারণ অন্যথায় এটি প্রথমেই This script should be run as root. প্রদর্শন করবে। ইনস্টলেশন সম্পন্ন হতে কয়েক মিনিট সময় লাগে এবং এই সময়ে কোনো আউটপুট দেখা যায় না, কারণ apt-এর আউটপুট এবং Docker pull-এর তথ্য একটি লগ ফাইলে জমা হয়। অন্য একটি SSH সেশন থেকে এটি পর্যবেক্ষণ করুন:

tail -f /var/log/cloudron-setup.log

সবশেষে এটি After reboot, visit one of the following URLs and accept the self-signed certificate to finish setup. এবং আপনার সার্ভারের ঠিকানা প্রদর্শন করবে, তারপর The server has to be rebooted to apply all the settings. Reboot now ? [Y/n] জানতে চাইবে। yes উত্তর দিন। যদি আপনার রিস্টার্টের সময় নির্ধারণ করার প্রয়োজন হয় তবে --skip-reboot ফ্ল্যাগটি ব্যবহার করতে পারেন, তবে সার্ভারটি পুনরায় চালু না হওয়া পর্যন্ত Cloudron ব্যবহার করা সম্ভব নয়।

প্রথম বুট: ডোমেইন, DNS ব্যাকএন্ড এবং অ্যাডমিন অ্যাকাউন্ট

https://<server-ip> খুলুন এবং ব্রাউজারের সতর্কবার্তাটি গ্রহণ করুন। সার্টিফিকেটটি সেলফ-সাইনড (self-signed), কারণ Cloudron এখনও আপনার ডোমেইন সম্পর্কে জানে না, তাই কোনো সার্টিফিকেট অথরিটির কাছে আবেদন করার মতো তথ্য তার কাছে নেই। Chrome-এ Advanced-এ ক্লিক করুন, তারপর Proceed to <ip> (unsafe)-এ ক্লিক করুন। Firefox-এ Advanced-এ ক্লিক করুন, তারপর Accept the Risk and Continue-এ ক্লিক করুন।

প্রথম স্ক্রিনে আপনার ডোমেইন জানতে চাওয়া হবে। example.com লিখুন এবং ড্যাশবোর্ডটি my.example.com-এ সেটেল হবে। আপনি চাইলে cloudron.example.com-এর মতো কোনো সাবডোমেইন ব্যবহার করতে পারেন, সেক্ষেত্রে ড্যাশবোর্ডটি my.cloudron.example.com-এ থাকবে। DNS ব্যাকএন্ড নির্বাচন করুন, আপনার কাছে থাকলে API টোকেনটি পেস্ট করুন এবং এমন একটি ইমেইল ঠিকানা দিয়ে অ্যাডমিন অ্যাকাউন্ট তৈরি করুন যা আপনি নিয়মিত চেক করেন: Let's Encrypt রেজিস্ট্রেশন এবং প্ল্যাটফর্মের প্রতিটি অ্যালার্ট এই ঠিকানায় পাঠানো হবে।

আপনি সেভ করলে, Cloudron সার্টিফিকেটগুলোর জন্য অনুরোধ পাঠাবে এবং ড্যাশবোর্ডটিকে https://my.example.com-এ সরিয়ে নেবে। সেই মুহূর্ত থেকে IP অ্যাড্রেস URL-টি কাজ করা বন্ধ করে দেবে, তাই নতুন URL-টি বুকমার্ক করে রাখুন।

সার্টিফিকেট: কী রিনিউ হয় এবং কখন তা বন্ধ হয়ে যায়

সার্টিফিকেট রিনিউয়াল স্বয়ংক্রিয়ভাবে হয় এবং এটি ACME Renewal Information (ARI) অনুসরণ করে। এটি এমন একটি সময়সূচী যা সার্টিফিকেট অথরিটি প্রকাশ করে। বাস্তবে, মেয়াদের এক মাস আগে এটি রিনিউ হয়ে যায়। রিনিউয়াল ব্যর্থ হলে অ্যাডমিন অ্যাকাউন্টে ইমেইল পাঠানো হয় এবং মেয়াদোত্তীর্ণ সার্টিফিকেটের ক্ষেত্রে সিস্টেম স্বয়ংক্রিয়ভাবে বিল্ট-ইন self-signed সার্টিফিকেটে ফিরে যায়। গতকাল পর্যন্ত ঠিকঠাক কাজ করা কোনো সাইটে ব্রাউজার ওয়ার্নিং দেখানোর অর্থই হলো এই ফলব্যাক প্রক্রিয়াটি কার্যকর হয়েছে।

বেশিরভাগ সমস্যার পেছনে দুটি কারণ থাকে। HTTP ভ্যালিডেশনের জন্য ইনবাউন্ড port 80 প্রয়োজন হয়। তাই "সবকিছুই তো HTTPS" ভেবে port 80 বন্ধ করে দিলে Wildcard বা Manual DNS ব্যাকএন্ডে থাকা প্রতিটি অ্যাপের রিনিউয়াল প্রক্রিয়া বাধাগ্রস্ত হয়। DNS ভ্যালিডেশনের জন্য এমন একটি API token প্রয়োজন যার রাইট অ্যাক্সেস (write access) সচল আছে। তাই টোকেন পরিবর্তন বা এর পারমিশন সীমিত করে দিলে রিনিউয়াল নীরবে ব্যর্থ হতে থাকে, যতক্ষণ না ওয়ার্নিং ইমেইল আসে।

Domains ভিউতে একটি Renew All বাটন রয়েছে যা দিয়ে তাৎক্ষণিকভাবে রিনিউয়াল চেষ্টা করা যায়। এছাড়া পরীক্ষার জন্য Let's Encrypt Staging প্রোভাইডার ব্যবহার করা যায়। Staging সার্টিফিকেটগুলো ব্রাউজার কর্তৃক অবিশ্বস্ত হিসেবে গণ্য হয়, আর এটাই এর উদ্দেশ্য: প্রোডাকশন রেট লিমিট খরচ না করেই আপনি যতবার খুশি রিনিউয়াল চেষ্টা করতে পারেন।

আপনার কি বিল্ট-ইন মেইল সার্ভার ব্যবহার করা উচিত?

Cloudron-এ IMAP মেইলবক্স, সাবমিশন, sieve ফিল্টার এবং DKIM (domainkeys identified mail) সাইনিং সহ একটি সম্পূর্ণ মেইল স্ট্যাক থাকে। আপনি ড্যাশবোর্ডের Email সেকশনে প্রতিটি ডোমেইনের জন্য এটি চালু করতে পারেন। মেইল ডেলিভারি নিশ্চিত করাটাই সবচেয়ে কঠিন কাজ, এবং এই জটিলতার সাথে Cloudron-এর কোনো সম্পর্ক নেই।

  • স্প্যাম নিয়ন্ত্রণের জন্য বেশিরভাগ VPS প্রোভাইডার আউটবাউন্ড পোর্ট 25 ব্লক করে রাখে। কিছু প্রোভাইডার সাপোর্ট টিকিটের মাধ্যমে এটি আনব্লক করে দেয়। সার্ভার থেকে nc -zv aspmx.l.google.com 25 দিয়ে পরীক্ষা করুন (কমান্ডটি না থাকলে netcat-openbsd ইনস্টল করুন)। ওপেন পোর্ট succeeded রিপোর্ট করে, আর ব্লক করা পোর্ট টাইম-আউট না হওয়া পর্যন্ত ঝুলে থাকে।
  • PTR রেকর্ড (রিভার্স DNS) আপনার DNS হোস্ট নয়, বরং আপনার VPS প্রোভাইডার সেট করে এবং এটি অবশ্যই মেইল হোস্টনামের সাথে মিলতে হবে। জেনেরিক PTR যুক্ত ঠিকানা থেকে পাঠানো মেইল স্প্যাম ফোল্ডারে চলে যায়।
  • API DNS ব্যাকএন্ড ব্যবহার করলে SPF, DKIM এবং DMARC রেকর্ড আপনার জন্য স্বয়ংক্রিয়ভাবে তৈরি হয়। Wildcard বা Manual ব্যাকএন্ডের ক্ষেত্রে আপনাকে এগুলো হাতে যোগ করতে হবে, এবং DKIM রেকর্ড না থাকলে আপনার সাইন করা প্রতিটি মেসেজ যাচাইযোগ্য হবে না।

অধিকাংশ ব্যবহারকারীর জন্য কার্যকর পদ্ধতি হলো Cloudron-এ মেইল গ্রহণ করা এবং Email ভিউতে কনফিগার করা SendGrid, Postmark, Mailgun বা Amazon SES-এর মতো কোনো রিলে ব্যবহার করে মেইল পাঠানো। রিলেটিকে আপনার ডোমেইনের যেকোনো ঠিকানা থেকে মেইল পাঠানোর অনুমতি দিতে হবে, অন্যথায় বিভিন্ন প্রেরকের কাছ থেকে আসা অ্যাপ নোটিফিকেশন প্রত্যাখ্যাত হবে। যদি মেইল সার্ভার ব্যবহারের জন্যই আপনি সার্ভারটি কিনে থাকেন, তবে Mailcow-এর মতো একটি ডেডিকেটেড মেইল সার্ভার আলাদা বক্সে এবং নিজস্ব IP রেপুটেশন সহ চালান।

আপনি যদি Cloudron Email একেবারেই ব্যবহার না করেন, তবে আপনার প্রোভাইডারের ফায়ারওয়ালে 25, 465, 587, 993 এবং 4190 পোর্টগুলো ব্লক করে দিন। এটি সার্ভারে না করে ফায়ারওয়ালেই করুন, কারণ Cloudron নিজেই iptables রুল লেখে এবং সেগুলো নিয়ন্ত্রণ করতে চায়। এটি সাধারণ VPS-এর ঠিক বিপরীত, যেখানে আপনি নিজেই ufw রুল ম্যানেজ করেন

ব্যাকআপের প্রয়োজন হওয়ার আগেই ব্যাকআপ টার্গেট কনফিগার করুন

ডিফল্টভাবে ব্যাকআপগুলো /var/backups পাথ-এ লোকাল ফাইলসিস্টেমে জমা হয়, যা সার্ভারের অন্যান্য ডেটার মতোই একই ডিস্কে থাকে। ডকুমেন্টেশনে স্পষ্টভাবে বলা হয়েছে: "প্ল্যাটফর্ম সার্ভারের একই ফিজিক্যাল ডিস্কে ব্যাকআপ রাখা ঝুঁকিপূর্ণ।" একটি ডিস্ক নষ্ট হলে অ্যাপ এবং ব্যাকআপ উভয়ই হারিয়ে যাবে।

Backups ওপেন করুন, তারপর Backup Sites-এ যান এবং প্রথম দিনেই এটিকে অন্য কোনো স্থানে নির্দেশ করুন। S3-compatible অবজেক্ট স্টোরেজ সাধারণত এর সমাধান (Backblaze B2, Wasabi, Cloudflare R2, DigitalOcean Spaces, অথবা দ্বিতীয় কোনো সার্ভারে থাকা MinIO bucket), এছাড়া SSHFS, NFS, CIFS এবং সাধারণ ফাইলসিস্টেম টার্গেটও সমর্থিত।

তিনটি সেটিংস নির্ধারণ করে আপনার ব্যাকআপটি কার্যকর কি না:

  • Format. tgz প্রতিটি অ্যাপের জন্য একটি করে কম্প্রেসড আর্কাইভ তৈরি করে এবং প্রতিবার পুরো ফাইলটি পুনরায় আপলোড করে। rsync শুধুমাত্র পরিবর্তিত ফাইলগুলো আপলোড করে, যা বড় Nextcloud-এর ক্ষেত্রে অনেক সাশ্রয়ী, তবে এতে স্টোরেজ API-তে অনেক বেশি রিকোয়েস্ট পাঠাতে হয়।
  • Encryption. ঐচ্ছিক AES-256 এনক্রিপশন যা ফাইলের কন্টেন্ট এবং ফাইলের নাম উভয়কেই সুরক্ষিত রাখে। Cloudron পাসওয়ার্ডের কোনো কপি রাখে না, তাই এটি হারিয়ে ফেললে আপনি নিজেও ব্যাকআপ ডিক্রিপ্ট করতে পারবেন না। সেভ বাটনে ক্লিক করার আগে এটি একটি সেলফ-হোস্টেড পাসওয়ার্ড ম্যানেজার-এ সংরক্ষণ করুন।
  • Retention. এটি সংখ্যায় লেখা হয়, যেমন 7টি দৈনিক এবং 4টি সাপ্তাহিক। অবজেক্ট স্টোরেজে দীর্ঘমেয়াদী রিটেনশন রাখলে প্রতি মাসে বিল আসবে, তাই এমন সংখ্যা বেছে নিন যার খরচ আপনি বহন করতে পারবেন।

এরপর একটি রিস্টোর পরীক্ষা করুন। একটি ছোট অ্যাপ ইনস্টল করুন, ড্যাশবোর্ড থেকে সেটি রিস্টোর করুন এবং দেখুন ডেটাসহ সেটি ফিরে আসে কি না। যে ব্যাকআপ কখনো রিস্টোর করে দেখা হয়নি, তা কেবল একটি অনুমান মাত্র।

ফ্রি টায়ারের সীমাবদ্ধতা

আগস্ট 2026 অনুযায়ী, ফ্রি প্ল্যানে সর্বোচ্চ দুটি অ্যাপ ইনস্টল করা যায়। এর সাথে বাকি সব ফিচার অন্তর্ভুক্ত থাকে: অ্যাপ আপডেট, প্রতি অ্যাপের জন্য আলাদা ব্যাকআপ, ফায়ারওয়াল, মেইল সার্ভার এবং সিঙ্গেল সাইন-অন। তৃতীয় অ্যাপটি ইনস্টল করতে চাইলে আপনার একটি লাইসেন্স প্রয়োজন হবে। পেইড প্ল্যানগুলোতে অ্যাপের সংখ্যার সীমাবদ্ধতা তুলে দেওয়া হয় এবং উচ্চতর প্ল্যানে ইউজার গ্রুপ ও রোল, ডিরেক্টরি সার্ভার এবং একাধিক ব্যাকআপ সাইটের সুবিধা যোগ করা হয়। দাম পরিবর্তিত হতে পারে, তাই কোনো টিউটোরিয়ালের সংখ্যার ওপর নির্ভর না করে Cloudron-এর প্রাইসিং পেজ দেখে নিন।

একটি লাইসেন্স একটি Cloudron ইনস্টলেশনের জন্য প্রযোজ্য, তাই দুটি ছোট সার্ভারের খরচ একটি বড় সার্ভারের খরচের দ্বিগুণ। এই প্রাইসিং মডেলের কারণে বেশিরভাগ মানুষ একটি বড় VPS ব্যবহার করতে উৎসাহিত হন, যা বিভিন্ন মেশিনে সার্ভিস ছড়িয়ে রাখার প্রচলিত পরামর্শের বিপরীত। এটি মাথায় রেখে সার্ভারের আকার নির্ধারণ করুন, কারণ পরবর্তীতে সার্ভিস আলাদা করতে গেলে আপনাকে দ্বিগুণ খরচ করতে হবে।

যখন কোনো কিছু কাজ করে না

বিল্ট-ইন চেক দিয়ে শুরু করুন। এটি DNS, সার্টিফিকেট, ডিস্ক, মেমরি এবং প্রতিটি সার্ভিস পর্যায়ক্রমে পরীক্ষা করে এবং কোন টেস্টটি ব্যর্থ হয়েছে তা জানিয়ে দেয়:

sudo cloudron-support --troubleshoot

এরপরে, সাধারণ systemd (সিস্টেম এবং সার্ভিস ম্যানেজার) টুলগুলো ব্যবহার করুন। systemctl status box Cloudron সার্ভিসের বর্তমান অবস্থা জানায়, journalctl -u box -n 100 এর সাম্প্রতিক লগগুলো প্রদান করে এবং journalctl -u docker এর নিচের কন্টেইনার রানটাইম সম্পর্কে তথ্য দেয়। ইনস্টলেশনের সময় কোনো সমস্যা হলে তা /var/log/cloudron-setup.log ফাইলে সংরক্ষিত থাকে।

ড্যাশবোর্ড লোড না হওয়ার কারণ সাধারণত Cloudron নয়, বরং DNS বা প্রোভাইডারের ফায়ারওয়াল। আপনার ল্যাপটপ থেকে dig +short my.example.com কমান্ডটি চালান এবং নিশ্চিত করুন যে প্রোভাইডারের নেটওয়ার্ক ফায়ারওয়ালে 80 এবং 443 পোর্ট খোলা আছে, যা সার্ভারের নিজস্ব রুল থেকে আলাদা একটি নিয়ন্ত্রণ ব্যবস্থা। আপনি যদি নতুন করে শুরু করতে চান, তবে স্ক্রিপ্টটি Error: Cloudron is already installed. To reinstall, start afresh ত্রুটির মাধ্যমে দ্বিতীয়বার চালানো বাধা দেবে; সেক্ষেত্রে সার্ভারটি নতুন করে তৈরি করাই সঠিক সমাধান।

যখন Cloudron আপনার জন্য উপযুক্ত নয়

আপনি যখন অবকাঠামোর পরিবর্তে সরাসরি অ্যাপ্লিকেশন ব্যবহার করতে চান, তখন Cloudron উপযুক্ত। কিন্তু আপনি যদি নিজের মতো করে কন্টেইনার চালাতে চান, তবে এটি খুব একটা কার্যকর নয়; কারণ এটি nginx, Docker এবং firewall-এর নিয়ন্ত্রণ নিজের কাছে রাখে এবং আপনার করা পরিবর্তনগুলো মুছে ফেলে। আপনার পরিকল্পনা যদি Docker compose ফাইল নিয়ে হয়, তবে আপনার নিজস্ব Docker Compose স্ট্যাকের সামনে Traefik ব্যবহার করা আপনাকে একই ধরনের স্বয়ংক্রিয় TLS এবং সাবডোমেইন রাউটিং সুবিধা দেবে, যেখানে কোনো অতিরিক্ত প্ল্যাটফর্মের প্রয়োজন হবে না। আপনি যদি এখনো সিদ্ধান্ত না নিয়ে থাকেন, তবে Cloudron, CasaOS এবং Coolify-এর তুলনা আপনাকে এদের পার্থক্য বুঝতে সাহায্য করবে, এবং একটি ইনস্টলেশন গাইডের চেয়ে সেলফ-হোস্ট করার মতো অ্যাপ্লিকেশনের বিস্তৃত তালিকা থেকে শুরু করা অনেক বেশি কার্যকর।

FAQ

VPS-এ Cloudron চালানোর জন্য কতটুকু RAM প্রয়োজন?

setup script 941 MB-এর নিচে চলতে অস্বীকার করে এবং ডকুমেন্টেশনে 2 GB-এর কথা বলা হয়েছে, কিন্তু এটি কোনো অ্যাপ ছাড়া শুধুমাত্র প্ল্যাটফর্মটির জন্য ন্যূনতম প্রয়োজনীয়তা। Cloudron প্রথম বুট থেকেই Docker, nginx, নিজস্ব box সার্ভিস, ডাটাবেস কন্টেইনার এবং মেইল স্ট্যাক চালায়। দুটি অ্যাপের জন্য 4 GB এবং প্রায় দশটি অ্যাপের জন্য 16 GB RAM বরাদ্দ রাখুন। এছাড়া একটি swap file যুক্ত করুন, কারণ Cloudron অ্যাপগুলোকে আনলিমিটেড swap ব্যবহারের সুযোগ দেয় এবং swap না থাকলে মেমোরির চাপে অ্যাপগুলো রিস্টার্ট হতে পারে।

আমি কি Debian-এ অথবা আগে থেকে Docker আছে এমন কোনো সার্ভারে Cloudron ইনস্টল করতে পারি?

কোনোটিই কাজ করবে না। script-টি রিলিজ চেক করে এবং Cloudron requires Ubuntu 20.04, 22.04, 24.04 এর কারণে থেমে যায়, তাই Debian, Rocky এবং Alpine সমর্থিত নয়। এছাড়া nginx, docker অথবা node আগে থেকে উপস্থিত থাকলে এটি কাজ করা বন্ধ করে দেয়, কারণ এটি এগুলোর নির্দিষ্ট ভার্সন ইনস্টল করে এবং নিজেই nginx কনফিগারেশন ও iptables রুল লিখে নেয়। একটি নতুন Ubuntu ইমেজ এবং KVM VPS থেকে শুরু করুন।

ড্যাশবোর্ড কাজ করলেও আমার অ্যাপের সাবডোমেইনগুলো কেন কাজ করছে না?

wildcard DNS রেকর্ডটি অনুপস্থিত। সেটআপের সময় my.example.com এর জন্য একটি A রেকর্ড তৈরি করতে হয় বা প্রয়োজন হয়, তাই ড্যাশবোর্ড কাজ করে, কিন্তু wiki.example.com NXDOMAIN রিটার্ন করে এবং ব্রাউজার জানায় যে সাইটটি খুঁজে পাওয়া যাচ্ছে না। *.example.com এর জন্য সার্ভারের IP নির্দেশ করে একটি A রেকর্ড যোগ করুন, তারপর অ্যাপ ইনস্টল করার আগে dig +short wiki.example.com দিয়ে নিশ্চিত করুন।

আমাকে কি অবশ্যই Cloudron মেইল সার্ভার ব্যবহার করতে হবে?

না। আপনি ইনকামিং ইমেইল বন্ধ রাখতে পারেন এবং Postmark, Mailgun বা Amazon SES-এর মতো কোনো এক্সটারনাল রিলে ব্যবহার করে মেইল পাঠাতে পারেন। আপনার প্রোভাইডার যদি আউটবাউন্ড পোর্ট 25 ব্লক করে রাখে অথবা IP অ্যাড্রেসের কোনো মেইল রেপুটেশন না থাকে, তবে এটিই নিরাপদ বিকল্প। আপনি যদি Cloudron Email পুরোপুরি এড়িয়ে যান, তবে সার্ভারের বদলে প্রোভাইডারের ফায়ারওয়ালে 25, 465, 587, 993 এবং 4190 পোর্টগুলো বন্ধ করে দিন।

ফ্রি প্ল্যানে দুটি অ্যাপের সীমা অতিক্রম করলে কী হয়?

ড্যাশবোর্ড তৃতীয় অ্যাপ ইনস্টল করতে বাধা দেয় এবং একটি লাইসেন্স কি (licence key) চায়। আপনার চলমান অ্যাপগুলো অপরিবর্তিত থাকে: সেগুলো আপডেট হতে থাকে, ব্যাকআপ নেওয়া হয় এবং সার্টিফিকেটগুলোও কার্যকর থাকে। লাইসেন্স যোগ করলে কোনো কিছু পুনরায় ইনস্টল না করেই এই সীমা উঠে যায়, তাই ফ্রি প্ল্যানটি একটি আসল ডোমেইনে প্ল্যাটফর্মটি পরীক্ষা করার জন্য একটি ভালো উপায়।