Docker Compose দিয়ে নিজের SearXNG সার্চ ইঞ্জিন তৈরি করুন
Docker Compose ব্যবহার করে নিজস্ব VPS-এ SearXNG ইনস্টল করার সম্পূর্ণ নির্দেশিকা। এতে settings.yml কনফিগারেশন, Nginx TLS সেটআপ এবং নিজস্ব স্ক্রিপ্টের জন্য JSON API ব্যবহারের নিয়ম রয়েছে।
আপনি যা তৈরি করছেন
SearXNG নিজে হোস্ট করার মাধ্যমে আপনি আপনার নিজস্ব সার্ভারে একটি ব্যক্তিগত সার্চ ইঞ্জিন চালাতে পারবেন। SearXNG একটি মেটাসার্চ ইঞ্জিন: এটি আপনার কুয়েরি গ্রহণ করে, Google, Bing, DuckDuckGo এবং Wikipedia-এর মতো অন্যান্য ইঞ্জিনে তা পাঠায় এবং প্রাপ্ত ফলাফলগুলোকে একত্রিত করে একটি পেজে প্রদর্শন করে। এতে কোনো প্রোফাইল তৈরি হয় না এবং কোনো ট্র্যাকিং কুকি সেট করা হয় না, কারণ আপনার কুয়েরি শুধুমাত্র আপনার নিজের মেশিনেই সংরক্ষিত থাকে।
এই স্ট্যাকটি বেশ ছোট। দুটি কন্টেইনার, একটি সেটিংস ফাইল এবং একটি রিভার্স প্রক্সি। মূল সিদ্ধান্তটি হলো আপনার ইনস্ট্যান্সটি কি ব্যক্তিগত হবে, যার অর্থ শুধুমাত্র আপনি এবং আপনার নিজস্ব স্ক্রিপ্টগুলো এটি ব্যবহার করতে পারবে, নাকি এটি পাবলিক হবে, যার অর্থ ইন্টারনেটের যে কেউ এটি ব্যবহার করতে পারবে। এই সিদ্ধান্তের ওপর ভিত্তি করে সিকিউরিটি সেটিংস পরিবর্তিত হয়, তাই কোনো কিছু টাইপ করার আগেই এই সিদ্ধান্ত নিন। ডিফল্ট উত্তর হলো ব্যক্তিগত।
এটি চালানোর দ্বিতীয় একটি কারণও রয়েছে। একটি SearXNG ইনস্ট্যান্স JSON ফরম্যাটে কাজ করে, তাই আপনার লেখা যেকোনো স্ক্রিপ্ট বা AI এজেন্ট এমন একটি সার্চ API পায় যার মালিক আপনি নিজেই। এতে কোনো কি (key), প্রতি কুয়েরিতে বিলিং বা কোটা সংক্রান্ত কোনো ঝামেলা নেই।
Docker Compose দিয়ে SearXNG ইনস্টল করা
এই প্রজেক্টটি একটি কন্টেইনার ইমেজ এবং একটি Compose ফাইল প্রকাশ করে। একটি নতুন Ubuntu 24.04 সার্ভারে উভয়ই পুল (pull) করুন, যেখানে আগে থেকেই Docker Engine এবং Compose প্লাগইন ইনস্টল করা আছে। আপনি যদি Docker-এ নতুন হন, তবে VPS-এ Docker Compose-এর প্রাথমিক বিষয়সমূহ থেকে শুরু করুন এবং তারপর এখানে ফিরে আসুন।
sudo install -d -o "$USER" -g "$USER" -m 750 /opt/searxng
cd /opt/searxng
mkdir -p core-config
curl -fsSL \
-O https://raw.githubusercontent.com/searxng/searxng/master/container/docker-compose.yml \
-O https://raw.githubusercontent.com/searxng/searxng/master/container/.env.example
cp -i .env.example .envCompose ফাইলটি দুটি সার্ভিস নির্ধারণ করে। core হলো মূল SearXNG এবং valkey হলো একটি ইন-মেমোরি ডেটা স্টোর, যা রেট লিমিটিং এবং স্বল্পস্থায়ী স্টেটের জন্য ব্যবহৃত হয়। এটি কন্টেইনারের ভেতরে /etc/searxng/-এ ./core-config/ মাউন্ট করে, তাই আপনার কনফিগার করা সবকিছু হোস্টের ওই একটি ডিরেক্টরিতেই থাকে।
এখন .env এডিট করুন। প্রদত্ত উদাহরণের প্রতিটি লাইন কমেন্ট করা আছে, যার কারণে কন্টেইনারটি প্রতিটি ঠিকানায় 8080 পোর্টে চালু হয়। এই তিনটি লাইন আনকমেন্ট করুন এবং সেট করুন।
SEARXNG_VERSION=latest
SEARXNG_HOST=127.0.0.1
SEARXNG_PORT=8080SEARXNG_HOST=127.0.0.1 হলো গুরুত্বপূর্ণ অংশ। এটি প্রকাশিত পোর্টটিকে [::]:8080:8080-এর পরিবর্তে 127.0.0.1:8080:8080 করে দেয়, যাতে কন্টেইনারটি শুধুমাত্র লুপব্যাক ঠিকানায় সাড়া দেয় এবং ইন্টারনেট থেকে সরাসরি এটি অ্যাক্সেস করা না যায়। এটি এড়িয়ে গেলে কন্টেইনারটি চালু হওয়ার সাথে সাথেই উন্মুক্ত হয়ে যাবে, কারণ একটি প্রকাশিত Docker পোর্ট আপনার ফায়ারওয়াল রুলসের আগেই যুক্ত হয়ে যায়। এই ঝুঁকিটি বিস্তারিত পড়া প্রয়োজন: প্রকাশিত Docker পোর্ট ufw-কে বাইপাস করে।
শেখার সময় SEARXNG_VERSION=latest ব্যবহার করা ঠিক আছে। তবে গুরুত্বপূর্ণ সার্ভারের ক্ষেত্রে, ট্যাগটি পিন করে রাখুন। জুলাই 2026 অনুযায়ী রিলিজ ট্যাগগুলো তারিখ ভিত্তিক এবং দেখতে 2026.3.25-541c6c3cb-এর মতো, তাই একটি পিন করা ডেপ্লয়মেন্ট তখনই আপগ্রেড হবে যখন আপনি সিদ্ধান্ত নেবেন, রেজিস্ট্রি পরিবর্তনের সাথে সাথে নয়।
settings.yml: গুরুত্বপূর্ণ অংশসমূহ
প্রথমবার চালু করার আগে core-config/settings.yml তৈরি করুন। use_default_settings: true SearXNG-কে তার নিজস্ব ডিফল্ট সেটিংস লোড করতে এবং শুধুমাত্র আপনার লেখা কি (keys) প্রয়োগ করতে নির্দেশ দেয়, যাতে আপনার ফাইলটি সংক্ষিপ্ত থাকে এবং নতুন অপশন যুক্ত হওয়া আপগ্রেডগুলোর পরেও কার্যকর থাকে।
প্রথমে সিক্রেট কি (secret) তৈরি করুন, কারণ এই মানটি সরাসরি ফাইলে বসাতে হবে।
openssl rand -hex 32use_default_settings: true
general:
instance_name: "search.example.com"
server:
base_url: "https://search.example.com/"
secret_key: "paste-the-openssl-output-here"
limiter: false
public_instance: false
image_proxy: true
valkey:
url: valkey://valkey:6379/0
search:
safe_search: 0
autocomplete: "duckduckgo"
formats:
- html
- jsonsecret_key সেশন এবং টোকেন ডেটা সাইন করে। ডিফল্ট হিসেবে এতে ultrasecretkey স্ট্রিংটি থাকে, এবং এটি পরিবর্তন না করলে যে কেউ এই ডিফল্ট মানটি ব্যবহার করে টোকেন জাল করতে পারে। এটি একবার পরিবর্তন করুন এবং তারপর আর হাত দেবেন না: পরবর্তীতে এটি পরিবর্তন করলে সংরক্ষিত সকল পছন্দ (preferences) মুছে যাবে।
base_url অবশ্যই পাবলিক HTTPS ঠিকানা হতে হবে, যার শেষে একটি স্ল্যাশ থাকবে। SearXNG যে লিঙ্কগুলো তৈরি করে, তাতে এটিই ব্যবহৃত হয়। এটি localhost-এ রেখে দিলে রিমোট ব্রাউজারে "next page" লিঙ্কটি ব্যবহারকারীর নিজের মেশিনের দিকে নির্দেশ করবে এবং কাজ করবে না।
formats নির্ধারণ করে ওয়েব এন্ডপয়েন্ট কোন ধরনের আউটপুট তৈরি করবে। json ডিফল্ট তালিকায় থাকে না, তাই এটি যুক্ত না করা পর্যন্ত JSON রিকোয়েস্ট 4o3 এরর দেখাবে। image_proxy: true রেজাল্ট থাম্বনেইলগুলোকে আপনার সার্ভারের মাধ্যমে রাউট করে, যাতে সেই ছবিগুলো যে সাইটে হোস্ট করা হয়েছে তারা আপনার ভিজিটরদের আইপি অ্যাড্রেস দেখতে না পায়।
valkey.url-এ valkey হোস্টনাম ব্যবহার করা হয় কারণ এটি Compose ফাইলে সার্ভিস নেম, এবং Compose উভয় কন্টেইনারকে একই নেটওয়ার্কে রাখে যেখানে সার্ভিস নেমগুলো রিজলভ হয়। এটিকে localhost-এ নির্দেশ করলে লিমিটার কাজ করবে না, কারণ core কন্টেইনারের ভেতরে localhost বলতে সেই কন্টেইনারকেই বোঝায়।
সিক্রেট কি একটি সাধারণ ফাইলে থাকে, তাই ফাইলটির পরিবর্তে এর ডিরেক্টরিটিকে সুরক্ষিত রাখুন। chmod 750 /opt/searxng অন্য হোস্ট ব্যবহারকারীদের প্রবেশাধিকার থেকে বিরত রাখে। core-config/settings.yml-কে 600 মোডে সীমাবদ্ধ করবেন না: কন্টেইনারটি নিজস্ব আনপ্রিভিলেজড ইউজার হিসেবে চলে, এবং ফাইলটি পড়তে না পারলে SearXNG চালু হবে না।
স্ট্যাকটি শুরু করুন এবং পরীক্ষা করুন।
cd /opt/searxng
docker compose up -d
docker compose ps
curl -I http://127.0.0.1:8080/docker compose ps কমান্ডে উভয় কন্টেইনারকে running অবস্থায় দেখানো উচিত। curl-এর উত্তর HTTP/1.1 200 OK আসা উচিত। যদি কোনো উত্তর না আসে, তবে docker compose logs core পড়ুন, কারণ settings.yml ফাইলে কোনো YAML ভুল থাকলে সেখানে লাইন নম্বরসহ পার্স এরর দেখা যাবে।
nginx এবং TLS-এর পেছনে স্থাপন করা
কন্টেইনারটি শুধুমাত্র loopback-এ লিসেন করে, তাই nginx-ই এটিকে অ্যাক্সেসযোগ্য করে তোলে এবং এটিই ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) যুক্ত করে। /etc/nginx/sites-available/searxng লিখুন।
server {
listen 80;
server_name search.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}sudo ln -s /etc/nginx/sites-available/searxng /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d search.example.comnginx -t রিলোড করার আগে syntax is ok এবং test is successful প্রিন্ট করে। Certbot একই ফাইলটিকে পুনরায় লিখে যাতে এটি একটি সার্টিফিকেটের সাথে 443 পোর্টে লিসেন করে এবং পোর্ট 80 থেকে একটি রিডাইরেক্ট যোগ করে। search.example.com-এর জন্য DNS রেকর্ডটি অবশ্যই এই সার্ভারের দিকে নির্দেশিত থাকতে হবে, কারণ সার্টিফিকেট অথরিটি HTTP-এর মাধ্যমে একটি ফাইল ফেচ করে মালিকানা যাচাই করে। রিনিউয়ালসহ সম্পূর্ণ নির্দেশিকাটি Ubuntu 24.04-এর জন্য Certbot এবং nginx গাইড-এ রয়েছে।
দুটি ফরওয়ার্ডিং হেডার কেবল সাজসজ্জার জন্য নয়। X-Forwarded-For এবং X-Real-IP ছাড়া, SearXNG-তে আসা প্রতিটি রিকোয়েস্ট প্রক্সি অ্যাড্রেস বহন করে, ফলে রেট লিমিটার মনে করে একজন ক্লায়েন্টই সমস্ত ট্রাফিক তৈরি করছে এবং ভিজিটরদের আলাদা করতে পারে না।
কেন স্ক্রিপ্ট এবং এজেন্টদের একটি JSON সার্চ API প্রয়োজন
json-এর মাধ্যমে formats-এ, একই এন্ডপয়েন্ট যা পেজটি রেন্ডার করে, সেটিই স্ট্রাকচার্ড ডেটা প্রদান করে।
curl -s 'http://127.0.0.1:8080/search?q=wireguard+mtu&format=json' \
| jq -r '.results[0:5][] | .url'আপনি একটি অবজেক্ট পাবেন যাতে একটি results অ্যারে থাকে, যেখানে প্রতিটি এন্ট্রিতে url, title, content এবং যে ইঞ্জিন এটি সরবরাহ করেছে তার তথ্য থাকে, পাশাপাশি answers, infoboxes এবং suggestions থাকে। এটি একটি সামারাইজার, লিঙ্ক চেকার বা রিসার্চ লুপ চালানোর জন্য যথেষ্ট।
এজেন্ট-আকৃতির যেকোনো কিছুর জন্য এটি গুরুত্বপূর্ণ। একটি ল্যাঙ্গুয়েজ মডেলের ট্রেনিং কাটঅফ থাকে, তাই বর্তমান সময়ের প্রশ্নের উত্তর দেওয়ার জন্য এটির লাইভ সার্চ প্রয়োজন। বাণিজ্যিক সার্চ API প্রতি কুয়েরিতে চার্জ করে এবং কঠোর রেট লিমিট আরোপ করে। একটি লোকাল ইনস্ট্যান্সের খরচ আপনার ইতিমধ্যে ব্যবহৃত সার্ভারের একটি কন্টেইনারের সমান এবং কুয়েরিগুলো সার্ভারের বাইরে যায় না। আপনি যদি মডেলের সাথে টুল যুক্ত করেন, তবে একই যুক্তি একটি VPS-এ MCP সার্ভার চালানো-এর ক্ষেত্রেও প্রযোজ্য, যেখানে সার্চ টুল সাধারণত প্রথম টুল হিসেবে যুক্ত করা হয়।
API ব্যবহারের জন্য দুটি নিয়ম রয়েছে। ইনস্ট্যান্সটিকে প্রাইভেট রাখুন, তাই API সাইডটিকে লুপব্যাক অ্যাড্রেস বা প্রাইভেট নেটওয়ার্কে বাইন্ড করুন এবং শুধুমাত্র আপনার নিজস্ব হোস্টগুলোকে এটি অ্যাক্সেস করতে দিন। এরপর সাবধানে কুয়েরি করুন। SearXNG আপনার অনুরোধটি আসল সার্চ ইঞ্জিনগুলোতে পাঠিয়ে দেয়, তাই প্রতি সেকেন্ডে একশটি কুয়েরি চালানো একটি স্ক্রিপ্ট Google-কে আপনার সার্ভার ব্লক করতে বাধ্য করবে।
লিমিটার এবং পাবলিক ইনস্ট্যান্সের জন্য যা পরিবর্তিত হয়
লিমিটার হলো SearXNG-এর বট প্রতিরক্ষা ব্যবস্থা। এটি রিকোয়েস্ট হেডার, অ্যাড্রেস এবং রিকোয়েস্টের হার পর্যবেক্ষণ করে এবং যে ট্রাফিককে স্বয়ংক্রিয় মনে হয় তা বাতিল করে দেয়। এই অবস্থা ধরে রাখার জন্য এর Valkey প্রয়োজন, আর সেই কারণেই Compose ফাইলে এটি অন্তর্ভুক্ত থাকে।
একটি প্রাইভেট ইনস্ট্যান্সে limiter: false চালু রাখুন। আপনার নিজস্ব স্ক্রিপ্টগুলো সংজ্ঞাগতভাবেই স্বয়ংক্রিয় ট্রাফিক, তাই লিমিটার ঠিক সেই JSON কলগুলোকেই ব্লক করে দেবে যেগুলোর জন্য আপনি ইনস্ট্যান্সটি তৈরি করেছেন। এর পরিবর্তে অ্যাক্সেস কন্ট্রোলের দায়িত্ব রিভার্স প্রক্সির: nginx location-এ একটি allow এবং deny জোড়া, HTTP বেসিক অথেন্টিকেশন, অথবা এমন একটি ফায়ারওয়াল যা শুধুমাত্র আপনার অন্যান্য সার্ভারগুলোকে প্রবেশের অনুমতি দেয়।
যদি আপনি অন্যদের ব্যবহারের জন্য ইনস্ট্যান্সটি উন্মুক্ত করেন, তবে উভয় সুইচ চালু করুন।
server:
limiter: true
public_instance: trueআরও সূক্ষ্ম নিয়ন্ত্রণ core-config/limiter.toml-এ থাকে, যা কন্টেইনার /etc/searxng/limiter.toml থেকে পড়ে নেয়। আপনি শুধুমাত্র সেই কিগুলো লিখবেন যা পরিবর্তন করতে চান। প্রক্সির পেছনে থাকলে আপনাকে অবশ্যই প্রক্সি ঘোষণা করতে হবে, অন্যথায় লিমিটার আপনার nginx অ্যাড্রেসকে একমাত্র ক্ষতিকারক ক্লায়েন্ট হিসেবে গণ্য করবে।
[botdetection]
trusted_proxies = [
'127.0.0.0/8',
'::1',
]
[botdetection.ip_limit]
link_token = truelink_token = true SearXNG-কে এমন একটি টোকেন ইস্যু করতে বাধ্য করে যা শুধুমাত্র একটি প্রকৃত ব্রাউজার সেশনই সংগ্রহ করতে পারে, যা বেশিরভাগ সাধারণ স্ক্র্যাপারকে থামিয়ে দেয়। আশা করতে পারেন যে একটি পাবলিক ইনস্ট্যান্স কয়েক দিনের মধ্যেই তাদের আকৃষ্ট করবে। ইঞ্জিন সংক্রান্ত ত্রুটির জন্যও প্রস্তুত থাকুন, কারণ আপনি যত বেশি ট্রাফিক ফরওয়ার্ড করবেন, আপস্ট্রিম ইঞ্জিনগুলো তত দ্রুত আপনার সার্ভার অ্যাড্রেসে CAPTCHA পাঠানো শুরু করবে। একটি পাবলিক SearXNG ইনস্ট্যান্স রক্ষণাবেক্ষণ একটি চলমান কাজ। একটি প্রাইভেট ইনস্ট্যান্সের ক্ষেত্রে এমনটি হয় না, আর সেই কারণেই এটি 2026 সালে নিজে হোস্ট করার মতো বিষয়গুলোর সংক্ষিপ্ত তালিকায় স্থান পায়।
কেন অনুসন্ধান কোনো ফলাফল দেয় না
আপনার ইনস্ট্যান্সে /stats খুলুন। এটি প্রতিটি ইঞ্জিনের ত্রুটির হার এবং রেসপন্স টাইম তালিকাভুক্ত করে, এবং ফলাফলের পরিমাণ কম মনে হলে এটিই প্রথম দেখার জায়গা।
যে ইঞ্জিন "Access denied" বা "CAPTCHA" ত্রুটি দেখায়, সেটি আপনার সার্ভারের আইপি অ্যাড্রেস ব্লক করেছে। ডেটা সেন্টারের রেঞ্জে থাকা অ্যাড্রেসের ক্ষেত্রে এটি সাধারণ ঘটনা, কারণ সার্চ ইঞ্জিনগুলো ধরে নেয় যে এগুলো স্ক্র্যাপারদের। SearXNG তখন ব্যর্থ ইঞ্জিনটিকে পুনরায় চেষ্টা করার পরিবর্তে কিছু সময়ের জন্য স্থগিত রাখে, তাই একটি ব্লক হওয়া ইঞ্জিন নীরবে আপনার ফলাফল থেকে বাদ পড়ে যায়। settings.yml-এ সেটিকে নিষ্ক্রিয় করুন অথবা এই ক্ষতি মেনে নিন। বাকি ইঞ্জিনগুলো তখনও কাজ করবে।
যদি সব ইঞ্জিন একসাথে ব্যর্থ হয়, তবে কন্টেইনারটিতে কোনো কার্যকর আউটবাউন্ড নেম রেজোলিউশন নেই অথবা ইন্টারনেটে যাওয়ার কোনো রুট নেই। কন্টেইনারের ভেতর থেকে সেটি পরীক্ষা করুন।
docker compose exec core wget -qO- https://duckduckgo.com > /dev/null && echo okFAQ
SearXNG কি আমার অনুসন্ধানকে বেনামী রাখে?
এটি আপনার অনুসন্ধান করা সার্চ ইঞ্জিনগুলোর কাছ থেকে আপনার পরিচয় গোপন রাখে, কারণ তারা আপনার ব্রাউজারের পরিবর্তে আপনার সার্ভার থেকে অনুরোধটি গ্রহণ করে। এটি আপনার সার্ভারের কাছ থেকে অনুসন্ধানটি গোপন করে না এবং তাদের কাছ থেকে আপনার সার্ভারকেও গোপন করে না। একক ব্যবহারকারীর ইনস্ট্যান্সে সেই ঠিকানা থেকে আসা সমস্ত ট্রাফিক আপনার, তাই ঠিকানাটি নিজেই শনাক্তকারী হিসেবে কাজ করে। আপনার ব্রাউজার এবং আপনার ইনস্ট্যান্সের মধ্যবর্তী ট্রাফিক TLS সার্টিফিকেট দ্বারা সুরক্ষিত থাকে।
কেন একটি JSON অনুরোধ 403 Forbidden ত্রুটি প্রদান করে?
এর দুটি কারণ রয়েছে এবং উভয়ই কনফিগারেশন সংক্রান্ত। হয় json, settings.yml-এর search:-এর অধীনে formats তালিকা থেকে অনুপস্থিত, যা ডিফল্ট অবস্থা, অথবা লিমিটার চালু আছে এবং এটি আপনার স্ক্রিপ্টকে বট হিসেবে চিহ্নিত করেছে। প্রথমে ফরম্যাটটি যোগ করুন, docker compose restart core দিয়ে রিস্টার্ট করুন, তারপর পুনরায় চেষ্টা করুন। যদি এটি এখনও ব্যর্থ হয়, তবে limiter: false সেট করুন এবং রিভার্স প্রক্সিতে অ্যাক্সেস নিয়ন্ত্রণ করুন।
আমি যদি লিমিটার বন্ধ রাখি, তবে কি আমার Valkey কন্টেইনারের প্রয়োজন আছে?
এটি চালু রাখুন। SearXNG এটি ছাড়াই কাজ করে, কিন্তু এটি ছাড়া পরবর্তীতে লিমিটার চালু করা সম্ভব নয় এবং এটি অন্যান্য স্বল্পস্থায়ী স্টেটও সংরক্ষণ করে। কন্টেইনারটি ছোট এবং শুধুমাত্র ক্যাশ করা ডেটা সংরক্ষণ করে, তাই এটি সরিয়ে ফেললে খুব সামান্যই সাশ্রয় হয় কিন্তু আপনি একটি গুরুত্বপূর্ণ অপশন হারাবেন।
আমি কীভাবে SearXNG আপডেট করব?
/opt/searxng-এ docker compose pull এবং তারপর docker compose up -d চালান। Compose এমন যেকোনো কন্টেইনার পুনরায় তৈরি করে যার ইমেজ পরিবর্তিত হয়েছে এবং আপনার core-config/ ডিরেক্টরি অপরিবর্তিত রাখে, তাই settings.yml অক্ষুণ্ণ থাকে। যেহেতু use_default_settings: true আপনার কি (keys)-গুলোকে শিপড ডিফল্টগুলোর সাথে মার্জ করে, তাই আপস্ট্রিম থেকে যোগ করা অপশনগুলো ফাইলটি নষ্ট না করে সঠিক মান নিয়ে আসে।
একাধিক ব্যক্তি কি একটি ইনস্ট্যান্স শেয়ার করতে পারে?
হ্যাঁ, এবং সেই ক্ষেত্রেই আপনি লিমিটার চালু করবেন এবং public_instance: true সেট করবেন। পছন্দগুলো প্রতিটি ভিজিটরের নিজস্ব ব্রাউজারে সংরক্ষিত থাকে, তাই পরিচালনা করার জন্য কোনো অ্যাকাউন্টের প্রয়োজন হয় না। এটি উন্মুক্ত করার পর এক সপ্তাহ ধরে /stats পর্যবেক্ষণ করুন, কারণ ফলাফল না পাওয়া যাওয়ার বিষয়টি আপনার নজরে আসার অনেক আগেই আপস্ট্রিম ইঞ্জিনগুলো আপনার সার্ভারকে প্রত্যাখ্যান করা শুরু করতে পারে।