如何仅用 3 分钟设置带 Traefik 反向代理的 Owntracks(HTTP 模式)

Owntracks 是少数几个同时适用于 Android 和 iOS 的开源位置跟踪应用之一。它是跟踪你的位置并与他人分享的好方法。

有关 Traefik 设置,请参见简单的 Traefik docker-compose 设置(Lets Encrypt Cloudflare DNS-01 和 TLS-ALPN-01 和 HTTP-01 挑战)

首先,创建 docker-compose.yml

docker-compose.yml
services:
  otrecorder:
    image: owntracks/recorder
    volumes:
      - ./otrecorder_config:/config
      - ./otrecorder_store:/store
    environment:
      OTR_HOST: "mosquitto"
      OTR_USER: "otrecorder"
      OTR_PASS: "${MOSQUITTO_OTRECODER_PASSWORD}"
    depends_on:
      - mosquitto
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.owntracks.rule=Host(`owntracks.mydomain.com`)"
      - "traefik.http.routers.owntracks.entrypoints=websecure"
      - "traefik.http.routers.owntracks.tls.certresolver=cloudflare-ec384"
      - "traefik.http.routers.owntracks.tls.domains[0].main=mydomain.com"
      - "traefik.http.routers.owntracks.tls.domains[0].sans=*.mydomain.com"
      - "traefik.http.services.owntracks.loadbalancer.server.port=8083"
      - "traefik.http.middlewares.owntracks-compress.compress=true"
      - "traefik.http.routers.owntracks.middlewares=owntracks-compress,owntracks-auth"
      - "traefik.http.middlewares.owntracks-auth.basicauth.users=owntracks:$$apr1$$WE6pu5/y$90pvQQXZrTlFRpQGAKb15.

    restart: unless-stopped

  mosquitto:
    image: eclipse-mosquitto
    volumes:
      - ./mosquitto_data:/mosquitto/data
      - ./mosquitto_logs:/mosquitto/logs
      - ./mosquitto_config:/mosquitto/config
    restart: unless-stopped

记得将 mydomain.com 替换为你的实际域名!

你可以使用任何证书配置。此示例使用 DNS-01 挑战,这样我们可以获取 *.mydomain.com 的通配符证书(可以与其他子域共享)。如果你不需要通配符证书,可以使用 ALPN-01 挑战代替(HTTP-01 也可以,但我总是推荐 ALPN-01,因为它与 Traefik 无缝配合)。

创建基本认证哈希密码

在这里,你需要用你自己的密码替换基本认证信息!这是整个 Owntracks 实例的全局密码。

运行

create_htpasswd.sh
htpasswd -c /dev/stdout owntracks

输入密码两次,它将输出以下内容

htpasswd_output.txt
New password:
Re-type new password:
Adding password for user owntracks
owntracks:$apr1$WE6pu5/y$90pvQQXZrTlFRpQGAKb15.

你需要将每个 $ 替换为 $$!不要忘记此步骤!

初始化 Mosquitto

Mosquitto 也需要一个随机密码,它将保存在 .env 中。但在此配置中,我们不暴露 Mosquitto。

创建 init.sh,它主要初始化 Mosquitto。

init.sh
#!/bin/sh
# Init script for Owntracks with Docker setup
mkdir -p mosquitto_config
cat << 'EOF' > mosquitto_config/mosquitto.conf
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/logs/mosquitto.log

listener 1883
## Authentication ##
# allow_anonymous false
password_file /mosquitto/config/mosquitto.passwd
EOF

# Generate random MQTT password
echo "MOSQUITTO_OTRECODER_PASSWORD=$(pwgen 30 1)" > .env

# Initialize Mosquitto password file
source .env
echo "${MOSQUITTO_OTRECODER_PASSWORD}"
docker-compose run mosquitto mosquitto_passwd -b -c /mosquitto/config/mosquitto.passwd otrecorder ${MOSQUITTO_OTRECODER_PASSWORD}
docker-compose run mosquitto chown root:root /mosquitto/config/mosquitto.passwd /mosquitto/config/mosquitto.conf
docker-compose run mosquitto chmod 0700 /mosquitto/config/mosquitto.conf
mkdir -p mosquitto_config
cat << 'EOF' > mosquitto_config/mosquitto.conf
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/logs/mosquitto.log

listener 1883
## Authentication ##
# allow_anonymous false
password_file /mosquitto/config/mosquitto.passwd
EOF

# Generate random MQTT password
echo "MOSQUITTO_OTRECODER_PASSWORD=$(pwgen 30 1)" > .env

# Initialize Mosquitto password file
source .env
echo "${MOSQUITTO_OTRECODER_PASSWORD}"
docker-compose run mosquitto mosquitto_passwd -b -c /mosquitto/config/mosquitto.passwd otrecorder ${MOSQUITTO_OTRECODER_PASSWORD}
docker-compose run mosquitto chown root:root /mosquitto/config/mosquitto.passwd /mosquitto/config/mosquitto.conf
docker-compose run mosquitto chmod 0700 /mosquitto/config/mosquitto.conf

现在运行 init.sh

call_init.sh
bash init.sh

设置自动启动

现在我建议为你的实例设置基于 systemd 的自动启动。10 秒内为你的 docker-compose 项目创建 systemd 服务

setup_systemd_service.sh
curl -fsSL https://techoverflow.net/scripts/create-docker-compose-service.sh | sudo bash /dev/stdin

这也将立即启动 Owntracks。

应用设置

在应用中,你需要将其配置为 HTTP 模式并设置 URL,如

owntracks_url.txt
https://owntracks.my-domain.com/pub

不要忘记末尾的 /pub

将用户名和密码设置为 owntracks 和你之前使用 htpasswd 设置的密码。

对于浏览器访问,你可以使用 https://owntracks.my-domain.com/ 访问 Web 界面。作为用户,使用 owntracks 和你之前使用 htpasswd 设置的密码。


Check out similar posts by category: Docker