Added redis and discourse with plus support
This commit is contained in:
parent
32dc3e2ff0
commit
6594e44b3a
@ -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 <<EOF
|
||||
version: "3.7"
|
||||
services:
|
||||
discourse:
|
||||
image: docker.io/bitnami/discourse:\${IMAGE_VERSION}
|
||||
@ -30,7 +32,7 @@ services:
|
||||
- ./data/discourse/bitnami/discourse:/bitnami/discourse
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.discourse.rule=Host(\`discourse.$DOMAIN\`)"
|
||||
- "traefik.http.routers.discourse.rule=Host(\`discourse.$DOMAIN\`, \`forum.$DOMAIN\`)"
|
||||
- "traefik.http.routers.discourse.entrypoints=websecure"
|
||||
- "traefik.http.routers.discourse.tls.certresolver=letsencrypt"
|
||||
|
||||
@ -56,63 +58,76 @@ networks:
|
||||
EOF
|
||||
|
||||
DISCOURSE_SECRET=$(create_password);
|
||||
REDIS_SECRET=$(awk -F= '/REDIS_PASSWORD/ { print $2 }' /federated/apps/redis/.env)
|
||||
[[ "${PLUS}" = "true" ]] && sed -i "s/letsencrypt/httpresolver/g" /federated/apps/discourse/docker-compose.yml
|
||||
|
||||
cat > /federated/apps/discourse/.env <<EOF
|
||||
IMAGE_VERSION="3.2.5"
|
||||
IMAGE_VERSION="3.3.3"
|
||||
DISCOURSE_HOST=discourse.$DOMAIN
|
||||
DISCOURSE_USERNAME=admin@$DOMAIN
|
||||
DISCOURSE_USERNAME=admin
|
||||
DISCOURSE_PASSWORD=$ADMINPASS
|
||||
DISCOURSE_EMAIL=admin@$DOMAIN
|
||||
DISCOURSE_SITE_NAME="$COMPANY Forum"
|
||||
DISCOURSE_DATABASE_HOST=10.0.0.2
|
||||
DISCOURSE_DATABASE_HOST=postgresql.$DOMAIN
|
||||
DISCOURSE_DATABASE_PORT_NUMBER=5432
|
||||
DISCOURSE_DATABASE_USER=discourse
|
||||
DISCOURSE_DATABASE_NAME=discourse
|
||||
DISCOURSE_DATABASE_PASSWORD=$DISCOURSE_SECRET
|
||||
#DISCOURSE_REDIS_HOST=redis.$DOMAIN
|
||||
#DISCOURSE_REDIS_PORT_NUMBER=6379
|
||||
#DISCOURSE_REDIS_PASSWORD=$REDIS_SECRET
|
||||
DISCOURSE_REDIS_HOST=redis.$DOMAIN
|
||||
DISCOURSE_REDIS_PORT_NUMBER=6379
|
||||
DISCOURSE_REDIS_PASSWORD=$REDIS_SECRET
|
||||
DISCOURSE_SMTP_HOST=mail.$DOMAIN
|
||||
DISCOURSE_SMTP_PORT=587
|
||||
DISCOURSE_SMTP_USER=fcore
|
||||
DISCOURSE_SMTP_PASSWORD=$ADMINPASS
|
||||
DISCOURSE_SMTP_PROTOCOL=tls
|
||||
BITNAMI_DEBUG=true
|
||||
DISCOURSE_HOSTNAME=forum.$DOMAIN
|
||||
DISCOURSE_SMTP_ADDRESS=mail.$DOMAIN
|
||||
DISCOURSE_SMTP_USER_NAME=fcore
|
||||
DISCOURSE_SMTP_ENABLE_START_TLS=true
|
||||
RAILS_ENV=production
|
||||
DISCOURSE_DB_HOST=postgresql.$DOMAIN
|
||||
DISCOURSE_DB_PORT=5432
|
||||
DISCOURSE_DB_USERNAME=discourse
|
||||
DISCOURSE_DB_PASSWORD=$DISCOURSE_SECRET
|
||||
DISCOURSE_DB_NAME=discourse
|
||||
DISCOURSE_REDIS_PORT=6379
|
||||
DISCOURSE_PASSENGER_EXTRA_FLAGS="--max-request-queue-size 1500 --min-instances 25 --max-pool-size 150 --pool-idle-time 800"
|
||||
DISCOURSE_ASSET_RATE_LIMITERS=limiter60
|
||||
DISCOURSE_RATE_LIMITERS=limiter60
|
||||
DISCOURSE_MAX_REQS_PER_IP_EXCEPTIONS=172.99.0.13
|
||||
EOF
|
||||
chmod 600 /federated/apps/discourse/.env
|
||||
|
||||
MYSQL_ROOTPASSWORD="BOwSp7RpdmjulTY5XH1ULKOVwZpyNeDI"
|
||||
# Create database and user in mysql
|
||||
#docker exec pdnsmysql bash -c "mysql -uroot -p$MYSQL_ROOTPASSWORD -h 10.0.0.2 -e 'create database discourse;'" &> /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 <<EOF
|
||||
<html>
|
||||
@ -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"
|
||||
}
|
||||
|
16
lib/redis.sh
16
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 <<EOF
|
||||
version: "3.7"
|
||||
services:
|
||||
redis:
|
||||
image: bitnami/redis:\${IMAGE_VERSION}
|
||||
@ -28,11 +28,6 @@ services:
|
||||
- ./.env
|
||||
volumes:
|
||||
- ./data/bitnami/redis/data:/bitnami/redis/data
|
||||
# labels:
|
||||
# - "traefik.enable=true"
|
||||
# - "traefik.http.routers.redis.rule=Host(\`redis.$DOMAIN\`)"
|
||||
# - "traefik.http.routers.redis.entrypoints=websecure"
|
||||
# - "traefik.http.routers.redis.tls.certresolver=letsencrypt"
|
||||
|
||||
networks:
|
||||
core:
|
||||
@ -47,7 +42,7 @@ REDIS_PASSWORD=$REDIS_SECRET
|
||||
EOF
|
||||
chmod 600 /federated/apps/redis/.env
|
||||
|
||||
sysctl "vm.overcommit_memory=1"
|
||||
sysctl "vm.overcommit_memory=1" &> /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"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user