.
├── auth
│ └── users.auth
├── docker-compose.yml
├── .env
└── mosquitto
└── config
├── mosquitto.conf
└── passwd
services:
mosquitto:
image: eclipse-mosquitto:2
ports:
- 1883:1883
- 9001:9001
volumes:
- ./mosquitto/config:/mosquitto/config
- ./mosquitto/data:/mosquitto/data
- ./mosquitto/log:/mosquitto/log
restart: unless-stopped
otrecorder:
image: owntracks/recorder
ports:
- 8083:8083
volumes:
- ./store:/store
- ./config:/config
- ./auth:/auth
restart: unless-stopped
environment:
- OTR_HOST=mosquitto
- OTR_PORT=1883
- OTR_USER=${OTR_USER}
- OTR_PASS=${OTR_PASS}
- OTR_HTTPPORT=8083
- OTR_AUTHFILE=/auth/users.auth
depends_on:
- mosquitto
owntracks-frontend:
image: owntracks/frontend
ports:
- 80:80
environment:
- SERVER_HOST=otrecorder
- SERVER_PORT=8083
restart: unless-stopped
https://raw.githubusercontent.com/tryweb/docker-compose/refs/heads/main/owntracks/docker-compose.yml
vi .envOTR_USER=recorder OTR_PASS=recorderpass
https://raw.githubusercontent.com/tryweb/docker-compose/refs/heads/main/owntracks/.env.example
mkdir -p mosquitto/config/ vi mosquitto/config/mosquitto.conf
listener 1883 protocol mqtt listener 9001 protocol websockets allow_anonymous true #allow_anonymous false #password_file /mosquitto/config/passwd log_dest file /mosquitto/log/mosquitto.log log_type error log_type warning log_type notice log_type information #log_type debug #log_type subscribe #log_type unsubscribe persistence true persistence_location /mosquitto/data/ max_inflight_messages 20 max_queued_messages 1000 allow_zero_length_clientid true connection_messages true log_timestamp true
touch mosquitto/config/passwd chmod 0770 mosquitto/config/passwd
mkdir -p auth vi auth/users.auth
# OwnTracks 用戶認證檔案 # 格式:username:password # 每行一個用戶 jonathan:mypassword
https://raw.githubusercontent.com/tryweb/docker-compose/refs/heads/main/owntracks/auth/users.auth
docker compose pull docker compose up -d
docker compose logs -ftail -f mosquitto/log/mosquitto.logdocker compose exec mosquitto chown root:root /mosquitto/config/passwd docker compose exec mosquitto mosquitto_passwd /mosquitto/config/passwd recorder
輸入兩次密碼 recorderpass 即可
docker compose exec mosquitto mosquitto_passwd /mosquitto/config/passwd jonathan輸入兩次密碼 mypassword 即可
cd store/rec/jonathan/pixel9 cp 2025-05.rec 2025-05.rec.bak cat ../jonathan/2025-05.rec >> 2025-05.rec
sort -s -k 1 2025-05.rec -o 2025-05.reccd rm -f store/ghash/data.mdb
docker compose restart otrecorder docker compose logs -f otrecorder
cd rm -rf store/rec/jonathan/jonathan/ rm -rf store/last/jonathan/jonathan/ rm -f store/ghash/data.mdb
docker compose restart otrecorderrm mosquitto/data/mosquitto.db docker compose restart mosquitto
http://{your-recorder-ip}:8083/api/0/locations?user={user}&device={device}&from={start_dt}&to={end_dt}&format=[geojson|gpx]
curl -o mytrack_20260205-0223.gpx "http://owntracks-api.my.ichiayi.com/api/0/locations?user=jonathan&device=pixel9&from=2026-02-05T00:00:00Z&to=2026-02-23T23:59:59Z&format=gpx"