Add heroku-regen script, rename config/ -> misc/

Introduces a new script for quickly regenerating a Heroku instance
(typically with a new IP) to handle the rare circumstances where an
instance is flagged by Google and prompted for a captcha.

The config/ dir was renamed to misc/ to avoid confusion with the Docker
mounted config volume, and to more closely match its intended purpose
(which is to contain all miscellaneous features/scripts/etc that add
functionality to Whoogle, but are not critical for general use).
main
Ben Busby 2021-03-17 12:27:08 -04:00 committed by Ben Busby
parent fea10828cc
commit b87619a133
4 changed files with 32 additions and 3 deletions

View File

@ -55,8 +55,8 @@ ENV WHOOGLE_ALT_RD=$reddit_alt
WORKDIR /whoogle
COPY --from=builder /install /usr/local
COPY config/tor/torrc /etc/tor/torrc
COPY config/tor/start-tor.sh config/tor/start-tor.sh
COPY misc/tor/torrc /etc/tor/torrc
COPY misc/tor/start-tor.sh misc/tor/start-tor.sh
COPY app/ app/
COPY run .
@ -65,4 +65,4 @@ EXPOSE $EXPOSE_PORT
HEALTHCHECK --interval=5m --timeout=5s \
CMD wget --no-verbose --tries=1 http://localhost:${EXPOSE_PORT}/ || exit 1
CMD config/tor/start-tor.sh & ./run
CMD misc/tor/start-tor.sh & ./run

29
misc/heroku-regen.sh Executable file
View File

@ -0,0 +1,29 @@
#!/bin/sh
# Assumes this is being executed from a session that has already logged
# into Heroku with "heroku login -i" beforehand.
#
# You can set this up to run every night when you aren't using the
# instance with a cronjob. For example:
# 0 3 * * * /home/pi/whoogle-search/config/heroku-regen.sh <app_name>
HEROKU_CLI_SITE="https://devcenter.heroku.com/articles/heroku-cli"
if ! type "heroku" > /dev/null; then
echo "Must have heroku cli installed: $HEROKU_CLI_SITE"
exit 1
fi
cd "$(builtin cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../"
if [ $# -ne 1 ]; then
echo "Must provide the name of the Whoogle instance to regenerate"
exit 1
fi
APP_NAME="$1"
heroku apps:destroy $APP_NAME --confirm $APP_NAME
heroku apps:create $APP_NAME
heroku container:login
heroku container:push web
heroku container:release web