معرفی
Discourse که توسط یکی از بنیانگذاران StackOverflow ایجاد شده است، یک پلتفرم گفتگوی منبع باز است. گفتمان می تواند یک انجمن آنلاین، یک لیست پستی، یک اتاق گفتگو و موارد دیگر را تقویت کند.
Discourse با استفاده از نصب با یک کلیک vpsgol روی یک Droplet به خوبی کار می کند، اما با رشد جامعه شما، می تواند از یک Droplet بیشتر شود. اگر یکی از قطرههای شما آفلاین شود، استفاده از چند قطره به جامعه شما انعطافپذیری میدهد. هر قطره همچنین پهنای باند شما را افزایش می دهد. هنگام استفاده از چند قطره، یک Load Balancer می تواند به گسترش استقرار شما کمک کند و دسترسی بالا را به برنامه وب شما بیاورد. در نهایت، یک نمونه پایگاه داده مدیریت شده تجربه کاربری ثابتی را در چندین قطره تضمین می کند.
پس از تکمیل این آموزش، شما یک استقرار Discourse بسیار در دسترس و به راحتی مقیاس پذیر خواهید داشت که در vpsgol اجرا می شود. شما با یک قطره جدید اوبونتو 20.04 شروع میکنید و با یک نصب گفتمان مقیاسپذیر افقی که شامل یک Load Balancer، Managed PostgreSQL cluster، Redis instance (اختیاری) و Dropletهای اضافی است، به پایان میرسانید.
پیش نیازها
برای دنبال کردن این آموزش، شما نیاز دارید:
- یک سرور اوبونتو 20.04 با حداقل 2 گیگابایت رم پیکربندی شده با یک کاربر غیر ریشه با امتیازات sudo و فایروال، که می توانید با دنبال کردن راهنما، راه اندازی اولیه سرور با اوبونتو 20.04، این کار را انجام دهید.
- Discourse بر روی سرور شما نصب و پیکربندی شده است که می توانید با دنبال کردن آموزش نحوه نصب Discourse در اوبونتو 20.04 این کار را انجام دهید.
- نام دامنه ای که سوابق DNS آن توسط vpsgol مدیریت می شود، که می توانید با دنبال کردن آموزش نحوه اشاره به سرورهای نام vpagol از ثبت کننده های دامنه رایج، این کار را انجام دهید. هنگام تنظیم Discourse بر روی سرور خود، مطمئن شوید که از نام دامنه اصلی و نه یک زیر دامنه استفاده کنید (به عنوان مثال، به جای discourse.yoursite.com از yoursite.com استفاده کنید).
- آشنایی با Docker که می توانید از آموزش The Docker Ecosystem: An Introduction to Common Components به دست آورید.
مرحله 1 – اضافه کردن یک متعادل کننده بار vpsgol به یک سرور گفتمان
در این مرحله شما یک vpsgol Load Balancer را به سرور Discourse که در پیش نیازها ایجاد کرده اید اضافه می کنید. به کنترل پنل vpsgol خود دسترسی پیدا کنید، روی Networking، سپس Load Balancers، و سپس روی Create Load Balancer کلیک کنید.
شما باید یک منطقه مرکز داده را برای متعادل کننده بار خود انتخاب کنید. حتماً همان منطقه ای را که برای قطره گفتمان انتخاب کرده اید انتخاب کنید. Load Balancer با Droplet شما با استفاده از شبکه خصوصی آن ارتباط برقرار می کند، بنابراین هر دو Droplet و Load Balancer شما باید در یک منطقه باشند.
سپس، Droplet خود را با تایپ کردن نام Droplet در قسمت متن به Load Balancer اضافه کنید.
Discourse معمولاً با صدور گواهی رایگان Let’s Encrypt در طول فرآیند نصب، HTTPS را برای شما مدیریت می کند. با این حال، وقتی Droplet شما پشت Load Balancer قرار دارد، Let’s Encrypt نمی تواند گواهی شما را تمدید کند زیرا آدرس IP دامنه شما با IP Droplet شما مطابقت ندارد.
خوشبختانه، vpsgol Load Balancer می تواند گواهی ها را برای شما مدیریت کند. فقط باید یک قانون حمل و نقل برای HTTPS به Load Balancer خود اضافه کنید. یک قانون حمل و نقل به Load Balancer می گوید که نوع خاصی از ترافیک را به Droplet شما ارسال کند.
شما به دو قانون ارسال نیاز دارید، یکی برای HTTP و دیگری برای HTTPS. با افزودن یک قانون حمل و نقل برای HTTPS، vpsgol می تواند به طور خودکار یک گواهی را برای شما ایجاد و تمدید کند. پشتیبانی HTTPS برای امنیت و سئوی سایت شما نیز مهم است.
از آنجایی که دامنه خود را به عنوان بخشی از پیش نیازها به vpsgol اضافه کردید، افزودن پشتیبانی HTTPS فقط چند کلیک طول می کشد. در قسمت Forwarding rules یک قانون جدید به نام HTTPS اضافه کنید که می توانید آن را از لیست کشویی انتخاب کنید. حالا Certificate و سپس + New Certificate را بزنید.
نام دامنه خود را در فیلد متنی تایپ کنید، که باید به صورت خودکار برای شما پر شود. سپس به گواهینامه خود یک نام بدهید و روی Generate Certificate کلیک کنید تا vpsgol درخواست داشته باشد و یک گواهی را برای شما مدیریت کند.
تقریباً راه اندازی Load Balancer خود را تمام کرده اید. روی دکمه Edit Advanced Settings کلیک کنید و کادر با عنوان Enable Proxy Protocol را علامت بزنید. هنگامی که پروتکل PROXY فعال است، Load Balancer اطلاعات مشتری مانند آدرس IP کاربر را به Droplets پشت Load Balancer ارسال می کند. بدون پروتکل PROXY، Discourse فکر میکرد که تمام ترافیک آن از یک کاربر منفرد (Load Balancer) میآید، و همه گزارشها نشانی IP Load Balancer را به جای آدرسهای IP واقعی کاربران شما نشان میدهند.
در نهایت یک نام برای Load Balancer خود انتخاب کنید و روی Create Load Balancer کلیک کنید.
اکنون که Load Balancer را راه اندازی کرده اید، باید فایل های پیکربندی Discourse خود را تغییر دهید.
مرحله 2 – اصلاح فایل های پیکربندی گفتمان
در این مرحله، فایلهای پیکربندی پیشفرض موجود در Discourse را تغییر میدهید. SSH را به Droplet خود وارد کنید و با استفاده از این دستور به فهرست /var/discourse بروید:
cd /var/discourse
با استفاده از nano یا ویرایشگر متن مورد علاقه خود، یک فایل جدید به نام loadbalancer.template.yml در فهرست قالب ها ایجاد و باز کنید:
sudo nano templates/loadbalancer.template.yml
پوشه templates فایل هایی را برای پیکربندی Discourse شما نگهداری می کند. در اینجا، شما در حال اضافه کردن یک الگوی سفارشی جدید برای فعال کردن پشتیبانی از پروتکل PROXY برای نصب Discourse خود هستید.
در loadbalancer.template.yml، خطوط زیر را وارد کنید:
run:
– exec: “sed -i ‘s:listen 80: listen 80 proxy_protocol:g’ /etc/nginx/conf.d/discourse.conf”
– exec: “sed -i ‘s:$remote_addr:$proxy_protocol_addr:g’ /etc/nginx/conf.d/discourse.conf”
– exec: “sed -i ‘s:X-Forwarded-For $proxy_add_x_forwarded_for:X-Forwarded-For $proxy_protocol_addr:g’ /etc/nginx/conf.d/discourse.conf”
خط اول پیکربندی Discourse Nginx را برای فعال کردن پشتیبانی از پروتکل PROXY تغییر میدهد. اگر پروتکل PROXY در Load Balancer فعال باشد اما در Nginx فعال نباشد، Discourse یک خطای سرور را برمیگرداند.
خط دوم یافتن و جایگزینی را انجام میدهد و همه رخدادهای $remote_addr را با $proxy_protocol_addr جایگزین میکند. $proxy_protocol_addr حاوی آدرس IP مشتری است که از Load Balancer ارسال شده است. $remote_addr معمولاً آدرس IP کاربر را نشان می دهد، اما از آنجایی که Discourse پشت Load Balancer قرار دارد، آدرس IP Load Balancer را نشان می دهد.
خط آخر همه موارد X-Forwarded-For $proxy_add_x_forwarded_for را با X-Forwarded-For $proxy_protocol_addr جایگزین میکند و اطمینان حاصل میکند که هدر X-Forwarded-For آدرس IP مشتری را به درستی ثبت میکند و نه آدرس IP Load Balancer.
با فشار دادن CTRL+X و سپس y فایل را ذخیره کرده و ببندید.
آخرین کاری که باید انجام دهید این است که قالب را در Discourse بارگذاری کنید و Discourse را بازسازی کنید.
با استفاده از nano یا ویرایشگر متن مورد علاقه خود، فایلی به نام app.yml را در فهرست کانتینرها ویرایش کنید:
sudo nano containers/app.yml
ابتدا قالبی را که ایجاد کرده اید اضافه می کنید. در زیر الگوها، خط برجسته شده را مانند شکل اضافه کنید:
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
- "templates/loadbalancer.template.yml"
حتماً الگوی جدید را در یک خط زیر templates/web.template.yml اضافه کنید.
در مرحله بعد، مطمئن شوید که دو خط web.ssl.template.yml و templates/web.letsencrypt.ssl.template.yml هر دو با اضافه کردن یک علامت پوند [#] همانطور که نشان داده شده است، توضیح داده شده اند:
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
- "templates/loadbalancer.template.yml"
## Uncomment these two lines if you wish to add Lets Encrypt (https)
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
در نهایت چند خط پایین بروید تا expose را ببینید. خط “443:443” # https را با اضافه کردن علامت پوند [#] همانطور که نشان داده شده است، نظر دهید:
...
expose:
- "80:80" # http
# - "443:443" # https
اکنون وقتی Discourse را بازسازی می کنید، HTTPS در Discourse غیرفعال می شود. اتصال HTTPS در Load Balancer خاتمه می یابد و Load Balancer با Droplet شما از طریق شبکه خصوصی امن vpsgol ارتباط برقرار می کند، بنابراین نیازی به راه اندازی HTTPS در سرور Discourse خود ندارید.
با فشار دادن CTRL+X و سپس y فایل را ذخیره کرده و ببندید.
برای اعمال پیکربندی و بازسازی Discourse، دستور زیر را اجرا کنید:
sudo ./launcher rebuild app
این دستور به امتیازات فوق کاربر نیاز دارد، به همین دلیل است که با sudo اضافه شده است.
در این مرحله، پیکربندی Discourse و Load Balancer را به پایان رسانده اید. در مرحله بعد، نام دامنه خود را به آدرس IP Load Balancer نشان می دهید.
مرحله 3 – به روز رسانی DNS
در این مرحله، دامنه خود را به جای آدرس IP Droplet به آدرس IP Load Balancer اشاره میکنید.
اگر از میزبانی DNS vpsgol استفاده می کنید، به کنترل پنل بروید و روی Networking کلیک کنید. روی نام دامنه خود کلیک کنید، سپس به دنبال رکورد A باشید که به Droplet شما اشاره می کند. منوی بیشتر رکورد را برای تغییر رکورد انتخاب کنید. مقدار این رکورد را از آدرس IP Droplet خود به آدرس IP Load Balancer تغییر دهید.
سرور Discourse شما پشت یک vpsgol Load Balancer اجرا می شود و شما مجبور نخواهید بود گواهینامه های SSL خود را مدیریت کنید زیرا vpsgol این کار را برای شما انجام می دهد.
با مراجعه به نام دامنه خود، نصب Discourse خود را تست کنید. شما باید صفحه ای را ببینید که شبیه به این است:
اکنون که دامنه شما به Load Balancer اشاره می کند، یک نمونه پایگاه داده مدیریت شده را برای ایجاد یک تجربه ثابت برای کاربران خود اضافه می کنید.
مرحله 4 – افزودن یک پایگاه داده مدیریت شده vpsgol
در این مرحله، یک نمونه vpsgol Managed PostgreSQL ایجاد میکنید و آن را به استقرار Discourse خود اضافه میکنید.
مزیت اصلی Load Balancer تقسیم ترافیک شما بین چند قطره است. تا به حال، پایگاه داده، سرور Redis و وب سرور شما همگی بر روی یک Droplet اجرا می شدند. اگر نمونه دوم Discourse را اضافه کنید، پایگاه داده، سرور Redis و وب سرور خود را خواهد داشت و مانند یک وب سایت کاملاً متفاوت عمل می کند. بازدیدکنندگان شما ممکن است احساس کنند که به وبسایتهای دیگر با پستها و کاربران متفاوت میروند، زیرا به پایگاههای داده متفاوتی متصل خواهند شد. شما می توانید این مشکل را با استفاده از یکی از نمونه های مدیریت شده PostgreSQL vpsgol حل کنید، به جای اینکه یک پایگاه داده جداگانه در هر قطره گفتمان اجرا شود.
با رفتن به کنترل پنل vpsgol یک نمونه PostgreSQL مدیریت شده vpsgol را تنظیم کنید. روی Databases کلیک کنید، سپس Create Database Cluster، در نهایت PostgresSQL را انتخاب کنید، منطقه را مطابق با مکان Droplet خود تنظیم کنید و روی Create a Database Cluster کلیک کنید.
در حالی که پایگاه داده شما در حال تهیه است، Droplet خود را به عنوان منبع قابل اعتماد به پایگاه داده خود اضافه کنید. این به Droplet شما اجازه می دهد تا با استفاده از شبکه خصوصی امن vpsgol با پایگاه داده شما ارتباط برقرار کند.
در صفحه بعدی شبکه VPC را انتخاب کنید و مقادیر میزبان پایگاه داده، نام کاربری، رمز عبور و پورت را یادداشت کنید، زیرا باید آنها را به فایل containers/app.yml خود اضافه کنید.
هنگامی که کلاستر پایگاه داده شما ایجاد شد، باید پیکربندی Discourse را به روز کنید. باز کردن containers/app.yml:
sudo nano containers/app.yml
در بخش الگوها، خط را نظر دهید – templates/postgres.template.yml همانطور که نشان داده شده است:
templates:
# - "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
- "templates/loadbalancer.template.yml"
این باعث میشود Discourse هنگام بازسازی، سرور Postgres خود را فراهم نکند.
سپس به دنبال بخش env از containers/app.yml بگردید و خطوط زیر را اضافه کنید و مقادیر خود را برای نام کاربری پایگاه داده، رمز عبور، میزبان، نام و پورت جایگزین کنید.
env:
DISCOURSE_DB_USERNAME: your_db_username
DISCOURSE_DB_PASSWORD: your_db_password
DISCOURSE_DB_HOST: your_db_host
DISCOURSE_DB_NAME: your_db_name
DISCOURSE_DB_PORT: your_db_port
این متغیرهای اضافی به Droplet شما اجازه می دهد تا به پایگاه داده خارجی شما متصل شود.
فایل را با فشار دادن CTRL+X و سپس y ذخیره کنید.
اگر یک نصب Discourse از قبل موجود دارید، باید آن را به عنوان پشتیبان صادر کنید. می توانید این کار را با رفتن به قسمت مدیریت سایت خود، روی Backups و سپس روی Backup کلیک کنید.
برای اعمال پیکربندی و بازسازی Discourse، دستور زیر را اجرا کنید:
sudo ./launcher rebuild app
حتی اگر سایت خود را صادر کرده باشید، باید دوباره نصب وب Discourse را انجام دهید تا یک حساب کاربری جدید ایجاد کنید. اکنون که به پایگاه داده جدید خود متصل هستید، می توانید از این حساب برای بازیابی Discourse استفاده کنید.
در نهایت، یک تنظیم را تغییر میدهید تا اطمینان حاصل کنید که کاربران هنگام بازدید از سایت، در همان Droplet باقی میمانند.
به تنظیمات Load Balancer خود در کنترل پنل vpsgol برگردید. به Networking، سپس Load Balancers، سپس Settings بروید و به دنبال Sticky Sessions بگردید. روی Edit کلیک کنید.
Sticky Sessions را از None به Cookie تغییر دهید و روی Save کلیک کنید.
Sticky Sessions تضمین میکند که هر کاربری که از طریق Load Balancer از وبسایت شما بازدید میکند، در طول مدت بازدید خود به همان Droplet متصل میماند. این مهم است زیرا هر قطره هنوز هم نمونه Redis خود را دارد و Redis این است که چگونه Discourse کاربر را هنگام ورود به سیستم ردیابی می کند. بدون Sticky Sessions، کاربر می تواند در یک Droplet وارد شود، سپس از یک صفحه جدید بازدید کند و (ناشناس به آنها) با قطره دیگری که در آن وارد نشدهاند تعویض شود. Sticky Sessions با نگه داشتن کاربر در همان Droplet از این امر جلوگیری می کند.
همانطور که ما با پایگاه داده انجام دادیم، می توانید Redis را به نمونه اختصاصی خود منتقل کنید و سپس به Sticky Sessions نیازی نخواهید داشت. می توانید این را در مرحله بعدی امتحان کنید.
مرحله 5 – (اختیاری) افزودن یک نمونه Redis مدیریت شده vpsgol
این مرحله اختیاری است و به یک نمونه vpsgol Managed Redis نیاز دارد. تا این مرحله، نمونه Redis در Droplet در پشت Load Balancer قرار میگرفت، که برای اطمینان از ورود کاربران به سیستم، نیاز به جلسات چسبنده دارد. با این حال، در تنظیم قبلی، کاربران پس از تغییر Droplet از سیستم خارج می شدند زیرا اطلاعات جلسه آنها در Droplet ذخیره می شود.
افزودن یک سرور Redis خارجی به Droplets می تواند این مشکل را برطرف کند. این به طور موثر وضعیت Discourse را از Droplets شما دور می کند. اگر Droplet آفلاین شود، کاربران شما از سیستم خارج نمیشوند – در واقع، آنها حتی متوجه نمیشوند.
شما می توانید یک سرور Redis مدیریت شده vpsgol را به همان روشی که پایگاه داده مدیریت شده PostgreSQL خود را ایجاد کردید راه اندازی کنید. به کنترل پنل vpsgol بروید. روی Databases، سپس Create، سپس Database کلیک کنید و Redis را برای موتور پایگاه داده خود انتخاب کنید. همان منطقه را با سایر منابع خود انتخاب کنید تا مطمئن شوید که آنها در همان شبکه VPC هستند. به سرور خود یک نام بدهید و روی Create a database cluster کلیک کنید.
درست مانند زمانی که پایگاه داده Postgres خود را ایجاد می کنید، یک صفحه خوش آمدگویی با چند مرحله شروع خواهید دید. روی Secure this database cluster کلیک کنید، نام Droplet خود را وارد کنید و سپس روی Allow these inbound sources only کلیک کنید. این تضمین می کند که فقط Droplet شما می تواند به Redis متصل شود.
اکنون باید سیاست تخلیه را برای سرور Redis خود انتخاب کنید. allkeys-lru را انتخاب کنید. این خط مشی به این معنی است که اگر سرور Redis شما پر شود، شروع به حذف قدیمی ترین ورودی های خود می کند. با این کار کاربرانی که مدتی است از وب سایت شما استفاده نکرده اند، از سیستم خارج می شود، اما بهتر از این است که Redis خطاها را بازگرداند و کار را متوقف کند.
سیاست اخراج خود را ذخیره کنید. مانند پایگاه داده PostgreSQL خود، در صفحه جزئیات اتصال، شبکه VPC را انتخاب کنید.
هنگامی که نمونه Redis ایجاد شد، باید پیکربندی Discourse خود را به روز کنید. باز کردن containers/app.yml با استفاده از nano:
sudo nano containers/app.yml
همانطور که در اینجا نشان داده شده است، جزئیات اتصال Redis را به بخش env اضافه کنید. حتما متن هایلایت شده را با اطلاعات خود جایگزین کنید. (نیازی به وارد کردن قسمت نام کاربری ندارید.)
env:
DISCOURSE_REDIS_HOST: your_redis_host
DISCOURSE_REDIS_PASSWORD: your_redis_password
DISCOURSE_REDIS_PORT: your_redis_port
DISCOURSE_REDIS_USE_SSL: true
در مرحله بعد، در بخش templates، روی خط نظر دهید – templates/redis.template.yml همانطور که نشان داده شده است:
templates:
# - "templates/postgres.template.yml"
# - "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
- "templates/loadbalancer.template.yml"
این امر از Discourse از ایجاد نمونه Redis خود جلوگیری می کند.
با فشار دادن CTRL+X و سپس y فایل را ذخیره کرده و ببندید.
برای اعمال پیکربندی و بازسازی Discourse، دستور زیر را اجرا کنید:
برنامه بازسازی sudo ./launcher
با یک نمونه Redis مدیریت شده، دیگر نیازی به Sticky Sessions ندارید. در صورت تمایل می توانید آن گزینه را خاموش کنید، اما کاربران شما تفاوتی را در هر دو صورت متوجه نمی شوند.
اکنون که پایگاه داده های مدیریت شده را به پیکربندی خود اضافه کرده اید، برای افزودن قطره های بیشتر، عکس های فوری از سرور Discourse خود ایجاد می کنید.
مرحله 6 – اضافه کردن قطرات اضافی
در این مرحله، شما یک عکس فوری از Discourse Droplet خود ایجاد می کنید که ایجاد سرورهای جدید را آسان تر می کند. یک عکس فوری یک کپی کامل از یک Droplet موجود را ارائه می دهد و می توانید از آنها برای ایجاد قطرات جدید با همان محتوا استفاده کنید.
با رفتن به کنترل پنل vpsgol یک عکس فوری جدید ایجاد کنید. روی Droplets کلیک کنید، Droplet خود را پیدا کنید و روی Snapshots کلیک کنید. برای عکس فوری خود یک نام بگذارید و روی Take snapshot زنده کلیک کنید.
شما می توانید از این عکس فوری برای اضافه کردن قطرات اضافی پشت Load Balancer و افزایش ظرفیت وب سایت خود استفاده کنید.
هر بار که یک Droplet جدید ایجاد می کنید، باید منابع مورد اعتماد را در سرورهای Postgres و Redis خود به روز کنید، که می توانید از طریق کنترل پنل انجام دهید. همانطور که در مرحله قبل انجام دادید، نمونه پایگاه دادهای را که میخواهید تغییر دهید انتخاب کنید، به نمای کلی بروید و سپس Secure this database cluster. آدرس های IP جدید Droplet خود را به لیست منابع قابل اعتماد اضافه کنید.
در این مرحله، از Snapshot برای ایجاد قطرههای اضافی استفاده کردید و آنها را به عنوان منابع قابل اعتماد به نمونههای PostgreSQL و Redis خود اضافه کردید.
نتیجه
در این آموزش، شما یک سرور Discourse را در پشت یک vpsgol Load Balancer راه اندازی می کنید. برای کمک به مقیاسبندی استقرار خود، یک پایگاه داده مدیریتشده PostgreSQL و نمونه مدیریتشده Redis را نیز اضافه کردهاید. در نهایت، با استفاده از عکس های فوری و کنترل پنل، قطرات بیشتری اضافه کردید. با استفاده از کنترل پنل، می توانید منابع بیشتری را با رشد جامعه خود اضافه کنید.
اکنون که یک Load Balancer راهاندازی کردهاید، میتوانید موارد استفاده دیگر را برای vpsgol Load Balancer مانند Canary Deployments بررسی کنید. همچنین می توانید با دنبال کردن آموزش نحوه اتصال به یک نمونه Redis مدیریت شده از طریق TLS با Stunnel و redis-cli، با استفاده از خط فرمان به نمونه Redis خود متصل شوید. در نهایت، میتوانید با استفاده از مستندات پایگاههای داده مدیریت شده و آموزش، استخرهای اتصال پایگاههای داده مدیریتشده و بنچمارک PostgreSQL با استفاده از pgbench، درباره پایگاههای داده vpsgol و عملکرد آنها اطلاعات بیشتری کسب کنید.
https://vpsgol.net/product/vps-germany/
https://vpsgol.net/product/vps-usa/
https://vpsgol.net/product/vps-france/
https://vpsgol.net/product/vps-canada/
https://vpsgol.net/product/vps-poland/
https://vpsgol.net/product/vps-netherlands/
https://vpsgol.net/product/vps-england/