From 99323f8665eb966a99752979141358c192b2d6d1 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 1 Feb 2021 08:41:30 +0300 Subject: [PATCH] prefix config.php-related environment variables with TTRSS_ --- .env-dist | 6 ++-- app/Dockerfile | 60 ++++++++++++++++++------------------ app/backup.sh | 6 ++-- app/config.docker.php | 62 +++++++++++++++++++------------------- app/prepare-config.php | 2 +- app/prepare-environment.sh | 3 +- app/startup.sh | 8 ++--- app/updater.sh | 4 +-- docker-compose.yml | 18 +++++------ 9 files changed, 85 insertions(+), 84 deletions(-) diff --git a/.env-dist b/.env-dist index c06a833..476efc9 100644 --- a/.env-dist +++ b/.env-dist @@ -9,12 +9,12 @@ POSTGRES_PASSWORD=password # You will likely need to set this to the correct value, see README.md # for more information. -SELF_URL_PATH=http://localhost:8280/tt-rss +TTRSS_SELF_URL_PATH=http://localhost:8280/tt-rss # You can customize other config.php defines by setting overrides here. # See app/Dockerfile for complete list. Examples: -# PLUGINS=auth_remote -# SINGLE_USER_MODE=true +# TTRSS_PLUGINS=auth_remote +# TTRSS_SINGLE_USER_MODE=true # bind exposed port to 127.0.0.1 by default in case reverse proxy is used. # if you plan to run the container standalone and need origin port exposed diff --git a/app/Dockerfile b/app/Dockerfile index 692f55e..2b88b20 100644 --- a/app/Dockerfile +++ b/app/Dockerfile @@ -25,37 +25,37 @@ RUN mkdir -p /opt/tt-rss/config.d ENV OWNER_UID=1000 ENV OWNER_GID=1000 -ENV DB_TYPE="pgsql" -ENV DB_HOST="db" -ENV DB_USER="%DB_USER" -ENV DB_NAME="%DB_NAME" -ENV DB_PASS="%DB_PASS" -ENV DB_PORT="5432" +ENV TTRSS_DB_TYPE="pgsql" +ENV TTRSS_DB_HOST="db" +ENV TTRSS_DB_USER="%DB_USER" +ENV TTRSS_DB_NAME="%DB_NAME" +ENV TTRSS_DB_PASS="%DB_PASS" +ENV TTRSS_DB_PORT="5432" # config.php defaults -ENV MYSQL_CHARSET="UTF8" -ENV SELF_URL_PATH="%SELF_URL_PATH" -ENV SINGLE_USER_MODE="" -ENV SIMPLE_UPDATE_MODE="" -ENV PHP_EXECUTABLE="/usr/bin/php" -ENV LOCK_DIRECTORY="lock" -ENV CACHE_DIR="cache" -ENV ICONS_DIR="feed-icons" -ENV ICONS_URL="feed-icons" -ENV AUTH_AUTO_CREATE="true" -ENV AUTH_AUTO_LOGIN="true" -ENV FORCE_ARTICLE_PURGE="0" -ENV ENABLE_REGISTRATION="" -ENV REG_NOTIFY_ADDRESS="user@your.domain.dom" -ENV REG_MAX_USERS="10" -ENV SESSION_COOKIE_LIFETIME="86400" -ENV SMTP_FROM_NAME="Tiny Tiny RSS" -ENV SMTP_FROM_ADDRESS="noreply@your.domain.dom" -ENV DIGEST_SUBJECT="[tt-rss] New headlines for last 24 hours" -ENV CHECK_FOR_UPDATES="true" -ENV ENABLE_GZIP_OUTPUT="" -ENV PLUGINS="auth_internal, note" -ENV LOG_DESTINATION="sql" -ENV CONFIG_VERSION="26" +ENV TTRSS_MYSQL_CHARSET="UTF8" +ENV TTRSS_SELF_URL_PATH="%SELF_URL_PATH" +ENV TTRSS_SINGLE_USER_MODE="" +ENV TTRSS_SIMPLE_UPDATE_MODE="" +ENV TTRSS_PHP_EXECUTABLE="/usr/bin/php" +ENV TTRSS_LOCK_DIRECTORY="lock" +ENV TTRSS_CACHE_DIR="cache" +ENV TTRSS_ICONS_DIR="feed-icons" +ENV TTRSS_ICONS_URL="feed-icons" +ENV TTRSS_AUTH_AUTO_CREATE="true" +ENV TTRSS_AUTH_AUTO_LOGIN="true" +ENV TTRSS_FORCE_ARTICLE_PURGE="0" +ENV TTRSS_ENABLE_REGISTRATION="" +ENV TTRSS_REG_NOTIFY_ADDRESS="user@your.domain.dom" +ENV TTRSS_REG_MAX_USERS="10" +ENV TTRSS_SESSION_COOKIE_LIFETIME="86400" +ENV TTRSS_SMTP_FROM_NAME="Tiny Tiny RSS" +ENV TTRSS_SMTP_FROM_ADDRESS="noreply@your.domain.dom" +ENV TTRSS_DIGEST_SUBJECT="[tt-rss] New headlines for last 24 hours" +ENV TTRSS_CHECK_FOR_UPDATES="true" +ENV TTRSS_ENABLE_GZIP_OUTPUT="" +ENV TTRSS_PLUGINS="auth_internal, note" +ENV TTRSS_LOG_DESTINATION="sql" +ENV TTRSS_CONFIG_VERSION="26" CMD /startup.sh diff --git a/app/backup.sh b/app/backup.sh index f13e720..a28c395 100755 --- a/app/backup.sh +++ b/app/backup.sh @@ -4,14 +4,14 @@ DST_DIR=/backups KEEP_DAYS=28 APP_ROOT=/var/www/html/tt-rss -if pg_isready -h $DB_HOST -U $DB_USER; then +if pg_isready -h $TTRSS_DB_HOST -U $TTRSS_DB_USER; then DST_FILE=ttrss-backup-$(date +%Y%m%d).sql.gz echo backing up tt-rss database to $DST_DIR/$DST_FILE... - export PGPASSWORD=$DB_PASS + export PGPASSWORD=$TTRSS_DB_PASS - pg_dump --clean -h $DB_HOST -U $DB_USER $DB_NAME | gzip > $DST_DIR/$DST_FILE + pg_dump --clean -h $TTRSS_DB_HOST -U $TTRSS_DB_USER $TTRSS_DB_NAME | gzip > $DST_DIR/$DST_FILE DST_FILE=ttrss-backup-$(date +%Y%m%d).tar.gz diff --git a/app/config.docker.php b/app/config.docker.php index 58a389f..1729b84 100644 --- a/app/config.docker.php +++ b/app/config.docker.php @@ -3,14 +3,14 @@ // *** Database configuration (important!) *** // ******************************************* - define('DB_TYPE', getenv('DB_TYPE')); // pgsql or mysql - define('DB_HOST', getenv('DB_HOST')); - define('DB_USER', getenv('DB_USER')); - define('DB_NAME', getenv('DB_NAME')); - define('DB_PASS', getenv('DB_PASS')); - define('DB_PORT', getenv('DB_PORT')); // usually 5432 for PostgreSQL, 3306 for MySQL - - define('MYSQL_CHARSET', getenv('MYSQL_CHARSET')); + define('DB_TYPE', getenv('TTRSS_DB_TYPE')); // pgsql or mysql + define('DB_HOST', getenv('TTRSS_DB_HOST')); + define('DB_USER', getenv('TTRSS_DB_USER')); + define('DB_NAME', getenv('TTRSS_DB_NAME')); + define('DB_PASS', getenv('TTRSS_DB_PASS')); + define('DB_PORT', getenv('TTRSS_DB_PORT')); // usually 5432 for PostgreSQL, 3306 for MySQL + + define('MYSQL_CHARSET', getenv('TTRSS_MYSQL_CHARSET')); // Connection charset for MySQL. If you have a legacy database and/or experience // garbage unicode characters with this option, try setting it to a blank string. @@ -18,7 +18,7 @@ // *** Basic settings (important!) *** // *********************************** - define('SELF_URL_PATH', getenv('SELF_URL_PATH')); + define('SELF_URL_PATH', getenv('TTRSS_SELF_URL_PATH')); // This should be set to a fully qualified URL used to access // your tt-rss instance over the net, such as: https://example.org/tt-rss/ // The value should be a constant string literal. Please don't use @@ -26,12 +26,12 @@ // issues on your install and cause hard to debug problems. // If your tt-rss instance is behind a reverse proxy, use the external URL. - define('SINGLE_USER_MODE', getenv('SINGLE_USER_MODE')); + define('SINGLE_USER_MODE', getenv('TTRSS_SINGLE_USER_MODE')); // Operate in single user mode, disables all functionality related to // multiple users and authentication. Enabling this assumes you have // your tt-rss directory protected by other means (e.g. http auth). - define('SIMPLE_UPDATE_MODE', getenv('SIMPLE_UPDATE_MODE')); + define('SIMPLE_UPDATE_MODE', getenv('TTRSS_SIMPLE_UPDATE_MODE')); // Enables fallback update mode where tt-rss tries to update feeds in // background while tt-rss is open in your browser. // If you don't have a lot of feeds and don't want to or can't run @@ -44,22 +44,22 @@ // *** Files and directories *** // ***************************** - define('PHP_EXECUTABLE', getenv('PHP_EXECUTABLE')); + define('PHP_EXECUTABLE', getenv('TTRSS_PHP_EXECUTABLE')); // Path to PHP *COMMAND LINE* executable, used for various command-line tt-rss // programs and update daemon. Do not try to use CGI binary here, it won't work. // If you see HTTP headers being displayed while running tt-rss scripts, // then most probably you are using the CGI binary. If you are unsure what to // put in here, ask your hosting provider. - define('LOCK_DIRECTORY', getenv('LOCK_DIRECTORY')); + define('LOCK_DIRECTORY', getenv('TTRSS_LOCK_DIRECTORY')); // Directory for lockfiles, must be writable to the user you run // daemon process or cronjobs under. - define('CACHE_DIR', getenv('CACHE_DIR')); + define('CACHE_DIR', getenv('TTRSS_CACHE_DIR')); // Local cache directory for RSS feed content. - define('ICONS_DIR', getenv('ICONS_DIR')); - define('ICONS_URL', getenv('ICONS_URL')); + define('ICONS_DIR', getenv('TTRSS_ICONS_DIR')); + define('ICONS_URL', getenv('TTRSS_ICONS_URL')); // Local and URL path to the directory, where feed favicons are stored. // Unless you really know what you're doing, please keep those relative // to tt-rss main directory. @@ -70,11 +70,11 @@ // Please see PLUGINS below to configure various authentication modules. - define('AUTH_AUTO_CREATE', getenv('AUTH_AUTO_CREATE')); + define('AUTH_AUTO_CREATE', getenv('TTRSS_AUTH_AUTO_CREATE')); // Allow authentication modules to auto-create users in tt-rss internal // database when authenticated successfully. - define('AUTH_AUTO_LOGIN', getenv('AUTH_AUTO_LOGIN')); + define('AUTH_AUTO_LOGIN', getenv('TTRSS_AUTH_AUTO_LOGIN')); // Automatically login user on remote or other kind of externally supplied // authentication, otherwise redirect to login form as normal. // If set to true, users won't be able to set application language @@ -84,7 +84,7 @@ // *** Feed settings *** // ********************* - define('FORCE_ARTICLE_PURGE', getenv('FORCE_ARTICLE_PURGE')); + define('FORCE_ARTICLE_PURGE', getenv('TTRSS_FORCE_ARTICLE_PURGE')); // When this option is not 0, users ability to control feed purging // intervals is disabled and all articles (which are not starred) // older than this amount of days are purged. @@ -93,16 +93,16 @@ // *** Self-registrations by users *** // *********************************** - define('ENABLE_REGISTRATION', getenv('ENABLE_REGISTRATION')); + define('ENABLE_REGISTRATION', getenv('TTRSS_ENABLE_REGISTRATION')); // Allow users to register themselves. Please be aware that allowing // random people to access your tt-rss installation is a security risk // and potentially might lead to data loss or server exploit. Disabled // by default. - define('REG_NOTIFY_ADDRESS', getenv('REG_NOTIFY_ADDRESS')); + define('REG_NOTIFY_ADDRESS', getenv('TTRSS_REG_NOTIFY_ADDRESS')); // Email address to send new user notifications to. - define('REG_MAX_USERS', getenv('REG_MAX_USERS')); + define('REG_MAX_USERS', getenv('TTRSS_REG_MAX_USERS')); // Maximum amount of users which will be allowed to register on this // system. 0 - no limit. @@ -110,7 +110,7 @@ // *** Cookies and login sessions *** // ********************************** - define('SESSION_COOKIE_LIFETIME', getenv('SESSION_COOKIE_LIFETIME')); + define('SESSION_COOKIE_LIFETIME', getenv('TTRSS_SESSION_COOKIE_LIFETIME')); // Default lifetime of a session (e.g. login) cookie. In seconds, // 0 means cookie will be deleted when browser closes. @@ -124,29 +124,29 @@ // If you need SMTP support, take a look here: // https://git.tt-rss.org/fox/ttrss-mailer-smtp - define('SMTP_FROM_NAME', getenv('SMTP_FROM_NAME')); - define('SMTP_FROM_ADDRESS', getenv('SMTP_FROM_ADDRESS')); + define('SMTP_FROM_NAME', getenv('TTRSS_SMTP_FROM_NAME')); + define('SMTP_FROM_ADDRESS', getenv('TTRSS_SMTP_FROM_ADDRESS')); // Name, address and subject for sending outgoing mail. This applies // to password reset notifications, digest emails and any other mail. - define('DIGEST_SUBJECT', getenv('DIGEST_SUBJECT')); + define('DIGEST_SUBJECT', getenv('TTRSS_DIGEST_SUBJECT')); // Subject line for email digests // *************************************** // *** Other settings (less important) *** // *************************************** - define('CHECK_FOR_UPDATES', getenv('CHECK_FOR_UPDATES')); + define('CHECK_FOR_UPDATES', getenv('TTRSS_CHECK_FOR_UPDATES')); // Check for updates automatically if running Git version - define('ENABLE_GZIP_OUTPUT', getenv('ENABLE_GZIP_OUTPUT')); + define('ENABLE_GZIP_OUTPUT', getenv('TTRSS_ENABLE_GZIP_OUTPUT')); // Selectively gzip output to improve wire performance. This requires // PHP Zlib extension on the server. // Enabling this can break tt-rss in several httpd/php configurations, // if you experience weird errors and tt-rss failing to start, blank pages // after login, or content encoding errors, disable it. - define('PLUGINS', getenv('PLUGINS')); + define('PLUGINS', getenv('TTRSS_PLUGINS')); // Comma-separated list of plugins to load automatically for all users. // System plugins have to be specified here. Please enable at least one // authentication plugin here (auth_*). @@ -155,7 +155,7 @@ // Disabling auth_internal in this list would automatically disable // reset password link on the login form. - define('LOG_DESTINATION', getenv('LOG_DESTINATION')); + define('LOG_DESTINATION', getenv('TTRSS_LOG_DESTINATION')); // Error log destination to use. Possible values: sql (uses internal logging // you can read in Preferences -> System), syslog - logs to system log. // Setting this to blank uses PHP logging (usually to http server @@ -163,7 +163,7 @@ // Note that feed updating daemons don't use this logging facility // for normal output. - define('CONFIG_VERSION', getenv('CONFIG_VERSION')); + define('CONFIG_VERSION', getenv('TTRSS_CONFIG_VERSION')); // Expected config version. Please update this option in config.php // if necessary (after migrating all new options from this file). diff --git a/app/prepare-config.php b/app/prepare-config.php index 9641daf..32ee765 100755 --- a/app/prepare-config.php +++ b/app/prepare-config.php @@ -1,6 +1,6 @@ #!/bin/sh -sed -e "s/define('\([A-Z_]\+\)', [^)]\+/define('\1', getenv('\1')/" \ +sed -e "s/define('\([A-Z_]\+\)', [^)]\+/define('\1', getenv('TTRSS_\1')/" \ < config.php-dist > config.docker.php cat config.php-config.d >> config.docker.php diff --git a/app/prepare-environment.sh b/app/prepare-environment.sh index 9d376c3..dcbb302 100755 --- a/app/prepare-environment.sh +++ b/app/prepare-environment.sh @@ -1,3 +1,4 @@ #!/bin/sh -grep define config.php-dist | sed -e "s/[ \t]*define('\([A-Z_]\+\)', ['\"]\?\([^'\")]\+\).*/ENV \1=\"\2\"/" +grep define config.php-dist | sed -e "s/[ \t]*define('\([A-Z_]\+\)', ['\"]\?\([^'\")]\+\).*/ENV TTRSS_\1=\"\2\"/" \ + -e 's/"false"/""/' diff --git a/app/startup.sh b/app/startup.sh index a02d819..1db70be 100755 --- a/app/startup.sh +++ b/app/startup.sh @@ -1,7 +1,7 @@ #!/bin/sh -e -while ! pg_isready -h $DB_HOST -U $DB_USER; do - echo waiting until $DB_HOST is ready... +while ! pg_isready -h $TTRSS_DB_HOST -U $TTRSS_DB_USER; do + echo waiting until $TTRSS_DB_HOST is ready... sleep 3 done @@ -19,11 +19,11 @@ SRC_REPO=https://git.tt-rss.org/fox/tt-rss.git [ -e $DST_DIR ] && rm -f $DST_DIR/.app_is_ready -export PGPASSWORD=$DB_PASS +export PGPASSWORD=$TTRSS_DB_PASS [ ! -e /var/www/html/index.php ] && cp /index.php /var/www/html -PSQL="psql -q -h $DB_HOST -U $DB_USER $DB_NAME" +PSQL="psql -q -h $TTRSS_DB_HOST -U $TTRSS_DB_USER $TTRSS_DB_NAME" if [ ! -d $DST_DIR/.git ]; then mkdir -p $DST_DIR diff --git a/app/updater.sh b/app/updater.sh index 7123a3c..af994cd 100755 --- a/app/updater.sh +++ b/app/updater.sh @@ -12,8 +12,8 @@ if ! id app; then adduser -D -h /var/www/html -G app -u $OWNER_UID app fi -while ! pg_isready -h $DB_HOST -U $DB_USER; do - echo waiting until $DB_HOST is ready... +while ! pg_isready -h $TTRSS_DB_HOST -U $TTRSS_DB_USER; do + echo waiting until $TTRSS_DB_HOST is ready... sleep 3 done diff --git a/docker-compose.yml b/docker-compose.yml index 7515c87..2fa63cf 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,9 +17,9 @@ services: env_file: - .env environment: - - DB_NAME=${POSTGRES_USER} - - DB_USER=${POSTGRES_USER} - - DB_PASS=${POSTGRES_PASSWORD} + - TTRSS_DB_NAME=${POSTGRES_USER} + - TTRSS_DB_USER=${POSTGRES_USER} + - TTRSS_DB_PASS=${POSTGRES_PASSWORD} volumes: - app:/var/www/html - ./config.d:/opt/tt-rss/config.d:ro @@ -32,9 +32,9 @@ services: ./app restart: unless-stopped environment: - - DB_NAME=${POSTGRES_USER} - - DB_USER=${POSTGRES_USER} - - DB_PASS=${POSTGRES_PASSWORD} + - TTRSS_DB_NAME=${POSTGRES_USER} + - TTRSS_DB_USER=${POSTGRES_USER} + - TTRSS_DB_PASS=${POSTGRES_PASSWORD} volumes: - backups:/backups - app:/var/www/html @@ -50,9 +50,9 @@ services: env_file: - .env environment: - - DB_NAME=${POSTGRES_USER} - - DB_USER=${POSTGRES_USER} - - DB_PASS=${POSTGRES_PASSWORD} + - TTRSS_DB_NAME=${POSTGRES_USER} + - TTRSS_DB_USER=${POSTGRES_USER} + - TTRSS_DB_PASS=${POSTGRES_PASSWORD} volumes: - app:/var/www/html - ./config.d:/opt/tt-rss/config.d:ro