مقدمه
Caddy یک وب سرور مجازی است که حول سادگی و امنیت طراحی شده است و ویژگی هایی دارد که برای میزبانی وب سایت ها مفید است. به عنوان مثال ، می تواند مجوزهای TLS را از Lets Encrypt برای فعال کردن HTTPS به طور خودکار دریافت و مدیریت کند ، و پشتیبانی از HTTP / 2 را نیز شامل می شود. HTTPS سیستمی برای تأمین امنیت ترافیک بین کاربران و سرور مجازی شماست و به سرعت در حال تبدیل شدن به یک خصیصه اصلی از وب سایتهای در حال تولید است – بدون وجود آن ، اگر کاربران سعی در ورود اطلاعات به سیستم داشته باشند، کروم و فایرفاکس هشدار می دهند که وب سایت شما “امن نیست”.
پیش از این ، روش پیشنهادی برای نصب Caddy ، دانلود باینری های از پیش ساخته از وب سایت پروژه Caddy بود. با این حال ، تغییر در نحوه صدور مجوز Caddy بدان معنی است که شما دیگر مجاز به استفاده از این باینری های از پیش ساخته برای مقاصد تجاری نیستید ، مگر اینکه هزینه مجوز را بپردازید ، حتی اگر فقط در داخل یک بیزینس از Caddy استفاده کنید. خوشبختانه ، کد منبع Caddy هنوز کاملاً منبع باز است و می توانید خودتان Caddy را بسازید تا از مشکلات مربوط به مجوز جلوگیری کنید.
در این آموزش ، شما Caddy را از مبدا ایجاد خواهید کرد و از آن برای میزبانی وب سایتی امن با HTTPS استفاده خواهید کرد. این کار مستلزم کامپایل کردن آن ، پیکربندی آن با استفاده از یک Caddyfile و نصب افزونه ها است. در پایان یاد خواهید گرفت که پس از انتشار نسخه جدید ، نصب خود را به روز کنید.
پیش نیازها
• سرور مجازی اوبونتو 18.04 با امتیازات اصلی و یک حساب ثانویه و غیر ریشه. می توانید با دنبال کردن راهنمای تنظیم اولیه سرور مجازی برای اوبونتو 18.04 ، این کار را انجام دهید. برای این آموزش کاربر غیر ریشه sammy است.
• نام دامنه کاملاً ثبت شده. در کل این آموزش از your_domain استفاده خواهد شد. می توانید نام دامنه را در Namecheap خریداری کنید ، یک نابهم صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید.
• رکورد DNS با your_domain که آدرس IP عمومی سرور مجازی شما نشان می دهد. برای جزئیات بیشتر در مورد چگونگی اضافه کردن آنها می توانید این مقدمه را در vpsgol DNS دنبال کنید.
• زنجیره ابزار Go language که روی سرور مجازی شما نصب شده باشد. برای تنظیم Go ، راهنمای ما را در مورد نحوه نصب و ستاپ یک محیط برنامه نویسی محلی در اوبونتو 18.04 دنبال کنید. نیازی نیست پروژه های نمونه ای ایجاد کنید.
• یک نشانه دسترسی شخصی (کلید API) با مجوزهای خواندن و نوشتن برای حساب vpsgol نیاز دارید. برای ایجاد آن، به نحوه ایجاد نشانه دسترسی شخصی مراجعه کنید.
مرحله 1 – ساخت Caddy
در این مرحله ، Caddy را با قابلیت اضافه کردن افزونه ها در آینده، و بدون تغییر کد منبع Caddy ، از مبدأ میسازید.
برای اهداف این آموزش ، کد منبع را تحت ~ / caddy ذخیره می کنید. با اجرای دستور زیر آن دیرکتوری را ایجاد کنید:
⦁ $ mkdir ~/caddy

به آن بروید:
⦁ $ cd ~/caddy

کد منبع را برای اجرا و شخصی سازی Caddy در فایلی به نام caddy.go ذخیره خواهید کرد. با استفاده از دستور زیر آن را ایجاد کنید:
⦁ $ nano caddy.go

خطوط زیر را اضافه کنید:
~/caddy/caddy.go
package main

import (
“github.com/caddyserver/caddy/caddy/caddymain”
)

func main() {
// caddymain.EnableTelemetry = false
caddymain.Run()
}
این کد Caddy را مستقیماً از Github ) با استفاده از Git) وارد می کند و آن را از تابع main ورودی شروع می کند. اگر می خواهید تله متری را فعال کنید ، خط caddymain.EnableTelemetry را لغو اعتبار کنید و مقدار را روی true تنظیم کنید. وقتی کارتان تمام شد ، فایل را ذخیره کنید و ببندید.
برای اینکه caddy.go بتواند از متعلقات وارد شده استفاده کند ، باید آن را به عنوان یک ماژول معرفی کنید:
⦁ $ go mod init caddy

Output
go: creating new go.mod: module caddy

در این مرحله ، قصد دارید نسخه جدید Caddy را از طریق کد منبع فوق با اجرای دستور زیر بسازید:
⦁ $ go install

خروجی بسیار زیادی وجود خواهد داشت ، و جزئیات مربوط به کتابخانه هایی که Go به عنوان متعلقات لازم برای کامپایل کردن دانلود کرده است ، را نشان میدهند. عملکرد اجرایی تحت $GOPATH/bin ذخیره می شود ، همانطور که در پیش نیازها توضیح داده شده است.
پس از اتمام ، سعی کنید Caddy را اجرا کنید:
⦁ $ caddy

خروجی مشابه زیر را مشاهده خواهید کرد:
Output
Activating privacy features… done.

Serving HTTP on port 2015
http://:2015

WARNING: File descriptor limit 1024 is too low for production servers. At least 8192 is recommended. Fix with `ulimit -n 8192`.

این بدان معناست که Caddy با موفقیت شروع به کار کرده و روی پورت 2015 نیز موجود است. می توانید پیام هشدار را نادیده بگیرید ، زیرا این محدوده در مراحل بعدی و بدون مداخله شما تنظیم می شود. برای خروج ، CTRL + C را فشار دهید.
اکنون Caddy را ساخته و اجرا کرده اید. در مرحله بعدی ، Caddy را به عنوان یک سرویس نصب خواهید کرد تا به طور خودکار از بوت شروع شود ، و سپس تنظیمات مالکیت و مجوزهای آن را انجام میدهید تا از امنیت سرور مجازی اطمینان حاصل شود.
مرحله 2 – نصب Caddy
اکنون که تأیید کرده اید که قادر به ساخت و اجرای Caddy هستید ، وقت آن است که یک سرویس سیستمی را پیکربندی کنید تا بتوانید Caddy را به طور خودکار در هنگام شروع کار سیستم راه اندازی کنید. برای کسب اطلاعات بیشتر در مورد systemd ، به آموزش Systemd Essentials ما مراجعه کنید.
برای شروع ، binary caddy را به / usr / local / bin منتقل کنید ، که مکان استاندارد برای باینری هایی است که توسط مدیر بسته Ubuntu مدیریت نمی شوند و کلید کار سیستم نیستند:
⦁ $ sudo mv $GOPATH/bin/caddy /usr/local/bin/

سپس ، مالکیت باینری Caddy را به کاربر اصلی تغییر دهید:
⦁ $ sudo chown root:root /usr/local/bin/caddy

این کار باعث جلوگیری از تغییر سایر حسابهای اجرایی می شود. با این حال ، حتی اگر کاربر اصلی دارای Caddy باشد ، توصیه می شود آن را فقط با استفاده از سایر حساب های غیر ریشه موجود در سیستم اجرا کنید. این کار اطمینان می دهد که در صورت به خطر افتادن Caddy (یا هر برنامه دیگر) ، حمله کننده قادر نخواهد بود که باینری را تغییر دهد یا دستورات را به عنوان ریشه اجرا کند.
سپس ، مجوزهای فایل باینری را روی 755 تنظیم کنید – که به root مجوزهای کامل خواندن / نوشتن / اجرای فایل را می دهد ، در حالی که سایر کاربران فقط قادر به خواندن و اجرای آن هستند:
⦁ $ sudo chmod 755 /usr/local/bin/caddy

از آنجا که فرآیند Caddy به صورت root اجرا نمی شود ، لینوکس مانع از اتصال آن به پورت های 80 و 443 (به ترتیب پورت های استاندارد برای HTTP و HTTPS) می شود ، زیرا اینها عملیات امتیازی هستند. برای اینکه به راحتی در دامنه خود قابل دسترسی باشید ، بسته به پروتکل ، Caddy باید به یکی از این پورت ها متصل شود. در غیر اینصورت ، برای مشاهده محتویات ارائه شده ، باید شماره پورت خاصی را به URL دامنه در مرورگر خود اضافه کنید.
برای اینکه Caddy بدون اتصال به عنوان root به پورت های پایین متصل شود ، دستور زیر را اجرا کنید:
⦁ $ sudo setcap ‘cap_net_bind_service=+ep’ /usr/local/bin/caddy

ابزار setcap قابلیت های فایل را تنظیم می کند. در این دستور قابلیت CAP_NET_BIND_SERVICE را به باینری Caddy اختصاص می دهد ، که به یک دستور اجرایی اجازه می دهد تا به درگاه پایین تر از 1024 وصل شوند.
اکنون تنظیم باینری Caddy به پایان رسیده است و آماده نوشتن پیکربندی Caddy هستید. با اجرای دستور زیر دایرکتوری ایجاد کنید که فایل های پیکربندی Caddy را ذخیره کنید:
⦁ $ sudo mkdir /etc/caddy

سپس ، مجوزهای صحیح کاربر و گروه را برای آن تنظیم کنید:
⦁ $ sudo chown -R root:www-data /etc/caddy

تنظیم کاربر به عنوان root و گروه به عنوان www-data تضمین می کند که Caddy دسترسی خواندن و نوشتن به پوشه )از طریق گروه www-data ( را خواهد داشت و فقط حساب superuser از همان حقوق خواندن و تغییر برخوردار است. www-data کاربر و گروه پیش فرض سرور مجازی های وب در اوبونتو است.
در مرحله بعد ، مجوز TLS اتوماتیک را که از Let’s Encrypt تهیه می کند ، فعال خواهید کرد. برای تهیه آن ، دایرکتوری ایجاد کنید تا هرگونه گواهی TLS را که Caddy به دست خواهد آورد در آن ذخیره کنید و همان قوانین مالکیت مشابه دیرکتوری / etc / caddy ، را به آن بدهید:
⦁ $ sudo mkdir /etc/ssl/caddy

⦁ $ sudo chown -R root:www-data /etc/ssl/caddy

caddy باید بتواند گواهینامه هایی را در این دیرکتوری بنویسد و از آن بخواند تا درخواست ها را رمزگذاری کند. در همین راستا ، مجوزهای مربوط به دیرکتوری / etc / ssl / caddy را تغییر دهید تا فقط برای root و www-data در دسترس باشد:
⦁ $ sudo chmod 0770 /etc/ssl/caddy

سپس ، دایرکتوری ایجاد کنید تا فایل هایی که Caddy در آن میزبان خواهد بود را ذخیره کنید:
⦁ $ sudo mkdir /var/www

سپس ، مالک و گروه پوشه را روی www-data تنظیم کنید:
⦁ $ sudo chown www-data:www-data /var/www

Caddy پیکربندی خود را از فایلی به نام Caddyfile که تحت / etc / caddy ذخیره شده است ، می خواند. با اجرا دستور زیر، فایل را بر روی دیسک ایجاد کنید:
⦁ $ sudo touch /etc/caddy/Caddyfile

برای نصب سرویس Caddy ، فایل واحد systemd را از منبع Caddy Github روی / etc / systemd / system دانلود کنید:
⦁ $ sudo sh -c ‘curl https://raw.githubusercontent.com/caddyserver/caddy/master/dist/init/linux-systemd/caddy.service > /etc/systemd/system/caddy.service’

مجوزهای فایل سرویس را تغییر دهید تا فقط توسط مالک آن ، یعنی root قابل تغییر باشد:
⦁ $ sudo chmod 644 /etc/systemd/system/caddy.service

سپس سیستم را مجدد لود کنید تا سرویس Caddy را شناسایی کند:
⦁ $ sudo systemctl daemon-reload

با اجرای systemctl status بررسی کنید که systemd سرویس Caddy را شناسایی کرده است:
⦁ $ sudo systemctl status caddy

خروجی مشابه زیر را مشاهده میکنید:
Output
● caddy.service – Caddy HTTP/2 web server
Loaded: loaded (/etc/systemd/system/caddy.service; disabled; vendor preset: e
Active: inactive (dead)
Docs: https://caddyserver.com/docs

اگر همین خروجی را مشاهده می کنید ، سرویس جدید توسط systemd به درستی تشخیص داده شده است.
به عنوان بخشی از پیش نیاز اولیه راه اندازی سرور مجازی ، ufw ، فایروال کامپایل نشده و اتصالات SSH مجاز را فعال کنید. برای اینکه Caddy بتواند از طریق سرور مجازی خود ترافیک HTTP و HTTPS را سرویس دهی کند ، باید با اجرای دستور زیر در ufw به آنها اجازه دهید:
⦁ $ sudo ufw allow proto tcp from any to any port 80,443

خروجی مشابه زیر خواهد بود:
Output
Rule added
Rule added (v6)

از ufw status برای بررسی کارکرد تغییرات خود استفاده کنید:
⦁ $ sudo ufw status

خروجی زیر را مشاهده خواهید کرد:
Output
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
80,443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80,443/tcp (v6) ALLOW Anywhere (v6)

نصب شما در Caddy اکنون کامل است ، اما پیکربندی نشده است که به هر چیزی سرویس دهد. در مرحله بعدی ، Caddy را برای ارائه فایل از فهرست / var / www پیکربندی می کنید.
مرحله 3 – پیکربندی Caddy
در این بخش ، پیکربندی اصلی Caddy را برای ارائه فایل های استاتیک از سرور مجازی خود می نویسید.
با ایجاد یک فایل HTML پایه در / var / www با نام index.html شروع کنید:
⦁ $ sudo nano /var/www/index.html

خطوط زیر را اضافه کنید:
/var/www/index.html
<!DOCTYPE html>
<html>
<head>
<title>Hello from Caddy!</title>
</head>
<body>

استفاده از یک دامنه به جای فقط یک درگاه برای نام میزبان باعث خواهد شد که Caddy درخواستهایی را از طریق HTTPS ارائه دهد. دستورالعمل tls رفتار Caddy را هنگام استفاده از TLS پیکربندی می کند ، و dns subdirective مشخص می کند که Caddy باید از سیستم DNS-01 استفاده کند نه HTTP-01.
با این کار وب سایت شما آماده به کارگیری است. Caddy را با systemctl شروع کرده و سپس آن را فعال کنید ، تا روی بوت اجرا شود:
⦁ $ sudo systemctl start caddy

⦁ $ sudo systemctl enable caddy
اگر در دامنه خود جستجو کنید ، با همان پیام نشان داده شده به صورت خودکار به HTTPS هدایت می شوید.
نصب شما در Caddy اکنون کامل و ایمن است و می توانید با توجه به مورد استفاده خود ، سفارشی سازی کنید.
اگر می خواهید Caddy را با انتشار نسخه جدید به روز کنید ، باید فایل go.mod (ذخیره شده در همان دیرکتوری) را به روز کنید ، که اینگونه خواهد بود:
~/caddy/go.mod
module caddy

go 1.14

require (
github.com/caddyserver/caddy v1.0.5
github.com/caddyserver/dnsproviders v0.4.0
github.com/hacdias/caddy-minify v1.0.2
)

قسمت هایلایت شده ، نسخه Caddy مورد استفاده شماست. هنگامی که نسخه جدیدی در Github منتشر شد (به صفحه برچسب های انتشار مراجعه کنید) ، می توانید نسخه موجود در go.mod را با آن جایگزین کرده و با توجه به دو مرحله اول ،Caddy را کامپایل کنید. همین کار را می توانید برای همه افزونه های وارد شده انجام دهید.
نتیجه
اکنون Caddy روی سرور مجازی شما نصب و پیکربندی شده است ، و در صفحات ایستا در دامنه مورد نظر شما ، با گواهی نامه Let’s Encrypt TLS رایگان، ایمن شده است.
قدم درست بعدی این است که راهی بیابید که از انتشار نسخه های جدید Caddy اطلاع پیدا کنید. به عنوان مثال ، می توانید از Feed Atom برای نسخه های Caddy یا سرویس اختصاصی مانند  dependencies.io استفاده کنید.
شما می توانید برای اطلاعات بیشتر در مورد پیکربندی Caddy، مطالب Caddy را جستجو کنید.

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

استفاده از nsh برای دستورات از راه دور اوبونتو 18 –  میزبانی وب سایت با Caddy اوبونتو 18

تنظیم سرور ذخیره سازی آبجکت با استفاده از Minio در اوبونتو 18  –  ضبط و اشتراک گذاری ترمینال با Terminalizer اوبونتو

تنظیم مسیریابی شرطی و پاسخگو با React Router v4  –  ایجاد یک URL کوتاه کننده با Django و GraphQL

یک برنامه ردیابی سلامت را با React ،GraphQL و Okta –  ساخت برنامه چت زمان حقیقی React و GraphQL

به روزرسانی فیلترهای مرتب سازی Angular (زاویه ای) –  با استفاده از React ، Superagent و API اینستاگرام

نحوه ساختن یک برنامه جهانی با Nuxt.js و Django –  دکمه دانلود با ریزتعاملات با CSS ، anime.js و segment.js

نحوه اضافه کردن عکسهای پیشرفته در Node و Express  –  با Vue ،GraphQL و Apollo Client یک وبلاگ ساخت

یک برنامه SSR با روتر Preact ، Unistore و Preact بسازید  –  ساخت برنامه های وب پیشرونده با Angular

اشکال زدایی JavaScript در تولید با نقشه های منبع  –  می توان با Koa برنامه “سلام جهانی” ساخت

ساختن یک برنامه با Node ، React ، Okta  –   مدیریت حالت فرم در React با Redux Form

نحوه تنظیم Laravel ، Nginx و MySQL  –  ارتقاء از AngularJS به Angular با ngUpgrade

استفاده از ویژوال استودیو از راه دور  –  احراز هویت API با JSON Web Tokens و Passport

راه اندازی یک پروژه React با Parcel  –  ایجاد Swiper مانند Netflix را در Vue

ساختن یک ربات تلگرام با Laravel و BotMan  –  استفاده از map، filter، و reduce در جاوااسکریپت

چگونه می توان موتور جستجوی زمان واقعی را با Vue  –  ساختن سیستم مستندات (Documentation) با Vue و VuePress

استفاده از اشتراک زنده با کد ویژوال استودیو  –  ساخت یک مقیاس اندازه گیری قدرت رمز عبور را در React

شروع عملی GraphQL با Node.js و Express  –  ساخت یک برنامه آب و هوا در Django

نحوه نصب Discourse روی Ubuntu 18  –  تأیید رمز عبور با استفاده از درخواست فرم Laravel

نحوه نصب MySQL در CentOS 8  –  استفاده از پسوند PDO PHP برای انجام تراکنش MySQL

نصب و پیکربندی SNMP Daemon و Client در Ubuntu 18  –  نصب Linux، Nginx، MariaDB،PHP در Debian 10

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –