该脚本为您的公共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图像。