docker-mirror/run

54 lines
1.6 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 [ "$USE_TUNNELS" != "true" ]; then
if [ ! -e ./data/letsencrypt/etc/renewal/chaotic.conf ]; then
docker run -p 80:80 -p 443:443 -it --rm -v "$PWD/data/letsencrypt/etc:/etc/letsencrypt" -v "$PWD/data/letsencrypt/var:/var/lib/letsencrypt" certbot/certbot certonly --standalone --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 tunnel create $DOMAIN_NAME
docker-compose -f docker-compose-tunnels.yml run --rm cloudflared tunnel route dns $DOMAIN_NAME $DOMAIN_NAME
fi
if [ ! -e ./repo ]; then
mkdir -p ./repo/.stfolder
chown -R 1000:1000 ./repo
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
if [ "$USE_TUNNELS" != "true" ]; then
docker-compose -f docker-compose.yml up -d
else
docker-compose -f docker-compose-tunnels.yml up -d
fi