Preciso de ajuda para configurar o discourse usando o Caddy como rproxy

Se eu não estiver postando isso na seção correta, peço desculpas.

Estou usando o Oracle Free tier como meu servidor e tenho uma instalação do Ubuntu com alguns contêineres Docker em execução.
Estou usando o Caddy, também rodando em Docker, como rproxy para todos os meus contêineres.

Agora preciso configurar o Discourse como a última peça do quebra-cabeça, mas não tenho certeza de como proceder.
Testei e instalei o Discourse com uma instalação Docker padrão em meu outro servidor de teste, mas esse é o pacote completo, e se eu precisar usar o Caddy como rproxy, preciso desabilitar alguns dos recursos, eu acho?

Se alguém puder me indicar a direção certa, eu agradeceria muito.

Isso pode ser útil:

1 curtida

Acho que isso me colocou no caminho certo. Não tenho certeza se estou apontando para o caminho certo, no entanto.

No meu app.yml, defini meus volumes aqui:
E consigo compilar meu Discourse sem problemas.

volumes:
  - volume:
      host: /opt/docker/docker_configs/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /opt/docker/docker_configs/discourse/shared/standalone/log/var-log
      guest: /var/log

E lendo aquele tópico do fórum, tentei algumas coisas com meu Caddyfile.

forum.mydomain.com {
  reverse_proxy unix//opt/docker/docker_configs/discourse/shared/standalone/nginx.http.sock
  import cloudflare
}
forum.mydomain.com {
  reverse_proxy /opt/docker/docker_configs/discourse/shared/standalone/nginx.http.sock
  import cloudflare
}

Nenhum deles funciona, mas realmente não tenho certeza se estou fazendo isso certo xD

Como você está iniciando o Caddy?

Esta linha do tópico original precisa ser ajustada para o seu diretório para que isso funcione. A menos que o diretório correto seja montado no contêiner do Caddy, ele não poderá ver o socket criado pelo Discourse.

Ah, você quer dizer que preciso montar o soquete do discourse no caddy? Isso faz sentido!

Eu tentei outra coisa ontem à noite, no entanto.
Quando o discourse é iniciado, ele está rodando em uma rede bridge do docker. Se eu simplesmente adicionar a rede docker-default, que todos os meus outros contêineres, incluindo o Caddy, estão, então posso simplesmente adicioná-lo ao caddy como faço com todos os meus outros contêineres.

forum.mydomain.com {
  reverse_proxy app:80
  import cloudflare
}

No entanto, não consegui descobrir onde a rede docker é definida em todos esses arquivos yml. Se eu pudesse mudá-la de bridge para rodar no padrão docker, tudo estaria resolvido para mim.

Isso pode ser útil:

Embora seja para o Nginx Proxy Manager, ele descreve o processo de trazer contêineres para a rede bridge padrão.

1 curtida

Sim! Funciona!

Tive que mudar algumas coisas, mas está quase igual ao primeiro tópico que você linkou.

No Caddyfile tive que escrever assim:
O que é um pouco diferente do que está escrito no tópico.

forum.mydomain.com {
  reverse_proxy unix//sock/nginx.http.sock
  import cloudflare
}

E adicionei o volume, o que é claro que faz sentido agora que penso nisso.
Estou usando docker-compose.

  caddy:
    container_name: Caddy
    build:
      dockerfile: ./caddy-config/Dockerfile
      context: .
    labels:
      com.centurylinklabs.watchtower.enable: "false"
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./docker_configs/caddy/data:/data
      - ./docker_configs/caddy/Caddyfile:/etc/caddy/Caddyfile
      - ./docker_configs/caddy/srv:/srv
      - /var/discourse/shared/standalone:/sock
    restart: always

Muito obrigado pela ajuda!

1 curtida

Isso provavelmente se deve a alterações upstream no próprio Caddy. A imagem vinculada no tópico ainda funciona com a configuração fornecida, até onde sei.

1 curtida