diff --git a/lib/discourse.sh b/lib/discourse.sh index 3d6dbfe..c538759 100644 --- a/lib/discourse.sh +++ b/lib/discourse.sh @@ -3,10 +3,13 @@ # Discourse Service PATH=$HOME/.docker/cli-plugins:/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +. /etc/federated get_appvars config_discourse() { - echo -ne "\n* Configuring discourse container.." + echo -ne "* Configuring discourse container.." + + [[ ! -d "/federated/apps/redis" ]] && failcheck "Redis needs installed first. Run installapp redis" if [ ! -d "/federated/apps/discourse" ]; then mkdir -p /federated/apps/discourse/data/discourse/bitnami/discourse @@ -14,7 +17,6 @@ config_discourse() { fi cat > /federated/apps/discourse/docker-compose.yml < /federated/apps/discourse/.env < /dev/null -#docker exec pdnsmysql bash -c "mysql -uroot -p$MYSQL_ROOTPASSWORD -h 10.0.0.2 -e \"CREATE USER 'discourse'@'%' IDENTIFIED BY '$DISCOURSE_SECRET';\"" &> /dev/null -#docker exec pdnsmysql bash -c "mysql -uroot -p$MYSQL_ROOTPASSWORD -h 10.0.0.2 -e \"grant all privileges on discourse.* to 'discourse'@'%';\"" &> /dev/null -#docker exec pdnsmysql bash -c "mysql -uroot -p$MYSQL_ROOTPASSWORD -h 10.0.0.2 -e 'flush privileges;'" &> /dev/null - +# Tune discourse for each memory size +MEMTOTAL=$(awk '/MemTotal/ {printf( "%d\n", $2 / 1024 )}' /proc/meminfo) +[[ "${MEMTOTAL}" = "3815" ]] && sed -i "s/DISCOURSE_PASSENGER_EXTRA_FLAGS=.*/DISCOURSE_PASSENGER_EXTRA_FLAGS=\"--max-request-queue-size 100 --min-instances 3 --max-pool-size 15 --pool-idle-time 400\"/g" /federated/apps/discourse/.env +[[ "${MEMTOTAL}" = "7747" ]] && sed -i "s/DISCOURSE_PASSENGER_EXTRA_FLAGS=.*/DISCOURSE_PASSENGER_EXTRA_FLAGS=\"--max-request-queue-size 200 --min-instances 5 --max-pool-size 25 --pool-idle-time 500\"/g" /federated/apps/discourse/.env +[[ "${MEMTOTAL}" = "15610" ]] && sed -i "s/DISCOURSE_PASSENGER_EXTRA_FLAGS=.*/DISCOURSE_PASSENGER_EXTRA_FLAGS=\"--max-request-queue-size 400 --min-instances 10 --max-pool-size 50 --pool-idle-time 600\"/g" /federated/apps/discourse/.env +[[ "${MEMTOTAL}" = "31334" ]] && sed -i "s/DISCOURSE_PASSENGER_EXTRA_FLAGS=.*/DISCOURSE_PASSENGER_EXTRA_FLAGS=\"--max-request-queue-size 750 --min-instances 15 --max-pool-size 75 --pool-idle-time 700\"/g" /federated/apps/discourse/.env +[[ "${MEMTOTAL}" = "62786" ]] && sed -i "s/DISCOURSE_PASSENGER_EXTRA_FLAGS=.*/DISCOURSE_PASSENGER_EXTRA_FLAGS=\"--max-request-queue-size 1500 --min-instances 25 --max-pool-size 150 --pool-idle-time 800\"/g" /federated/apps/discourse/.env # Create database and user in postgresql -docker exec postgresql bash -c "PGPASSWORD=LUemlFaADvgD0QCVn9KDaqy9qKpn05Ed psql -U postgres -h 10.0.0.2 -w -c \"CREATE USER discourse WITH PASSWORD '$DISCOURSE_SECRET'\"" -docker exec postgresql bash -c "PGPASSWORD=LUemlFaADvgD0QCVn9KDaqy9qKpn05Ed psql -U postgres -h 10.0.0.2 -w -c \"CREATE DATABASE discourse\"" -docker exec postgresql bash -c "PGPASSWORD=LUemlFaADvgD0QCVn9KDaqy9qKpn05Ed psql -U postgres -h 10.0.0.2 -w -c \"GRANT ALL PRIVILEGES ON DATABASE discourse TO discourse\"" -#docker exec postgresql psql -U postgres -c "CREATE USER discourse WITH PASSWORD '$DISCOURSE_SECRET'" &> /dev/null -#docker exec postgresql psql -U postgres -c "CREATE DATABASE discourse" &> /dev/null -#docker exec postgresql psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE discourse TO discourse" &> /dev/null +docker exec postgresql psql -U postgres -c "CREATE USER discourse WITH PASSWORD '$DISCOURSE_SECRET'" &> /dev/null +docker exec postgresql psql -U postgres -c "CREATE DATABASE discourse" &> /dev/null +docker exec postgresql psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE discourse TO discourse" &> /dev/null echo -ne "done.\n" } start_discourse() { # Start service with command to make sure it's up before proceeding - start_service "discourse" "nc -z 192.168.0.43 8080 &> /dev/null" "7" + start_service "discourse" "nc -z 192.168.0.43 8080 &> /dev/null" "19" - docker exec pdns pdnsutil add-record $DOMAIN discourse A 86400 $EXTERNALIP &> /dev/null - [ $? -ne 0 ] && fail "Couldn't add dns record for discourse" + if [[ "${PLUS}" != "true" ]]; then + docker exec pdns pdnsutil add-record $DOMAIN discourse A 86400 $EXTERNALIP &> /dev/null + docker exec pdns pdnsutil add-record $DOMAIN forum A 86400 $EXTERNALIP &> /dev/null + fi - kill -9 $SPINPID &> /dev/null echo -ne "done.\n" } email_discourse() { echo -ne "* Sending email to customer.." - spin & - SPINPID=$! cat > /federated/apps/mail/data/root/certs/mailfile < @@ -184,13 +199,10 @@ EOF docker exec mail bash -c "mail -r admin@$DOMAIN -a \"Content-type: text/html\" -s \"Application installed on $DOMAIN\" $EMAIL < /root/certs/mailfile" rm /federated/apps/mail/data/root/certs/mailfile - kill -9 $SPINPID &> /dev/null echo -ne "done.\n" } uninstall_discourse() { echo -ne "* Uninstalling discourse container.." - spin & - SPINPID=$! # First stop the service cd /federated/apps/discourse && docker compose -f docker-compose.yml -p discourse down &> /dev/null @@ -202,6 +214,10 @@ uninstall_discourse() { # Delete the app directory rm -rf /federated/apps/discourse - kill -9 $SPINPID &> /dev/null + if [[ "${PLUS}" != "true" ]]; then + docker exec pdns pdnsutil delete-rrset $DOMAIN discourse A &> /dev/null + docker exec pdns pdnsutil delete-rrset $DOMAIN forum A &> /dev/null + fi + echo -ne "done.\n" } diff --git a/lib/redis.sh b/lib/redis.sh index 208c8b9..ab2cb79 100644 --- a/lib/redis.sh +++ b/lib/redis.sh @@ -3,10 +3,11 @@ # Redis Service PATH=$HOME/.docker/cli-plugins:/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +. /etc/federated get_appvars config_redis() { - echo -ne "\n* Configuring redis container.." + echo -ne "* Configuring redis container.." if [ ! -d "/federated/apps/redis" ]; then mkdir -p /federated/apps/redis/data/bitnami/redis/data @@ -14,7 +15,6 @@ config_redis() { fi cat > /federated/apps/redis/docker-compose.yml < /dev/null echo -ne "done.\n" } @@ -55,19 +50,14 @@ start_redis() { # Start service with command to make sure it's up before proceeding start_service "redis" "nc -z 192.168.0.45 6379 &> /dev/null" "7" - kill -9 $SPINPID &> /dev/null echo -ne "done.\n" } uninstall_redis() { - spin & - SPINPID=$! - # First stop the service cd /federated/apps/redis && docker compose -f docker-compose.yml -p redis down &> /dev/null # Delete the app directory rm -rf /federated/apps/redis - kill -9 $SPINPID &> /dev/null echo -ne "done.\n" }