如何使用 TLS 将基本身份验证添加到 Caddy 配置并通过 Docker 自动续订以服务 QuestDB

问题描述 投票:0回答:1

由于 QuestDB OSS 没有基本的身份验证和 TLS,我想使用 caddy 来代理它,并且它还会自动更新我的 TLS 证书。

到目前为止,我已经成功地使用 TLS 正确地为 QuestDB 提供服务,但我仍停留在基本身份验证上。我从文档中复制了一个示例,它工作正常,但是当我尝试使用环境变量时,基本身份验证对我不起作用。这是我到目前为止所拥有的:

用于 Caddy 代理的 docker-compose.yaml(直接复制/粘贴来自文档

version: "3.7"
services:
  caddy:
    image: lucaslorentz/caddy-docker-proxy:ci-alpine
    ports:
      - 80:80
      - 443:443
    environment:
      - CADDY_INGRESS_NETWORKS=caddy
    networks:
      - caddy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./caddy_data:/data
    restart: unless-stopped

networks:
  caddy:
    external: true

volumes:
  caddy_data: {}

我已经创建了 caddy 网络,并且我有 QuestDB 的 docker-compose.yml

version: '3.7'
services:
  questdb:
    image: questdb/questdb:7.3.10
    environment:
      QDB_PG_USER: ${QDB_PG_USER:-admin}
      QDB_PG_PASSWORD: ${QDB_PG_PASSWORD:-password}
      QDB_PG_READONLY_USER_ENABLED: "true"
      QDB_PG_READONLY_USER: ${QDB_PG_READONLY_USER:-readonly}
      QDB_PG_READONLY_PASSWORD: ${QDB_PG_READONLY_PASSWORD:-quest}
    networks:
      - caddy
    labels:
      caddy: localhost
      caddy.reverse_proxy: "{{upstreams 9000}}"      
      #caddy.basicauth: "/"
      #caddy.basicauth./: "${BASIC_AUTH_USER:-readonly} ${BASIC_AUTH_HASHED_PASSWORD:-quest}"

networks:
  caddy:
    external: true

当我在注释掉基本身份验证的情况下启动此配置时,一切正常,我可以转到

https://localhost
http
将得到正确重定向)。我打算在部署时更改我的域名。但是当我取消注释我的基本身份验证配置时,questdb 容器似乎启动得很好,但我无法从本地主机访问。有什么想法吗?

database time-series basic-authentication caddy questdb
1个回答
0
投票

事实证明我看不到任何问题,因为我将 caddy 作为 docker compose 守护进程启动,但没有看到日志。当我检查日志时,我实际上可以看到这一点:

{\"error\":\"loading config: loading new config: loading http app module: provision http: server srv0: setting up route handlers: route 0: loading handler modules: position 0: loading module 'subroute': provision http.handlers.subroute: setting up subroutes: route 0: loading handler modules: position 0: loading module 'authentication': provision http.handlers.authentication: loading authentication providers: module name 'http_basic': provision http.authentication.providers.http_basic: base64-decoding salt: illegal base64 data at input byte 4\"}\n"}

由于我提供了一个明确的密码作为默认值,所以它无法启动。一旦我使用

htpasswd -nbB username 'password'
创建哈希密码,我就可以将其作为环境变量传递,一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.