#!/bin/bash generate_pass() { echo $(head -c 32 /dev/urandom | base64 | tr -d "=/+"); } mkdir -p certs if [ ! -f "certs/3m.pem" ]; then openssl genrsa -out certs/3m.pem 2048 openssl rsa -in certs/3m.pem -pubout -out certs/3m.pub fi if [ ! -f "certs/grumble.pem" ]; then openssl genrsa -out certs/grumble.pem 2048 openssl rsa -in certs/grumble.pem -pubout -out certs/grumble.pub fi envp() { if [ -z "${!1}" ]; then read -p "$2: " INPUT echo "$1='$INPUT'" >> .env export "$1=$INPUT" fi } envgen() { if [ -z "${!1}" ]; then echo "$1='$2'" >> .env export "$1='$2'" fi } if [ -f ".env" ]; then source .env fi envgen MYSQL_PASSWORD $(generate_pass) envgen MINIO_ROOT_PASSWORD $(generate_pass) envgen COTURN_PASSWORD $(generate_pass) envgen MINIO_ROOT_USER "threem" envp ERGO__NETWORK__NAME "What's the overall name of the network? No spaces or special characters (e.g. 'CEF')" envp DOMAIN "What is your domain? Omit HTTP/HTTPS (e.g. 'cef.icu')" envgen ERGO__SERVER__NAME $DOMAIN envgen ERGO__DATASTORE__MYSQL__PASSWORD $MYSQL_PASSWORD envgen THREEM_DBURL "mysql+mysqldb://root:$MYSQL_PASSWORD@mariadb/ergo_ext" envp HOST_DOMAIN "What is the domain of your Minio configuration (e.g. 'i.cef.icu')" envgen THREEM_MINIO_EXTERNAL_ADDR $HOST_DOMAIN envp ERGO__SERVER__IP_CLOAKING__NETNAME "What do you want the fake TLD of a cloaked IP to be? (e.g. 'cef')" envp ERGO__SERVER__OVERRIDE_SERVICES_HOSTNAME "What do you want the vhost of IRC services to be (e.g. 'cef.operative')" envp VIDEO_DOMAIN "What is the domain of the video server? It MUST not be behind cloudflare (e.g. video.cef.icu)" envgen MTX_WEBRTCADDITIONALHOSTS "$VIDEO_DOMAIN" envgen VITE_IRC_WEBSOCKET "wss://$DOMAIN/chat" envgen VITE_3M_ADDRESS "https://$DOMAIN/3m" envgen VITE_HOSTING_ADDRESS "https://$HOST_DOMAIN" envgen IMAGOR_SECRET $(generate_pass) envgen IMAGOR_URL "https://$HOST_DOMAIN/embed/" envgen THREEM_MEDIAMTX_API "http://mediamtx:9997" envgen THREEM_MEDIAMTX_RTSP "mediamtx:8554" envgen ERGO__CEF__IMAGOR__URL "https://$HOST_DOMAIN/embed/" envgen ERGO__CEF__IMAGOR__SECRET "$IMAGOR_SECRET" envgen VITE_VOICE_ADDRESS "wss://$DOMAIN/voice" envgen VITE_SITE_NAME_SHORT "$ERGO__NETWORK__NAME" envp VITE_SITE_NAME_LONG "What is the long name of the site?" envp VITE_DEFAULT_THEME "What theme do you want to use by default? Enter a value from 'assets' without the 'theme-' prefix" echo "Have you set up Minio? If not, run ./setup-minio.sh"