docker-mirror/run

69 lines
2.4 KiB
Bash
Executable File

#!/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 [[ ! -v SYNCTHING_API_KEY ]]; then
SYNCTHING_API_KEY="$(tr -dc A-Za-z0-9 </dev/urandom | head -c 32)"
echo "SYNCTHING_API_KEY=$SYNCTHING_API_KEY" >> ./.env
fi
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
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
sed -i -r "s|(<apikey>).*(</apikey>)|\1$SYNCTHING_API_KEY\2|" ./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