#!/bin/bash set -e if [[ $EUID -ne 0 ]]; then echo Run as root! exit 1 fi if [ ! -e ./.env ]; then read -p 'Domain that will serve the mirror: ' domain echo "DOMAIN_NAME=$domain" > ./.env read -p "Use cloudflare tunnels y/N " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]] then USE_TUNNELS=true echo "USE_TUNNELS=true" >> ./.env echo "SSL_FILE=/dev/null" >> ./.env else read -p 'Your email address: ' email echo "EMAIL=$email" >> ./.env fi fi source .env if [ "$USE_TUNNELS" != "true" ]; then if [ ! -e ./data/letsencrypt/etc/renewal/chaotic.conf ]; then docker run -p 80:80 -p 443:443 --rm -v "$PWD/data/letsencrypt/etc:/etc/letsencrypt" -v "$PWD/data/letsencrypt/var:/var/lib/letsencrypt" certbot/certbot:${LETSENCRYPT_TAG:-latest} certonly --standalone --non-interactive --agree-tos --cert-name chaotic -n -m "$EMAIL" -d "$DOMAIN_NAME" fi elif [ ! -e "./data/cloudflared/home/.cloudflared/cert.pem" ]; then docker compose -f docker-compose-tunnels.yml run --rm cloudflared login docker compose -f docker-compose-tunnels.yml run --rm cloudflared --origincert /root/.cloudflared/cert.pem tunnel create $DOMAIN_NAME docker compose -f docker-compose-tunnels.yml run --rm cloudflared --origincert /root/.cloudflared/cert.pem tunnel route dns $DOMAIN_NAME $DOMAIN_NAME fi if [ ! -e ./http-root/chaotic-aur ]; then # Convert legacy if [ -d ./repo ]; then ./stop mkdir ./http-root mv ./repo ./http-root/chaotic-aur else mkdir -p ./http-root/chaotic-aur/.stfolder chown -R 1000:1000 ./http-root/chaotic-aur/ fi fi if [ ! -e ./data/syncthing/config.xml ]; then mkdir -p ./data/syncthing cp ./preset/syncthing-config.xml ./data/syncthing/config.xml chown -R 1000:1000 ./data/syncthing fi gawk -i inplace '/0<\/minDiskFree>/ { if (begin) { print " 1" next } else { print } } /<\/folder>/ { begin = 0 } 1' ./data/syncthing/config.xml if [ "$USE_TUNNELS" != "true" ]; then docker compose -f docker-compose.yml up ${COMPOSEFLAGS-"-d"} else docker compose -f docker-compose-tunnels.yml up ${COMPOSEFLAGS-"-d"} fi