59 lines
2.0 KiB
YAML
59 lines
2.0 KiB
YAML
version: "3.7"
|
|
services:
|
|
nginx:
|
|
image: nginx
|
|
container_name: nginx
|
|
hostname: ${DOMAIN_NAME:?err}
|
|
volumes:
|
|
- './http-root:/var/lib/nginx/html/http-root:ro'
|
|
- './preset/nginx.conf:/etc/nginx/nginx.conf:ro'
|
|
- './preset/conf.d-tunnels:/etc/nginx/conf.d:ro'
|
|
restart: ${RESTART:-unless-stopped}
|
|
|
|
syncthing:
|
|
image: syncthing/syncthing:latest
|
|
container_name: syncthing
|
|
hostname: ${DOMAIN_NAME:?err}
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
volumes:
|
|
- './data/syncthing:/var/syncthing/config'
|
|
- './http-root/chaotic-aur:/repo'
|
|
ports:
|
|
- '127.0.0.1:8384:8384'
|
|
- 22000:22000/tcp
|
|
- 22000:22000/udp
|
|
- 21027:21027/udp
|
|
restart: ${RESTART:-unless-stopped}
|
|
|
|
chaotic-management:
|
|
container_name: chaotic-management
|
|
restart: ${RESTART:-unless-stopped}
|
|
image: nginx
|
|
volumes:
|
|
- './data:/data'
|
|
entrypoint:
|
|
- /bin/sh
|
|
- -c
|
|
- |
|
|
trap exit TERM INT;
|
|
sleep 10;
|
|
while :; do
|
|
apikey="$$(grep -oPm 1 '(?<=\<apikey\>).*(?=\</apikey\>)' /data/syncthing/config.xml)"
|
|
curl -s --fail -X POST -H "X-API-Key: $$apikey" http://syncthing:8384/rest/db/revert?folder=jhcrt-m2dra || echo Failed to revert folder;
|
|
sed -i -r '/<device id="ZDHVMSP-EW4TMWX-DBH2W4P-HV5A6OY-BBEFABO-QTENANJ-RJ6GKNX-6KCG7QY"/! s|(^ *<device .*id="[^"]+".*skipIntroductionRemovals="false".*introducedBy=")(">)|\1ZDHVMSP-EW4TMWX-DBH2W4P-HV5A6OY-BBEFABO-QTENANJ-RJ6GKNX-6KCG7QY\2|' /data/syncthing/config.xml
|
|
sleep 1h &
|
|
wait $${!};
|
|
done;
|
|
|
|
cloudflared:
|
|
image: erisamoe/cloudflared:latest
|
|
container_name: cloudflared
|
|
command: --origincert /root/.cloudflared/cert.pem tunnel run --url http://nginx ${DOMAIN_NAME:?err}
|
|
volumes:
|
|
- './data/cloudflared/etc:/etc/cloudflared'
|
|
- './data/cloudflared/home:/root'
|
|
- './preset/passwd:/etc/passwd'
|
|
restart: ${RESTART:-unless-stopped}
|