สคริปต์นี้กำหนดค่าพร็อกซี Reverse Traefik ด้วย LetSenCrypt Certs สำหรับ WebApps สาธารณะของคุณ ในตัวอย่างของฉันฉันตั้งค่า Dokuwiki (ข้อความธรรมดาที่ยอดเยี่ยมพร้อมแอพ Markdown Wiki) ในขณะที่ทำสิ่งนี้ฉันรู้สึกว่าไม่มีคำแนะนำง่ายๆที่จะบรรลุผลลัพธ์นี้และอาจทำให้คนอื่นสับสนเล็กน้อย
หมายเหตุ: ปัจจุบันใช้งานได้กับ Traefik v1 สนับสนุนให้ V2 มาเร็ว ๆ นี้
ฉันซื้อโดเมนของฉันผ่าน NAMECHEAP ไม่ว่าคุณจะต้องผ่านหน่วยทะเบียนโดเมนใดคุณจะต้องตั้งค่าบันทึก DNS อย่างถูกต้องผ่านพวกเขา ฉันแนะนำ NameCheap เพราะมันง่ายแค่ไหน แต่พวกเขาทั้งหมดก็เหมือนกัน ตราบใดที่ผู้ให้บริการอนุญาตให้บันทึก DNS Wildcard คุณควรจะไปได้ดี ในแท็บ "Advanced DNS" ของ NAMECHEAP ฉันเพิ่มสิ่งนี้ให้เปลี่ยนค่า IP-address เป็นที่อยู่ IP สาธารณะของเซิร์ฟเวอร์ของคุณ:
| พิมพ์ | เจ้าภาพ | ค่า | TTL |
|---|---|---|---|
| บันทึก | * | ที่อยู่ IP | อัตโนมัติ |
โคลน repo: git clone https://github.com/Starttoaster/docker-traefik.git
เปลี่ยนไดเรกทอรี: cd docker-traefik
เรียกใช้สคริปต์: ./docker-traefik.sh
เปลี่ยนไดเรกทอรี: cd /opt/traefik
เมื่อคุณตอบคำถามสองสามข้อแล้วสคริปต์ควรเสร็จสิ้น หากคุณทำงานบน VPS (Cloud Server) คุณควรพร้อมที่จะเรียกใช้ docker-compose up -d และเปิดแอพของคุณ หากคุณเป็นเจ้าภาพตัวเองจากที่บ้านให้ไปยังส่วนถัดไปสำหรับเครือข่ายบ้าน หากคุณต้องการเพิ่มแอพอื่น ๆ หรืออื่น ๆ ลงในไฟล์ Docker-compose คุณเพียงแค่ต้องเพิ่มส่วนป้ายกำกับในแต่ละบริการและเปลี่ยนโดเมนย่อยเป็นสิ่งที่คุณต้องการให้ URL เป็น
หากคุณทำคู่มือนี้บนเซิร์ฟเวอร์โดยใช้ที่อยู่ IP ส่วนตัว (ด้านหลังเราเตอร์บางชนิด) ตรวจสอบให้แน่ใจว่าได้เปิดหน้าการกำหนดค่าของเราเตอร์และพอร์ตส่งต่อ 80 และ 443 ไปยังที่อยู่ IP ส่วนตัวของเซิร์ฟเวอร์ของคุณ ฉันไม่สามารถแนะนำวิธีการทำเช่นนี้ได้เนื่องจากเราเตอร์แต่ละตัวมีหน้าการกำหนดค่าที่แตกต่างกัน แต่เพียงค้นหา Google สำหรับเราเตอร์ + "การส่งต่อพอร์ต" ของคุณ ในขณะที่คุณอยู่ที่นี่ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ของคุณมี IP ส่วนตัวที่ได้รับมอบหมายอย่างคงที่ สิ่งนี้จะช่วยให้ปวดหัวได้มากหากเซิร์ฟเวอร์ของคุณได้รับการรีบูตและกำหนด IP ใหม่จากพูล DHCP ของคุณ
การตั้งค่า DNS แบบไดนามิกเป็นทางเลือกทั้งหมด โดยทั่วไปผู้ให้บริการอินเทอร์เน็ตจะไม่กำหนดที่อยู่ IP สาธารณะแบบคงที่ให้กับผู้ใช้ที่อยู่อาศัย คุณอาจพบหนึ่งวันที่เคเบิลโมเด็ม/เราเตอร์ของคุณถูกรีเซ็ตด้วยเหตุผลบางอย่าง หลังจากโมเด็ม/เราเตอร์กลับมาออนไลน์มันอาจได้รับการกำหนดที่อยู่ IP สาธารณะใหม่โดย DHCP ของ ISP ของคุณ ในกรณีนี้คุณมีสองตัวเลือก:
ค้นหาที่อยู่ IP สาธารณะใหม่ของคุณด้วยตนเอง (ไปที่: https://diagnostic.opendns.com/myip) และเปลี่ยนส่วน IP-address เพื่อให้ตรงกับที่อยู่ IP ใหม่ของคุณในบันทึก DNS ของคุณกับผู้ให้บริการ DNS ของคุณ ฉันเป็น DNS พื้นฐานของ Namecheap
ตั้งค่า DNS แบบไดนามิก (DDNs) DDNS เรียกใช้แอปพลิเคชันเว็บขั้นต่ำจากภายในเซิร์ฟเวอร์ที่บ้านของคุณซึ่งส่งการอัปเดตที่อยู่ IP ที่คุณใช้อยู่ในปัจจุบันเป็นระยะ ๆ กับผู้ให้บริการ DNS ของคุณ มันรับรองความถูกต้องกับผู้ให้บริการ DNS ผ่านทาง passkey ที่ได้รับมอบหมายจากผู้ให้บริการ DNS และหากที่อยู่ IP ของคุณเปลี่ยนผู้ให้บริการ DNS จะอัปเดต A A โดยอัตโนมัติ ฉันแนะนำให้ทำตามคำแนะนำการตั้งค่าที่นี่: https://github.com/qdm12/ddns-updater
คอนเทนเนอร์รองรับ NameCheap, CloudFlare, GoDaddy, Duckdns และ Dreamhost ตรวจสอบให้แน่ใจว่าคุณมีพารามิเตอร์ที่จำเป็นทั้งหมดเมื่อสคริปต์ขอให้พวกเขาโดยทำตามคำแนะนำกับเจ้าของคอนเทนเนอร์ หากตั้งค่า CloudFlare โปรดดูส่วนสำคัญของฉันในการโทร API CloudFlare ที่นี่
นี่เป็นทางเลือกทั้งหมด แดชบอร์ด Traefik นำเสนอข้อมูลบางอย่างเกี่ยวกับแอปพลิเคชันที่อยู่เบื้องหลังพร็อกซีเว็บของคุณ ฉันได้เพิ่มเงื่อนไขที่อนุญาตให้คุณกำหนดค่าการกำหนดค่าของ Web Dashboard โดยอัตโนมัติ คุณจะต้องมี 'htpasswd' ซึ่งฉันได้รวมส่วนด้านล่างเกี่ยวกับวิธีการรับหนึ่ง HTPasswd เป็นเพียงชื่อผู้ใช้ที่มีรหัสผ่านแฮช ดู 'เพื่อสร้าง htpasswd' ด้านล่าง เมื่อกำหนดค่าแดชบอร์ด traefik คุณจะต้องป้อนชื่อผู้ใช้และรหัสผ่านของคุณในกล่องโต้ตอบที่ปรากฏขึ้นที่ https://dash.YOUR-DOMAIN.TLD
นี่เป็นทางเลือกทั้งหมด หากคุณต้องการให้แอพทั้งหมดของคุณมีเลเยอร์การป้องกันเพิ่มเติมคุณสามารถกำหนดค่า HTPasswd ในไฟล์ traefik.toml HTPasswd เป็นเพียงชื่อผู้ใช้ที่มีรหัสผ่านแฮช ฉันได้เพิ่มเงื่อนไขในสคริปต์ที่จะกำหนดค่าสิ่งนี้ให้คุณ สิ่งที่คุณต้องการคือ "HTPasswd" ที่จะป้อนเมื่อสคริปต์ขอให้มัน เมื่อคุณต้องการเยี่ยมชมหนึ่งใน WebApps ของคุณคุณจะต้องป้อนชื่อผู้ใช้และรหัสผ่านที่คุณเลือกในกล่องโต้ตอบที่ปรากฏขึ้น
htpasswd -nb user passwordตรวจสอบให้แน่ใจว่าได้แทนที่ผู้ใช้ด้วยชื่อผู้ใช้ที่ต้องการและรหัสผ่านด้วยรหัสผ่านที่ต้องการ หรือ
http://www.htaccesstools.com/htpasswd-generator/เพียงป้อนชื่อผู้ใช้และรหัสผ่านที่คุณต้องการจากนั้นคัดลอกสตริงนั้นแล้วป้อนในสคริปต์เมื่อถามถึงมัน
ไปยังผู้ใช้ GitHub QDM12 สำหรับ DNS แบบไดนามิกที่มีน้ำหนักเบาอัปเดตอิมเมจ Docker QDM12/DDNS-updater
ถึงผู้ใช้ GitHub Szepeviktor สำหรับการมีส่วนร่วมของพวกเขาในสคริปต์นี้
ถึง Miroslav Prasil สำหรับภาพ Dokuwiki Docker ที่ดีที่สุดบน Docker Hub