該腳本為您的公共WebApps配置了帶有Letsencrypt證書的Traefik反向代理。在我的示例中,我設置了一個Dokuwiki(帶有Markdown Wiki應用程序的出色的純文本。
注意:目前與Traefik V1一起使用。支持V2即將到來。
我通過namecheap購買了域。無論您經歷的域註冊服務商如何,您都需要通過它們正確設置DNS記錄。我推薦Namecheap,因為它的簡單程度,但是它們都是相同的。只要提供商允許通配符DNS記錄,您就應該好起來。在Namecheap的“高級DNS”選項卡中,我僅添加了此標籤,將IP地址值更改為服務器的公共IP地址:
| 類型 | 主持人 | 價值 | TTL |
|---|---|---|---|
| 記錄 | * | IP地址 | 自動的 |
克隆回購: git clone https://github.com/Starttoaster/docker-traefik.git
更改目錄: cd docker-traefik
運行腳本: ./docker-traefik.sh
更改目錄: cd /opt/traefik
回答幾個問題後,腳本應該完成。如果您在VPS(雲服務器)上運行,則應該準備好運行docker-compose up -d並提出您的應用程序。如果您是在家中自我主持的,請轉到家庭網絡的下一個部分。如果要在Docker-Compose文件中添加更多或其他應用程序,則只需要將標籤部分添加到每個服務中,然後將子域的域名更改為您想要的URL即可。
如果您使用專用IP地址(在某種路由器後面)在服務器上完成了本指南,請確保將路由器的配置頁面打開,然後向前端口80和443向您的服務器的私有IP地址打開。我無法指導如何執行此操作,因為每個路由器都有不同的配置頁面,但只需搜索您的路由器 +“端口轉發”即可。當您在這裡時,還要確保您的服務器具有靜態分配的私有IP。如果您的服務器重新啟動並從DHCP池中分配了新的IP,則可以節省很多頭痛。
設置動態DNS完全是可選的。互聯網服務提供商通常不會為住宅用戶分配靜態公共IP地址。有一天,您可能會發現電纜調製解調器/路由器由於某種原因被重置。調製解調器/路由器返回在線之後,它可能由ISP的DHCP分配了新的公共IP地址。在這種情況下,您有兩個選擇:
手動查找您的新公共IP地址(請訪問:https://diagnostic.opendns.com/myip),然後更改IP-地址段,以匹配DNS上的新IP地址與您的DNS提供商所符合的DNS a Records。我的是Namecheap的基本DNS。
設置動態DNS(DDN)。 DDNS從家庭服務器中運行最小的Web應用程序,該應用程序定期將您當前使用的IP地址的更新發送給DNS提供商。它通過由DNS提供商分配的PassKey向DNS提供商進行身份驗證,如果您的IP地址更改,DNS提供商將自動更新其A記錄。我建議在此處按照設置說明:https://github.com/qdm12/ddns-updater
容器支持Namecheap,Cloudflare,Godaddy,Duckdns和Dreamhost。確保您有所有必要的參數,以便通過遵循容器所有者的說明來要求它們。如果設置CloudFlare,請在此處查看我在CloudFlare API呼叫上的要旨。
這完全是可選的。 Traefik儀表板提供了有關Web代理背後的應用程序的一些信息。我添加了一個條件,使您可以自動化Web儀表板的配置。您將需要一個“ htpasswd”,我在下麵包括有關如何獲得的部分。 HTPASSWD只是帶有Hashed密碼的用戶名。請參閱下面的“要生成htpasswd”。配置Traefik儀表板時,您只需要在https://dash.YOUR-DOMAIN.TLD中彈出的對話框中輸入用戶名和密碼
這完全是可選的。如果您希望所有應用都具有額外的保護層,則可以在Traefik.toml文件中配置HTPASSWD。 HTPASSWD只是帶有Hashed密碼的用戶名。我在腳本中添加了一個有條件的,可以為您配置它。您需要的只是腳本要求時要輸入的“ htpasswd”。當您想訪問一個網絡應用程序時,您需要在彈出的對話框中輸入您選擇的用戶名和密碼。
htpasswd -nb user password確保用所需的用戶名替換用戶,並用所需的密碼替換密碼;或者
http://www.htaccesstools.com/htpasswd-generator/只需輸入所需的用戶名和密碼,然後在詢問它時復制該字符串並在腳本中輸入。
向GitHub用戶QDM12進行輕巧的動態DNS更新Docker映像。 QDM12/DDNS-UPDATER
向github用戶szepeviktor對此腳本的貢獻。
到米羅斯拉夫·普拉西爾(Miroslav Prasil),在Docker Hub上獲得最佳的Dokuwiki Docker圖像。