Estou tentando fazer uma instalação limpa com o aplicativo de 1 clique do Digital Ocean.
É a terceira vez que crio a instância do zero e estou enfrentando o mesmo problema.
Ao verificar o DNS, vejo que meu domínio está apontando para o IP do Droplet, mas o Discourse não está aparecendo no meu domínio.
Executei o discourse-doctor e ele trava/pausa antes de mostrar a informação “domínio está servido/não está servido”.
Houve alguma atualização que possa ter introduzido esse comportamento?
@merefield Acabei de criar um novo droplet e executei a instalação conforme descrito na instalação oficial. Ainda estou enfrentando exatamente o mesmo problema.
O problema geralmente é que você não configurou o DNS corretamente ou que as alterações ainda não foram propagadas. Se você compartilhar sua URL, alguém pode verificar.
Eu costumo usar https://dnschecker.org/#A/example.com para verificar.
Mas, se você já tentou várias vezes, provavelmente esgotou o número de vezes que o Let’s Encrypt envia um certificado para você. Minha aposta é que esse seja o seu problema atual. Tenho cerca de 90% de certeza. Você pode “contornar” isso seguindo Set up Let’s Encrypt with multiple domains / redirects - #53, mas é uma configuração mais complexa e você não conseguiria realizar a configuração simples. Sua melhor opção é provavelmente esperar alguns dias e tentar novamente.
Não é o problema. /shared/ssl é o caminho dentro do contêiner. shared/standalone/ssl é o caminho fora do contêiner.
@pfaffman Sim, parece legítimo! Ainda assim, não consigo criá-lo, mas posso criar em outro domínio. Como a consulta DNS mostra que estou conectado ao servidor correto e tudo mais, presumo que seja o caso que você descreveu. Vou esperar mais alguns dias e tentar novamente.
Obrigado
@pfaffman Você pode me ajudar com o cheating? Eu olhei sobre configurá-lo com múltiplos domínios, mas não tenho certeza do que você quis dizer. Você quer dizer usar o hook after_ssl de alguma forma?
Você só precisa adicionar qualquer outro domínio. Então, se seu fórum é forum.example.com, você adicionaria um registro DNS para cheat.example.com apontando para seu servidor e o adicionaria conforme descrito lá. Como seria uma solicitação de certificado diferente, isso permitiria que você o solicitasse.
Ou ele pode adicionar um domínio ou subdomínio usando isso. Uma maneira fácil de contornar o problema quando você atingiu o limite de taxa. Mas, para evitar atingir os limites de taxa, é sempre melhor usar o ambiente de teste --dryrun. (Observe que o Let’s Encrypt está no processo de possivelmente renomear --dryrun para algo mais fácil de reconhecer para falantes de outras línguas, como --test ou --testrun. Provavelmente isso não acontecerá antes de janeiro de 2021 ou depois. Eles também estão trabalhando em uma reescrita completa de seus guias.
O método recomendado para adicionar um novo domínio a um certificado existente é, de fato, reutilizar o comando original, adicionar o novo domínio com outra flag -d e incluir --expand para instruir o certbot a não criar uma nova linhagem (o que resultaria em um novo subdiretório em /etc/letsencrypt/live).
O problema aqui é que você não sabe que é um teste até ser tarde demais. Além disso, nem mesmo para mim está claro como configurar o Discourse para buscar esses certificados no modo de teste.
Essa é uma das razões pelas quais eles (no Lets Encrypt) estão reescrevendo seus guias… para torná-los mais claros. Depois que você estiver configurado para obter um certificado de teste (falso) usando o ambiente de teste, pode executar o Certbot no modo de produção e obter sua CA. Após isso, o Discourse pode ser instalado e ele deve buscar a nova CA (ampliada).
Não é isso. O problema é que descobrir como adicionar uma seção ao app.yml para incluir essa opção—por mais óbvia que possa parecer—é cerca de 3 vezes (ou talvez 10 vezes) mais difícil do que instalar o Discourse. Você precisaria editar o app.yml, adicionar algo complicado e garantir que todos os espaços estejam exatamente corretos? É melhor esperar uma semana ou escolher um novo nome.
@pfaffman Escolhi um novo nome conforme descrevi. Um problema é que o cheat.example.com deveria ser um registro CNAME em vez de um registro A.
Ainda não funciona, no entanto. Vou dar mais um tempo.
EDIT: *Para referência, aqui está meu app.yml:
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Descomente estas duas linhas se desejar adicionar o Lets Encrypt (https)
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Defina db_shared_buffers para no máximo 25% da memória total.
## será definido automaticamente pelo bootstrap com base na RAM detectada, ou você pode substituir
db_shared_buffers: "256MB"
## pode melhorar o desempenho de ordenação, mas aumenta o uso de memória por conexão
#db_work_mem: "40MB"
## Qual revisão do Git este container deve usar? (padrão: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
# DISCOURSE_RELATIVE_URL_ROOT: /forum
## Quantas requisições web simultâneas são suportadas? Depende da memória e dos núcleos da CPU.
## será definido automaticamente pelo bootstrap com base nas CPUs detectadas, ou você pode substituir
UNICORN_WORKERS: 4
## TODO: O nome de domínio ao qual esta instância do Discourse responderá
## Obrigatório. O Discourse não funcionará com um número de IP puro.
DISCOURSE_HOSTNAME: cheat.example.com
## Descomente se quiser que o container seja iniciado com o mesmo
## hostname (opção -h) especificado acima (padrão "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Lista de e-mails separados por vírgula que serão feitos administradores e desenvolvedores
## no cadastro inicial, exemplo 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'emails@emails.com'
## TODO: O servidor de e-mail SMTP usado para validar novas contas e enviar notificações
## Endereço, nome de usuário e senha SMTP são obrigatórios
## AVISO: o caractere '#' na senha SMTP pode causar problemas!
DISCOURSE_SMTP_ADDRESS: smtpout.secureserver.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: some@email.com
DISCOURSE_SMTP_PASSWORD: "apassword"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (opcional, padrão true)
## Se você adicionou o template do Lets Encrypt, descomente abaixo para obter um certificado SSL gratuito
LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## O endereço do CDN http ou https para esta instância do Discourse (configurado para buscar)
## veja https://meta.discourse.org/t/14857 para detalhes
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## O container Docker é sem estado; todos os dados são armazenados em /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Plugins vão aqui
## veja https://meta.discourse.org/t/19157 para detalhes
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d cheat.example.com --expand"
No final, uma semana se passou e eu consegui usar meu domínio novamente. Provavelmente eu cometi algum erro na configuração para fazê-lo funcionar com o subdomínio, pois tenho quase certeza de que, após ler sobre o Let’s Encrypt, essa é a solução.
Obrigado novamente, @pfaffman e @JimPas, pela ajuda e pelas respostas informativas!