Este script configura um proxy reverso do Traefik com certificados LetSencrypt para seus aplicativos públicos. No meu exemplo, configurei um Dokuwiki (excelente texto simples com o aplicativo Wiki Markdown.) Enquanto fazia isso, senti que não havia um guia realmente simples para alcançar esse resultado e pode ser um pouco confuso para outras pessoas, então aqui está você.
NOTA: Atualmente, funciona com o Traefik V1. Suporte para a V2 chegar em breve.
Comprei meu domínio através da Namecheap. Qualquer que seja o registrador de domínio que você passar, você precisará configurar os registros do DNS corretamente através deles. Eu recomendo o Namecheap por causa de como era simples, mas eles são os mesmos. Enquanto o provedor permitir a Wildcard DNS Records, você deve estar pronto. Na guia "DNS avançada" da Namecheap, eu só adicionei isso, altere o valor do endereço IP para o endereço IP público do seu servidor:
| Tipo | Hospedar | Valor | Ttl |
|---|---|---|---|
| Um registro | * | Address IP | Automático |
Clone the repo: git clone https://github.com/Starttoaster/docker-traefik.git
Diretório de mudança: cd docker-traefik
Execute o script: ./docker-traefik.sh
Diretório de mudança: cd /opt/traefik
Depois de responder a algumas perguntas, o script deve ser concluído. Se você estiver executando em um VPS (Cloud Server), deve estar pronto para executar docker-compose up -d e criar seus aplicativos. Se você estiver auto-hospedar em casa, passe para as próximas seções para redes domésticas. Se você deseja adicionar mais ou outros aplicativos ao arquivo do Docker-Compose, basta adicionar a seção Rótulos a cada serviço e apenas alterar o subdomínio para o que deseja que o URL seja.
Se você fez este guia em um servidor usando um endereço IP privado (atrás de algum tipo de roteador), também abra a página de configuração do roteador e as portas 80 e 443 do seu servidor. Não posso instruir como fazer isso, pois cada roteador tem páginas de configuração diferentes, mas pesquise o Google pelo seu roteador + "encaminhamento de porta". Enquanto você estiver aqui, verifique também que seu servidor possui um IP privado atribuído estaticamente. Isso economizará muita dor de cabeça se o seu servidor for reiniciado e atribuído um novo IP do seu pool DHCP.
A configuração de DNS dinâmico é totalmente opcional. Os provedores de serviços de Internet normalmente não atribuem endereços IP públicos estáticos a usuários residenciais residenciais. Você pode encontrar um dia que seu modem/roteador a cabo foi redefinido por algum motivo. Depois que o modem/roteador voltou on -line, ele foi potencialmente atribuído um novo endereço IP público pelo DHCP do seu ISP. Neste caso, você tem duas opções:
Encontre manualmente seu novo endereço IP público (vá para: https://diagnostic.opendns.com/myip) e altere as seções de address ip para corresponder ao seu novo endereço IP no seu DNS A registros com quem for o seu provedor DNS. O meu é o DNS básico de Namecheap.
Configure DNS dinâmico (DDNS). O DDNS executa um aplicativo Web mínimo em seu servidor doméstico que envia periodicamente uma atualização do endereço IP que você está usando no seu provedor DNS. Ele autentica ao provedor DNS por meio de uma (s) passagem (s) que é atribuída pelo provedor DNS e, se o seu endereço IP alterar o provedor de DNS atualizará seus registros automaticamente. Eu recomendo seguir as instruções de configuração aqui: https://github.com/qdm12/ddns-updater
O contêiner suporta Namecheap, Cloudflare, GoDaddy, Duckdns e DreamHost. Certifique -se de ter todos os parâmetros necessários para quando o script os solicitar seguindo as instruções com o proprietário do contêiner. Se configurar o CloudFlare, consulte minha API GIST nas chamadas da CloudFlare aqui.
Isso é totalmente opcional. O painel Traefik oferece algumas informações sobre os aplicativos por trás do seu proxy da web. Adicionei um condicional que permite automatizar a configuração do painel da web. Você precisará de um 'htpasswd' que eu incluí uma seção abaixo sobre como obter uma. Um HTPasswd é apenas um nome de usuário com uma senha de hash. Consulte 'Para gerar um htpasswd' abaixo. Quando o painel Traefik estiver configurado, você só precisará inserir seu nome de usuário e senha na caixa de diálogo que aparece em https://dash.YOUR-DOMAIN.TLD
Isso é totalmente opcional. Se você deseja que todos os seus aplicativos tenham uma camada adicional de proteção, poderá configurar um htpasswd no arquivo traefik.toml. Um HTPasswd é apenas um nome de usuário com uma senha de hash. Eu adicionei um condicional no script que configurará isso para você. Tudo o que você precisa é de um "htpasswd" para entrar quando o script solicitar. Quando você deseja visitar um de seus webApps, você precisará inserir o nome de usuário e a senha que escolheu na caixa de diálogo que aparece.
htpasswd -nb user passwordCertifique -se de substituir o usuário pelo nome de usuário desejado e a senha pela senha desejada; ou
http://www.htaccesstools.com/htpasswd-generator/Basta inserir o nome de usuário e a senha desejados, copiar essa string e inseri -la no script quando solicitado.
Para o usuário do github QDM12 para obter a imagem DNS dinâmica de DNS, atualizando a imagem do Docker. QDM12/DDNS-UPDater
Para o usuário do Github, o Szepeviktor para suas contribuições para este script.
Para Miroslav Prasil, para a melhor imagem do Docker Docker do Docker Hub.