مقدمه
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>
<h1 style=”font-family: sans-serif”>This page is being served via Caddy</h1>
</body>
</html>

هنگامی که این فایل در یک مرورگر وب نمایش داده می شود ، عنوانی با متن This page is being served via Caddy نمایش داده می شود. فایل را ذخیره کنید و ببندید.
فایل پیکربندی Caddyfile را که قبلاً ایجاد کرده اید برای ویرایش باز کنید:
⦁ $ sudo nano /etc/caddy/Caddyfile

خطوط زیر را اضافه کنید:
/etc/caddy/Caddyfile
:80 {
root /var/www
gzip
}

این یک پیکربندی اولیه Caddy است ، و اعلام می کند که پورت 80 سرور مجازی شما باید با فایل هایی از / var / www سرویس دهی شود و با استفاده از gzip فشرده شود تا دفعات لود صفحه در سمت کلاینت کاهش یابد.
در اکثر موارد ، Caddy به شما امکان می دهد بخشنامه های پیکربندی را بیشتر تنظیم کنید. به عنوان مثال ، می توانید با بسط دادن دستورالعمل با بریس های موج دار و لیست دستورالعمل های تحت آن، فشرده سازی gzip را فقط به فایل های HTML و PHP محدود کنید و سطح فشرده سازی را روی 6 تنظیم کنید (1 پایین ترین و 9 بالاترین است):
/etc/caddy/Caddyfile
:80 {
root /var/www
gzip {
ext .html .htm .php
level 6
}
}

پس از اتمام کار ، فایل را ذخیره کنید و ببندید.
Caddy تعداد زیادی دستورالعمل مختلف برای بسیاری از موارد استفاده دارد. به عنوان مثال ، دستورالعمل fastcgi می تواند برای فعال کردن PHP مفید باشد. از دستورالعملmarkdown می توان برای تبدیل خودکار فایل های Markdown به HTML قبل از ارائه آنها استفاده کرد ، که می تواند برای ایجاد یک وبلاگ ساده مفید باشد.
برای آزمایش اینکه همه چیز به درستی کار می کند ، Caddy را شروع کنید:
⦁ $ sudo systemctl start caddy

سپس ، برای پیدا کردن اطلاعات در مورد وضعیت سرویس دهی Caddy ، systemctl status را اجرا کنید:
⦁ $ sudo systemctl status caddy

خروجی زیر را مشاهده خواهید کرد:
Output
● caddy.service – Caddy HTTP/2 web server
Loaded: loaded (/etc/systemd/system/caddy.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2020-03-12 11:17:49 UTC; 11s ago
Docs: https://caddyserver.com/docs
Main PID: 3893 (caddy)
Tasks: 7 (limit: 1152)
CGroup: /system.slice/caddy.service
└─3893 /usr/local/bin/caddy -log stdout -log-timestamps=false -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp

Mar 12 11:17:49 caddy-article-update systemd[1]: Started Caddy HTTP/2 web server.
Mar 12 11:17:49 caddy-article-update caddy[3893]: [INFO] Caddy version: v1.0.5
Mar 12 11:17:49 caddy-article-update caddy[3893]: Activating privacy features… done.
Mar 12 11:17:49 caddy-article-update caddy[3893]: Serving HTTP on port 80
Mar 12 11:17:49 caddy-article-update caddy[3893]: http://
Mar 12 11:17:49 caddy-article-update caddy[3893]: [INFO] Serving http://
Mar 12 11:17:49 caddy-article-update caddy[3893]: [INFO][cache:0xc00007a7d0] Started certificate maintenance routine
Mar 12 11:17:49 caddy-article-update caddy[3893]: [WARNING] Sending telemetry (attempt 1): Post “https://telemetry.caddyserver.com/v1/update/6a8159c4-3427-42
Mar 12 11:17:57 caddy-article-update caddy[3893]: [WARNING] Sending telemetry (attempt 2): Post “https://telemetry.caddyserver.com/v1/update/6a8159c4-3427-42

اکنون می توانید IP مرورگر وب را در IP سرور مجازی خود مرور کنید. صفحه وب نمونه شما نمایش داده می شود:

اکنون Caddy را برای ارائه فایلهای ثابت از سرور مجازی خود پیکربندی کرده اید. در مرحله بعد ، عملکرد Caddy را با استفاده از افزونه ها گسترش می دهید.
مرحله 4 – استفاده از افزونه ها
افزونه ها راهی برای تغییر و گسترش عملکرد Caddy ارائه می دهند. به طور کلی ، آنها مطابق مورد استفاده شما ، دستورالعمل های پیکربندی بیشتری را برای استفاده ارائه می دهند. در این بخش با نصب افزونه minify افزونه های اضافی را حذف کرده و از آنها استفاده خواهید کرد، که فضای سفید را حذف کرده و کدی را که برای کلاینت ارسال می شود ساماندهی می کند ، که باعث کاهش بیشتر اثرات قبلی و دفعات لود می شود.
منبع GitHub افزونه minify،  hacdias/caddy-minify میباشد.
با کد منبعی که در مرحله اول ایجاد کردید به دیرکتوری بروید:
⦁ $ cd ~/caddy

برای اضافه کردن افزونه به Caddy ، باید آن را در فایل caddy.go که قبلاً برای ساخت Caddy استفاده کرده اید وارد کنید. caddy.go را برای ویرایش باز کنید:
⦁ $ nano caddy.go

افزونه minify را با اضافه کردن خط هایلایت شده مانند زیر وارد کنید:
~/caddy/caddy.go
package main

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

_ “github.com/hacdias/caddy-minify”
)

func main() {
// caddymain.EnableTelemetry = false
caddymain.Run()
}

فایل را ذخیره کنید و ببندید.
ممکن است برخی از افزونه ها به اندکی تنظیمات جزئی پیکربندی نیاز داشته باشند ، بنابراین حتماً مطالب مربوطه را برای هر نوع نصب مطالعه کنید. می توانید لیستی از افزونه های محبوب را در قسمت سمت چپ مقاله های Caddy ، در زیر افزونه ها پیدا کنید.
هر زمان که افزونه جدیدی اضافه کنید ، باید Caddy را مجدداً بازسازی کنید. دلیل این است که Go یک زبان برنامه نویسی کامپایل شده است ، به این معنی که کد منبع قبل از اجرا به کد دستگاه تبدیل می شود. تغییر شما در اعلان ورود کد منبع را تغییر داده است ، اما تا زمان کامپایل آن روی باینری تأثیر نخواهد گذاشت.
برای کامپایل Caddy از دستور go install استفاده کنید:
⦁ $ go install

پس از اتمام ، باینری ایجاد شده را به / usr / local / bin منتقل کنید و مانند دفعه قبل مجوزهای باینری را تنظیم کنید. برای اطمینان از کارایی و امنیت آن ، باید هر بار که Caddy را بازسازی کنید ، این مراحل را انجام دهید:
⦁ $ sudo mv $GOPATH/bin/caddy /usr/local/bin/

⦁ $ sudo chown root:root /usr/local/bin/caddy

⦁ $ sudo chmod 755 /usr/local/bin/caddy

⦁ $ sudo setcap ‘cap_net_bind_service=+ep’ /usr/local/bin/caddy

برای شروع استفاده از افزونه minify ، لازم است بخشنامه minify را به Caddyfile خود اضافه کنید. آن را برای ویرایش باز کنید:
⦁ $ sudo nano /etc/caddy/Caddyfile

افزونه را با افزودن خط زیر به بلوک پیکربندی فعال کنید:
/etc/caddy/Caddyfile
:80 {
root /var/www
gzip
minify
}

اکنون ، سرور مجازی خود را با استفاده از systemctl مجدداً راه اندازی کنید:
⦁ $ sudo systemctl restart caddy

اکنون Caddy در حال اجراست و فایل های ارائه شده از جمله فایل index.html را که قبلاً ایجاد کرده اید ، کمینه می کند. با واکشی مطالب دامنه خود با استفاده از curl ، می توانید “حداقل سازی” را در کار مشاهده کنید:
⦁ $ curl http://your_domain

خروجی زیر را مشاهده خواهید کرد. توجه کنید که فضای سفید غیر ضروری حذف شده است ، نشان می دهد که افزونه minify در حال کار است.
Output
<!doctype html><title>Hello from Caddy!</title><h1 style=font-family:sans-serif>This page is being served via Caddy</h1>

در این مرحله یاد گرفتید که چگونه Caddy را با افزونه ها گسترش دهید. در مرحله بعد ، شما با نصب افزونه tls.dns.vpsgol ، HTTPS را فعال می کنید.
مرحله 5 – فعال کردن خودکار TLS با Let’s Encrypt
در این بخش ، صدور گواهینامه Let’s Encrypt خودکار را با استفاده از رکوردهای TXT DNS برای تأیید فعال می کنید.
برای تأیید صحت استفاده از رکوردهای TXT DNS ، افزونه ای برای رابط با vpsgol API با نام tls.dns.vpsgol نصب خواهید کرد. روش نصب آن تقریباً با نحوه نصب افزونه minify در مرحله قبل یکسان است. برای شروع ،caddy.go را باز کنید:
⦁ $ nano caddy.go

منبع افزونه را به ورودی ها اضافه کنید:
~/caddy/caddy.go
package main

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

_ “github.com/hacdias/caddy-minify”

_ “github.com/caddyserver/dnsproviders/vpsgol”
)

func main() {
// caddymain.EnableTelemetry = false
caddymain.Run()
}

با اجرای دستور زیر آن را کامپایل کنید:
⦁ $ go install

اطمینان حاصل کنید که Caddy از طریق systemctl متوقف شده است ، سپس نصب افزونه را با کپی کردن باینری تازه ساخته Caddy پایان دهید و یکبار دیگر مالکیت و مجوزهای خود را تنظیم کنید:
⦁ $ sudo systemctl stop caddy

⦁ $ sudo mv $GOPATH/bin/caddy /usr/local/bin/

⦁ $ sudo chown root:root /usr/local/bin/caddy

⦁ $ sudo chmod 755 /usr/local/bin/caddy

⦁ $ sudo setcap ‘cap_net_bind_service=+ep’ /usr/local/bin/caddy

در مرحله بعدی ، Caddy را تنظیم کنید تا با API vpsgol برای تنظیم رکوردهای DNS کار کند. برای پیکربندی DNS vpsgol ، Caddy باید به این نشانه به عنوان یک متغیر محیط دسترسی پیدا کند ، بنابراین باید فایل واحد سیستم شده آن را ویرایش کنید:
⦁ $ sudo nano /etc/systemd/system/caddy.service

خطی که با Environment= در بخش [Service] شروع میشود را پیدا کنید. این خط متغیرهای محیطی را که باید به فرآیند Caddy منتقل شوند ، تعریف می کند. فضایی را در انتهای این خط اضافه کنید ، سپس یک متغیر DO_AUTH_TOKEN و به دنبال آن نشانه تازه ایجاد شده را اضافه کنید:
/etc/systemd/system/caddy.service
[Service]
Restart=on-abnormal

; User and group the process will run as.
User=www-data
Group=www-data

; Letsencrypt-issued certificates will be written to this directory.
Environment=CADDYPATH=/etc/ssl/caddy DO_AUTH_TOKEN=your_token_here

این فایل را ذخیره کنید و ببندید ، سپس systemd daemon را مانند قبل لود کنید تا اطمینان حاصل شود که پیکربندی به روز شده است:
⦁ $ sudo systemctl daemon-reload

systemctl status را اجرا کنید تا بررسی کنید که تغییرات پیکربندی شما درست است:
⦁ $ sudo systemctl status caddy

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

باید چند تغییر جزئی در Caddyfile خود ایجاد کنید ، بنابراین آن را برای ویرایش باز کنید:
⦁ $ sudo nano /etc/caddy/Caddyfile

خطوط هایلایت شده را به Caddyfile اضافه کنید ، مطمئن شوید که your_domain را با دامنه خود جایگزین (به جای فقط پورت: 80) و gzip را کامنت میکنید:
/etc/caddy/Caddyfile
your_domain {
root /var/www
#gzip
minify
tls {
dns vpsgol
}
}

استفاده از یک دامنه به جای فقط یک درگاه برای نام میزبان باعث خواهد شد که 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 ارزان – 

برچسب‌ها:, , ,