initial for legacy-php5

legacy-php5
Andrew Dolgov 4 years ago
parent 2e13396bd7
commit 87b9df7bf7

@ -1,12 +1,12 @@
FROM alpine:3.13 FROM alpine:3.5
EXPOSE 9000/tcp EXPOSE 9000/tcp
RUN apk add --no-cache dcron php8 php8-fpm \ RUN apk add --no-cache dcron php5 php5-fpm \
php8-pdo php8-gd php8-pgsql php8-pdo_pgsql php8-mbstring \ php5-pdo php5-gd php5-pgsql php5-pdo_pgsql \
php8-intl php8-xml php8-curl php8-session \ php5-intl php5-xml php5-curl \
php8-dom php8-fileinfo php8-json php8-iconv \ php5-dom php5-json php5-iconv \
php8-pcntl php8-posix php8-zip php8-openssl \ php5-pcntl php5-posix php5-zip php5-openssl \
git postgresql-client sudo git postgresql-client sudo php5-ctype
ENV SCRIPT_ROOT=/opt/tt-rss ENV SCRIPT_ROOT=/opt/tt-rss
@ -19,13 +19,21 @@ ADD dcron.sh ${SCRIPT_ROOT}
ADD backup.sh /etc/periodic/weekly/backup ADD backup.sh /etc/periodic/weekly/backup
ADD config.docker.php ${SCRIPT_ROOT} ADD config.docker.php ${SCRIPT_ROOT}
RUN sed -i.bak 's/^listen = 127.0.0.1:9000/listen = 9000/' /etc/php8/php-fpm.d/www.conf RUN sed -i.bak 's/^listen = 127.0.0.1:9000/listen = 9000/' /etc/php5/php-fpm.conf
RUN sed -i.bak 's/\(memory_limit =\) 128M/\1 256M/' /etc/php8/php.ini #RUN sed -i.bak 's/\(memory_limit =\) 128M/\1 256M/' /etc/php5/php.ini
RUN sed -i.bak 's/;clear_env = .*/clear_env = no/i' /etc/php8/php-fpm.d/www.conf RUN sed -i.bak 's/;clear_env = .*/clear_env = no/i' /etc/php5/php-fpm.conf
ENV OWNER_UID=1000 ENV OWNER_UID=1000
ENV OWNER_GID=1000 ENV OWNER_GID=1000
#commit b25df544b4d77a3deb43c9968797e5703e1e84f2 (HEAD)
#Author: Andrew Dolgov <fox@bah.org.ru>
#Date: Mon Sep 13 16:10:17 2010 +0400
#
# release 1.4.3.1
ENV TARGET_COMMIT="b25df544b4d77a3deb43c9968797e5703e1e84f2"
ENV TTRSS_DB_TYPE="pgsql" ENV TTRSS_DB_TYPE="pgsql"
ENV TTRSS_DB_HOST="db" ENV TTRSS_DB_HOST="db"
ENV TTRSS_DB_USER="%DB_USER" ENV TTRSS_DB_USER="%DB_USER"
@ -34,29 +42,67 @@ ENV TTRSS_DB_PASS="%DB_PASS"
ENV TTRSS_DB_PORT="5432" ENV TTRSS_DB_PORT="5432"
# config.php defaults # config.php defaults
ENV TTRSS_MYSQL_CHARSET="UTF8" #ENV TTRSS_MYSQL_CHARSET="UTF8"
ENV TTRSS_SELF_URL_PATH="%SELF_URL_PATH" #ENV TTRSS_SELF_URL_PATH="%SELF_URL_PATH"
ENV TTRSS_SINGLE_USER_MODE="" #ENV TTRSS_SINGLE_USER_MODE=""
ENV TTRSS_SIMPLE_UPDATE_MODE="" #ENV TTRSS_SIMPLE_UPDATE_MODE=""
ENV TTRSS_PHP_EXECUTABLE="/usr/bin/php8" #ENV TTRSS_PHP_EXECUTABLE="/usr/bin/php5"
ENV TTRSS_LOCK_DIRECTORY="lock" #ENV TTRSS_LOCK_DIRECTORY="lock"
ENV TTRSS_CACHE_DIR="cache" #ENV TTRSS_CACHE_DIR="cache"
ENV TTRSS_ICONS_DIR="feed-icons" #ENV TTRSS_ICONS_DIR="feed-icons"
ENV TTRSS_ICONS_URL="feed-icons" #ENV TTRSS_ICONS_URL="feed-icons"
ENV TTRSS_AUTH_AUTO_CREATE="true" #ENV TTRSS_AUTH_AUTO_CREATE="true"
ENV TTRSS_AUTH_AUTO_LOGIN="true" #ENV TTRSS_AUTH_AUTO_LOGIN="true"
ENV TTRSS_FORCE_ARTICLE_PURGE="0" #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, nginx_xaccel"
#ENV TTRSS_LOG_DESTINATION="sql"
#ENV TTRSS_CONFIG_VERSION="26"
ENV TTRSS_MAGPIE_FETCH_TIME_OUT="60"
ENV TTRSS_MAGPIE_CACHE_DIR="/var/tmp/magpie-ttrss-cache"
ENV TTRSS_MAGPIE_CACHE_AGE="60*30"
ENV TTRSS_ICONS_DIR="icons"
ENV TTRSS_ICONS_URL="icons"
ENV TTRSS_SINGLE_USER_MODE="true"
ENV TTRSS_TMP_DIRECTORY="/tmp"
ENV TTRSS_FEEDS_FRAME_REFRESH="600"
ENV TTRSS_ENABLE_UPDATE_DAEMON="1"
ENV TTRSS_DAEMON_SLEEP_INTERVAL="120"
ENV TTRSS_DATABASE_BACKED_SESSIONS=""
ENV TTRSS_SESSION_CHECK_ADDRESS="true"
ENV TTRSS_SESSION_COOKIE_LIFETIME="0"
ENV TTRSS_SESSION_EXPIRE_TIME="86400"
ENV TTRSS_DAEMON_UPDATE_LOGIN_LIMIT="0"
ENV TTRSS_CHECK_FOR_NEW_VERSION="true"
ENV TTRSS_USE_CURL_FOR_ICONS=""
ENV TTRSS_DIGEST_ENABLE="true"
ENV TTRSS_DIGEST_EMAIL_LIMIT="10"
ENV TTRSS_DAEMON_SENDS_DIGESTS="true"
ENV TTRSS_ENABLE_TRANSLATIONS="true"
ENV TTRSS_DEFAULT_UPDATE_METHOD="0"
ENV TTRSS_SIMPLEPIE_CACHE_IMAGES=""
ENV TTRSS_COUNTERS_MAX_AGE="365"
ENV TTRSS_DIGEST_FROM_NAME="Tiny Tiny RSS"
ENV TTRSS_DIGEST_FROM_ADDRESS="noreply@your.domain.dom"
ENV TTRSS_DIGEST_SUBJECT="[tt-rss] New headlines for last 24 hours"
ENV TTRSS_DAEMON_FEED_LIMIT="100"
ENV TTRSS_ALLOW_REMOTE_USER_AUTH=""
ENV TTRSS_LOCK_DIRECTORY="."
ENV TTRSS_ENABLE_GZIP_OUTPUT=""
ENV TTRSS_PHP_EXECUTABLE="/usr/bin/php"
ENV TTRSS_ENABLE_REGISTRATION="" ENV TTRSS_ENABLE_REGISTRATION=""
ENV TTRSS_REG_NOTIFY_ADDRESS="user@your.domain.dom" ENV TTRSS_REG_NOTIFY_ADDRESS="user@your.domain.dom"
ENV TTRSS_REG_MAX_USERS="10" ENV TTRSS_REG_MAX_USERS="10"
ENV TTRSS_SESSION_COOKIE_LIFETIME="86400" ENV TTRSS_FORCE_ARTICLE_PURGE="0"
ENV TTRSS_SMTP_FROM_NAME="Tiny Tiny RSS" ENV TTRSS_CONFIG_VERSION="19"
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, nginx_xaccel"
ENV TTRSS_LOG_DESTINATION="sql"
ENV TTRSS_CONFIG_VERSION="26"
CMD ${SCRIPT_ROOT}/startup.sh CMD ${SCRIPT_ROOT}/startup.sh

@ -1,62 +1,26 @@
<?php <?php
// ******************************************* // Your RDBMS must be configured to accept connections
// *** Database configuration (important!) *** // via TCP/IP and authentified by password.
// *******************************************
define('DB_TYPE', getenv('TTRSS_DB_TYPE')); // pgsql or mysql define('DB_TYPE', getenv('TTRSS_DB_TYPE')); // or mysql
define('DB_HOST', getenv('TTRSS_DB_HOST')); define('DB_HOST', getenv('TTRSS_DB_HOST'));
define('DB_USER', getenv('TTRSS_DB_USER')); define('DB_USER', getenv('TTRSS_DB_USER'));
define('DB_NAME', getenv('TTRSS_DB_NAME')); define('DB_NAME', getenv('TTRSS_DB_NAME'));
define('DB_PASS', getenv('TTRSS_DB_PASS')); define('DB_PASS', getenv('TTRSS_DB_PASS'));
define('DB_PORT', getenv('TTRSS_DB_PORT')); // usually 5432 for PostgreSQL, 3306 for MySQL //define('DB_PORT', getenv('TTRSS_DB_PORT')); // when neeeded, PG-only
define('MYSQL_CHARSET', getenv('TTRSS_MYSQL_CHARSET')); define('MAGPIE_FETCH_TIME_OUT', getenv('TTRSS_MAGPIE_FETCH_TIME_OUT'));
// Connection charset for MySQL. If you have a legacy database and/or experience // Magpie's default timeout is 5 seconds. Some RSS feeds,
// garbage unicode characters with this option, try setting it to a blank string. // such as from large Trac installs, can take significantly
// longer than 5 seconds to generate. To prevent failed
// *********************************** // updates, increase this.
// *** Basic settings (important!) ***
// ***********************************
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
// PHP server variables here - you might introduce security
// 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('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('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
// background processes while not running tt-rss, this method is generally
// viable to keep your feeds up to date.
// Still, there are more robust (and recommended) updating methods
// available, you can read about them here: https://tt-rss.org/wiki/UpdatingFeeds
// *****************************
// *** Files and directories ***
// *****************************
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('TTRSS_LOCK_DIRECTORY')); define('MAGPIE_CACHE_DIR', getenv('TTRSS_MAGPIE_CACHE_DIR'));
// Directory for lockfiles, must be writable to the user you run // Local cache directory for RSS feeds
// daemon process or cronjobs under.
define('CACHE_DIR', getenv('TTRSS_CACHE_DIR')); define('MAGPIE_CACHE_AGE', getenv('TTRSS_MAGPIE_CACHE_AGE'));
// Local cache directory for RSS feed content. // How long to store cached RSS objects? In seconds.
// Defaults to 30 minutes
define('ICONS_DIR', getenv('TTRSS_ICONS_DIR')); define('ICONS_DIR', getenv('TTRSS_ICONS_DIR'));
define('ICONS_URL', getenv('TTRSS_ICONS_URL')); define('ICONS_URL', getenv('TTRSS_ICONS_URL'));
@ -64,104 +28,144 @@
// Unless you really know what you're doing, please keep those relative // Unless you really know what you're doing, please keep those relative
// to tt-rss main directory. // to tt-rss main directory.
// ********************** define('SINGLE_USER_MODE', getenv('TTRSS_SINGLE_USER_MODE'));
// *** Authentication *** // Operate in single user mode, disables all functionality related to
// ********************** // multiple users.
define('TMP_DIRECTORY', getenv('TTRSS_TMP_DIRECTORY'));
// Directory for temporary files
// Please see PLUGINS below to configure various authentication modules. define('FEEDS_FRAME_REFRESH', getenv('TTRSS_FEEDS_FRAME_REFRESH'));
// Auto refresh interval for feeds frame (in seconds)
define('AUTH_AUTO_CREATE', getenv('TTRSS_AUTH_AUTO_CREATE')); define('ENABLE_UPDATE_DAEMON', getenv('TTRSS_ENABLE_UPDATE_DAEMON'));
// Allow authentication modules to auto-create users in tt-rss internal // This enables different mechanism for user-triggered updates designed
// database when authenticated successfully. // for update daemon running in background on the server.
// This option suggests FEEDS_FRAME_REFRESH set to a small value
// (like 60 seconds, depending on number of users and server/bandwidth load).
define('AUTH_AUTO_LOGIN', getenv('TTRSS_AUTH_AUTO_LOGIN')); define('DAEMON_SLEEP_INTERVAL', getenv('TTRSS_DAEMON_SLEEP_INTERVAL'));
// Automatically login user on remote or other kind of externally supplied // Interval between update daemon update runs
// authentication, otherwise redirect to login form as normal.
// If set to true, users won't be able to set application language
// and settings profile.
// ********************* define('DATABASE_BACKED_SESSIONS', getenv('TTRSS_DATABASE_BACKED_SESSIONS'));
// *** Feed settings *** // Store session information in a database, recommended for multiuser
// ********************* // configurations. Doesn't seem to work for everyone, so enable with caution.
// tt-rss uses default PHP session storing mechanism if disabled.
define('FORCE_ARTICLE_PURGE', getenv('TTRSS_FORCE_ARTICLE_PURGE')); define('SESSION_CHECK_ADDRESS', getenv('TTRSS_SESSION_CHECK_ADDRESS'));
// When this option is not 0, users ability to control feed purging // Bind session to client IP address (recommended)
// intervals is disabled and all articles (which are not starred)
// older than this amount of days are purged.
// *********************************** define('SESSION_COOKIE_LIFETIME', getenv('TTRSS_SESSION_COOKIE_LIFETIME'));
// *** Self-registrations by users *** // Default lifetime of a session (e.g. login) cookie. In seconds,
// *********************************** // 0 means cookie will be deleted when browser closes.
define('ENABLE_REGISTRATION', getenv('TTRSS_ENABLE_REGISTRATION')); define('SESSION_EXPIRE_TIME', getenv('TTRSS_SESSION_EXPIRE_TIME'));
// Allow users to register themselves. Please be aware that allowing // Hard expiration limit for sessions. Should be
// random people to access your tt-rss installation is a security risk // greater or equal to SESSION_COOKIE_LIFETIME
// and potentially might lead to data loss or server exploit. Disabled
// by default.
define('REG_NOTIFY_ADDRESS', getenv('TTRSS_REG_NOTIFY_ADDRESS')); define('DAEMON_UPDATE_LOGIN_LIMIT', getenv('TTRSS_DAEMON_UPDATE_LOGIN_LIMIT'));
// Email address to send new user notifications to. // Stop updating feeds of user who haven't logged in specified
// amount of days. 0 disables.
define('REG_MAX_USERS', getenv('TTRSS_REG_MAX_USERS')); define('CHECK_FOR_NEW_VERSION', getenv('TTRSS_CHECK_FOR_NEW_VERSION'));
// Maximum amount of users which will be allowed to register on this // Check for new versions of tt-rss automatically.
// system. 0 - no limit.
// ********************************** define('USE_CURL_FOR_ICONS', getenv('TTRSS_USE_CURL_FOR_ICONS'));
// *** Cookies and login sessions *** // Fetch favicons using CURL, useful if your PHP has disabled remote fopen()
// **********************************
define('SESSION_COOKIE_LIFETIME', getenv('TTRSS_SESSION_COOKIE_LIFETIME')); define('DIGEST_ENABLE', getenv('TTRSS_DIGEST_ENABLE'));
// Default lifetime of a session (e.g. login) cookie. In seconds, // Global option to enable daily digests
// 0 means cookie will be deleted when browser closes.
// ********************************* define('DIGEST_EMAIL_LIMIT', getenv('TTRSS_DIGEST_EMAIL_LIMIT'));
// *** Email and digest settings *** // The maximum amount of emails sent in one digest batch
// *********************************
// Tiny Tiny RSS sends mail via PHP mail() function, unless handled define('DAEMON_SENDS_DIGESTS', getenv('TTRSS_DAEMON_SENDS_DIGESTS'));
// by a plugin. // If update daemon and update_feeds should send digests
// Disable if you prefer querying special URL (see wiki)
// If you need SMTP support, take a look here: define('ENABLE_TRANSLATIONS', getenv('TTRSS_ENABLE_TRANSLATIONS'));
// https://git.tt-rss.org/fox/ttrss-mailer-smtp // Enable support for interface translations
define('SMTP_FROM_NAME', getenv('TTRSS_SMTP_FROM_NAME')); define('MYSQL_CHARSET', getenv('TTRSS_MYSQL_CHARSET'));
define('SMTP_FROM_ADDRESS', getenv('TTRSS_SMTP_FROM_ADDRESS')); // Connection charset for MySQL. Only enable if having charset-related
// errors with MySQL (mangled characters, errors when updating feeds, etc).
define('DEFAULT_UPDATE_METHOD', getenv('TTRSS_DEFAULT_UPDATE_METHOD'));
// Which feed parsing library to use as default:
// 0 - Magpie
// 1 - SimplePie
define('SIMPLEPIE_CACHE_DIR', '/var/tmp/simplepie-ttrss-cache');
// Cache directory for RSS feeds when using SimplePie
define('SIMPLEPIE_CACHE_IMAGES', getenv('TTRSS_SIMPLEPIE_CACHE_IMAGES'));
// Allow caching feed images when using SimplePie, to bypass hotlink
// prevention and such at expense of local disk space and bandwidth.
// Note that you (or your users) also have to enable image caching
// in feed editor.
define('COUNTERS_MAX_AGE', getenv('TTRSS_COUNTERS_MAX_AGE'));
// Hard limit for unread counters calculation. Try tweaking this
// parameter to speed up tt-rss when having a huge number of articles
// in the database (better yet, enable purging!)
define('DIGEST_FROM_NAME', getenv('TTRSS_DIGEST_FROM_NAME'));
define('DIGEST_FROM_ADDRESS', getenv('TTRSS_DIGEST_FROM_ADDRESS'));
// Name, address and subject for sending outgoing mail. This applies // Name, address and subject for sending outgoing mail. This applies
// to password reset notifications, digest emails and any other mail. // to password reset notifications, digest emails and any other mail.
define('DIGEST_SUBJECT', getenv('TTRSS_DIGEST_SUBJECT')); define('DIGEST_SUBJECT', getenv('TTRSS_DIGEST_SUBJECT'));
// Subject line for email digests // Subject line for email digests
// *************************************** define('DIGEST_SMTP_HOST', getenv('TTRSS_DIGEST_SMTP_HOST'));
// *** Other settings (less important) *** // SMTP Host to send outgoing mail. Blank - use system MTA.
// ***************************************
define('DIGEST_SMTP_LOGIN', getenv('TTRSS_DIGEST_SMTP_LOGIN'));
define('DIGEST_SMTP_PASSWORD', getenv('TTRSS_DIGEST_SMTP_PASSWORD'));
// These two options enable SMTP authentication when sending
// outgoing mail. Require DIGEST_SMTP_HOST.
define('DAEMON_FEED_LIMIT', getenv('TTRSS_DAEMON_FEED_LIMIT'));
// Limits the amount of feeds daemon (or a cronjob) updates on one run
define('CHECK_FOR_UPDATES', getenv('TTRSS_CHECK_FOR_UPDATES')); define('ALLOW_REMOTE_USER_AUTH', getenv('TTRSS_ALLOW_REMOTE_USER_AUTH'));
// Check for updates automatically if running Git version // Set to 'true' if you trust your web server's REMOTE_USER
// environment variable to validate that the user is logged in. This
// option can be used to integrate tt-rss with Apache's external
// authentication modules.
define('LOCK_DIRECTORY', getenv('TTRSS_LOCK_DIRECTORY'));
// Directory for lockfiles, must be writable to the user you run
// daemon process or cronjobs under.
define('ENABLE_GZIP_OUTPUT', getenv('TTRSS_ENABLE_GZIP_OUTPUT')); define('ENABLE_GZIP_OUTPUT', getenv('TTRSS_ENABLE_GZIP_OUTPUT'));
// Selectively gzip output to improve wire performance. This requires // Selectively gzip output to improve wire performance. This requires
// PHP Zlib extension on the server. // 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 define('PHP_EXECUTABLE', getenv('TTRSS_PHP_EXECUTABLE'));
// after login, or content encoding errors, disable it. // Path to PHP executable
define('PLUGINS', getenv('TTRSS_PLUGINS')); define('ENABLE_REGISTRATION', getenv('TTRSS_ENABLE_REGISTRATION'));
// Comma-separated list of plugins to load automatically for all users. // Allow users to register themselves. Please be vary that allowing
// System plugins have to be specified here. Please enable at least one // random people to access your tt-rss installation is a security risk
// authentication plugin here (auth_*). // and potentially might lead to data loss or server exploit. Disabled
// Users may enable other user plugins from Preferences/Plugins but may not // by default.
// disable plugins specified in this list.
// Disabling auth_internal in this list would automatically disable define('REG_NOTIFY_ADDRESS', getenv('TTRSS_REG_NOTIFY_ADDRESS'));
// reset password link on the login form. // Email address to send new user notifications to.
define('LOG_DESTINATION', getenv('TTRSS_LOG_DESTINATION')); define('REG_MAX_USERS', getenv('TTRSS_REG_MAX_USERS'));
// Error log destination to use. Possible values: sql (uses internal logging // Maximum amount of users which will be allowed to register on this
// you can read in Preferences -> System), syslog - logs to system log. // system. 0 - no limit.
// Setting this to blank uses PHP logging (usually to http server
// error.log). define('FEEDBACK_URL', getenv('TTRSS_FEEDBACK_URL'));
// Note that feed updating daemons don't use this logging facility // Displays an URL for users to provide feedback or comments regarding
// for normal output. // this instance of tt-rss. Can lead to a forum, contact email, etc.
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.
define('CONFIG_VERSION', getenv('TTRSS_CONFIG_VERSION')); define('CONFIG_VERSION', getenv('TTRSS_CONFIG_VERSION'));
// Expected config version. Please update this option in config.php // Expected config version. Please update this option in config.php

@ -1,169 +1,173 @@
<?php <?php
// ******************************************* // Your RDBMS must be configured to accept connections
// *** Database configuration (important!) *** // via TCP/IP and authentified by password.
// *******************************************
define('DB_TYPE', "pgsql"); // or mysql
define('DB_TYPE', '%DB_TYPE'); // pgsql or mysql define('DB_HOST', "localhost");
define('DB_HOST', '%DB_HOST'); define('DB_USER', "fox");
define('DB_USER', '%DB_USER'); define('DB_NAME', "fox");
define('DB_NAME', '%DB_NAME'); define('DB_PASS', "XXXXXX");
define('DB_PASS', '%DB_PASS'); //define('DB_PORT', '5432'); // when neeeded, PG-only
define('DB_PORT', '%DB_PORT'); // usually 5432 for PostgreSQL, 3306 for MySQL
define('MAGPIE_FETCH_TIME_OUT', 60);
define('MYSQL_CHARSET', 'UTF8'); // Magpie's default timeout is 5 seconds. Some RSS feeds,
// Connection charset for MySQL. If you have a legacy database and/or experience // such as from large Trac installs, can take significantly
// garbage unicode characters with this option, try setting it to a blank string. // longer than 5 seconds to generate. To prevent failed
// updates, increase this.
// ***********************************
// *** Basic settings (important!) *** define('MAGPIE_CACHE_DIR', '/var/tmp/magpie-ttrss-cache');
// *********************************** // Local cache directory for RSS feeds
define('SELF_URL_PATH', '%SELF_URL_PATH'); define('MAGPIE_CACHE_AGE', 60*30);
// This should be set to a fully qualified URL used to access // How long to store cached RSS objects? In seconds.
// your tt-rss instance over the net, such as: https://example.org/tt-rss/ // Defaults to 30 minutes
// The value should be a constant string literal. Please don't use
// PHP server variables here - you might introduce security define('ICONS_DIR', "icons");
// issues on your install and cause hard to debug problems. define('ICONS_URL', "icons");
// If your tt-rss instance is behind a reverse proxy, use the external 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
define('SINGLE_USER_MODE', false); // to tt-rss main directory.
define('SINGLE_USER_MODE', true);
// Operate in single user mode, disables all functionality related to // Operate in single user mode, disables all functionality related to
// multiple users and authentication. Enabling this assumes you have // multiple users.
// your tt-rss directory protected by other means (e.g. http auth).
define('TMP_DIRECTORY', '/tmp');
define('SIMPLE_UPDATE_MODE', false); // Directory for temporary files
// 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
// background processes while not running tt-rss, this method is generally
// viable to keep your feeds up to date.
// Still, there are more robust (and recommended) updating methods
// available, you can read about them here: https://tt-rss.org/wiki/UpdatingFeeds
// *****************************
// *** Files and directories ***
// *****************************
define('PHP_EXECUTABLE', '/usr/bin/php'); define('FEEDS_FRAME_REFRESH', 600);
// Path to PHP *COMMAND LINE* executable, used for various command-line tt-rss // Auto refresh interval for feeds frame (in seconds)
// 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', 'lock'); define('ENABLE_UPDATE_DAEMON', false);
// Directory for lockfiles, must be writable to the user you run // This enables different mechanism for user-triggered updates designed
// daemon process or cronjobs under. // for update daemon running in background on the server.
// This option suggests FEEDS_FRAME_REFRESH set to a small value
// (like 60 seconds, depending on number of users and server/bandwidth load).
define('CACHE_DIR', 'cache'); define('DAEMON_SLEEP_INTERVAL', 120);
// Local cache directory for RSS feed content. // Interval between update daemon update runs
define('ICONS_DIR', "feed-icons"); define('DATABASE_BACKED_SESSIONS', false);
define('ICONS_URL', "feed-icons"); // Store session information in a database, recommended for multiuser
// Local and URL path to the directory, where feed favicons are stored. // configurations. Doesn't seem to work for everyone, so enable with caution.
// Unless you really know what you're doing, please keep those relative // tt-rss uses default PHP session storing mechanism if disabled.
// to tt-rss main directory.
// ********************** define('SESSION_CHECK_ADDRESS', true);
// *** Authentication *** // Bind session to client IP address (recommended)
// **********************
// Please see PLUGINS below to configure various authentication modules. define('SESSION_COOKIE_LIFETIME', 0);
// Default lifetime of a session (e.g. login) cookie. In seconds,
// 0 means cookie will be deleted when browser closes.
define('AUTH_AUTO_CREATE', true); define('SESSION_EXPIRE_TIME', 86400);
// Allow authentication modules to auto-create users in tt-rss internal // Hard expiration limit for sessions. Should be
// database when authenticated successfully. // greater or equal to SESSION_COOKIE_LIFETIME
define('AUTH_AUTO_LOGIN', true); define('DAEMON_UPDATE_LOGIN_LIMIT', 0);
// Automatically login user on remote or other kind of externally supplied // Stop updating feeds of user who haven't logged in specified
// authentication, otherwise redirect to login form as normal. // amount of days. 0 disables.
// If set to true, users won't be able to set application language
// and settings profile.
// ********************* define('CHECK_FOR_NEW_VERSION', true);
// *** Feed settings *** // Check for new versions of tt-rss automatically.
// *********************
define('FORCE_ARTICLE_PURGE', 0); define('USE_CURL_FOR_ICONS', false);
// When this option is not 0, users ability to control feed purging // Fetch favicons using CURL, useful if your PHP has disabled remote fopen()
// intervals is disabled and all articles (which are not starred)
// older than this amount of days are purged.
// ***********************************
// *** Self-registrations by users ***
// ***********************************
define('ENABLE_REGISTRATION', false); define('DIGEST_ENABLE', true);
// Allow users to register themselves. Please be aware that allowing // Global option to enable daily digests
// 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', 'user@your.domain.dom'); define('DIGEST_EMAIL_LIMIT', 10);
// Email address to send new user notifications to. // The maximum amount of emails sent in one digest batch
define('REG_MAX_USERS', 10); define('DAEMON_SENDS_DIGESTS', true);
// Maximum amount of users which will be allowed to register on this // If update daemon and update_feeds should send digests
// system. 0 - no limit. // Disable if you prefer querying special URL (see wiki)
// ********************************** define('ENABLE_TRANSLATIONS', true);
// *** Cookies and login sessions *** // Enable support for interface translations
// **********************************
define('SESSION_COOKIE_LIFETIME', 86400); define('MYSQL_CHARSET', '');
// Default lifetime of a session (e.g. login) cookie. In seconds, // Connection charset for MySQL. Only enable if having charset-related
// 0 means cookie will be deleted when browser closes. // errors with MySQL (mangled characters, errors when updating feeds, etc).
// ********************************* define('DEFAULT_UPDATE_METHOD', 0);
// *** Email and digest settings *** // Which feed parsing library to use as default:
// ********************************* // 0 - Magpie
// 1 - SimplePie
// Tiny Tiny RSS sends mail via PHP mail() function, unless handled define('SIMPLEPIE_CACHE_DIR', '/var/tmp/simplepie-ttrss-cache');
// by a plugin. // Cache directory for RSS feeds when using SimplePie
// If you need SMTP support, take a look here: define('SIMPLEPIE_CACHE_IMAGES', false);
// https://git.tt-rss.org/fox/ttrss-mailer-smtp // Allow caching feed images when using SimplePie, to bypass hotlink
// prevention and such at expense of local disk space and bandwidth.
// Note that you (or your users) also have to enable image caching
// in feed editor.
define('COUNTERS_MAX_AGE', 365);
// Hard limit for unread counters calculation. Try tweaking this
// parameter to speed up tt-rss when having a huge number of articles
// in the database (better yet, enable purging!)
define('SMTP_FROM_NAME', 'Tiny Tiny RSS'); define('DIGEST_FROM_NAME', 'Tiny Tiny RSS');
define('SMTP_FROM_ADDRESS', 'noreply@your.domain.dom'); define('DIGEST_FROM_ADDRESS', 'noreply@your.domain.dom');
// Name, address and subject for sending outgoing mail. This applies // Name, address and subject for sending outgoing mail. This applies
// to password reset notifications, digest emails and any other mail. // to password reset notifications, digest emails and any other mail.
define('DIGEST_SUBJECT', '[tt-rss] New headlines for last 24 hours'); define('DIGEST_SUBJECT', '[tt-rss] New headlines for last 24 hours');
// Subject line for email digests // Subject line for email digests
// *************************************** define('DIGEST_SMTP_HOST', '');
// *** Other settings (less important) *** // SMTP Host to send outgoing mail. Blank - use system MTA.
// ***************************************
define('CHECK_FOR_UPDATES', true); define('DIGEST_SMTP_LOGIN', '');
// Check for updates automatically if running Git version define('DIGEST_SMTP_PASSWORD', '');
// These two options enable SMTP authentication when sending
// outgoing mail. Require DIGEST_SMTP_HOST.
define('DAEMON_FEED_LIMIT', 100);
// Limits the amount of feeds daemon (or a cronjob) updates on one run
define('ALLOW_REMOTE_USER_AUTH', false);
// Set to 'true' if you trust your web server's REMOTE_USER
// environment variable to validate that the user is logged in. This
// option can be used to integrate tt-rss with Apache's external
// authentication modules.
define('LOCK_DIRECTORY', '.');
// Directory for lockfiles, must be writable to the user you run
// daemon process or cronjobs under.
define('ENABLE_GZIP_OUTPUT', false); define('ENABLE_GZIP_OUTPUT', false);
// Selectively gzip output to improve wire performance. This requires // Selectively gzip output to improve wire performance. This requires
// PHP Zlib extension on the server. // 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 define('PHP_EXECUTABLE', '/usr/bin/php');
// after login, or content encoding errors, disable it. // Path to PHP executable
define('PLUGINS', 'auth_internal, note'); define('ENABLE_REGISTRATION', false);
// Comma-separated list of plugins to load automatically for all users. // Allow users to register themselves. Please be vary that allowing
// System plugins have to be specified here. Please enable at least one // random people to access your tt-rss installation is a security risk
// authentication plugin here (auth_*). // and potentially might lead to data loss or server exploit. Disabled
// Users may enable other user plugins from Preferences/Plugins but may not // by default.
// disable plugins specified in this list.
// Disabling auth_internal in this list would automatically disable define('REG_NOTIFY_ADDRESS', 'user@your.domain.dom');
// reset password link on the login form. // Email address to send new user notifications to.
define('LOG_DESTINATION', 'sql'); define('REG_MAX_USERS', 10);
// Error log destination to use. Possible values: sql (uses internal logging // Maximum amount of users which will be allowed to register on this
// you can read in Preferences -> System), syslog - logs to system log. // system. 0 - no limit.
// Setting this to blank uses PHP logging (usually to http server
// error.log). define('FEEDBACK_URL', '');
// Note that feed updating daemons don't use this logging facility // Displays an URL for users to provide feedback or comments regarding
// for normal output. // this instance of tt-rss. Can lead to a forum, contact email, etc.
define('CONFIG_VERSION', 26); define('FORCE_ARTICLE_PURGE', 0);
// 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.
define('CONFIG_VERSION', 19);
// Expected config version. Please update this option in config.php // Expected config version. Please update this option in config.php
// if necessary (after migrating all new options from this file). // if necessary (after migrating all new options from this file).

@ -1,6 +1,6 @@
#!/bin/sh -e #!/bin/sh -e
while ! pg_isready -h $TTRSS_DB_HOST -U $TTRSS_DB_USER; do while ! PGPASSWORD=$TTRSS_DB_PASS psql -h $TTRSS_DB_HOST -U $TTRSS_DB_USER $TTRSS_DB_NAME -c 'select true'; do
echo waiting until $TTRSS_DB_HOST is ready... echo waiting until $TTRSS_DB_HOST is ready...
sleep 3 sleep 3
done done
@ -29,12 +29,13 @@ if [ ! -d $DST_DIR/.git ]; then
mkdir -p $DST_DIR mkdir -p $DST_DIR
echo cloning tt-rss source from $SRC_REPO to $DST_DIR... echo cloning tt-rss source from $SRC_REPO to $DST_DIR...
git clone $SRC_REPO $DST_DIR || echo error: failed to clone master repository. git clone $SRC_REPO $DST_DIR || echo error: failed to clone master repository.
git checkout $TARGET_COMMIT || echo error: unable to checkout ${TARGET_COMMIT}.
else else
echo updating tt-rss source in $DST_DIR from $SRC_REPO... echo updating tt-rss source in $DST_DIR from $SRC_REPO...
cd $DST_DIR && \ cd $DST_DIR && \
git config core.filemode false && \ git config core.filemode false && \
git config pull.rebase false && \ git config pull.rebase false && \
git pull origin master || echo error: unable to update master repository. git checkout $TARGET_COMMIT || echo error: unable to checkout ${TARGET_COMMIT}.
fi fi
if [ ! -e $DST_DIR/index.php ]; then if [ ! -e $DST_DIR/index.php ]; then
@ -55,9 +56,10 @@ else
fi fi
chown -R $OWNER_UID:$OWNER_GID $DST_DIR \ chown -R $OWNER_UID:$OWNER_GID $DST_DIR \
/var/log/php8 /var/log/
for d in cache lock feed-icons; do for d in lock icons; do
mkdir -p $DST_DIR/$d
chmod 777 $DST_DIR/$d chmod 777 $DST_DIR/$d
find $DST_DIR/$d -type f -exec chmod 666 {} \; find $DST_DIR/$d -type f -exec chmod 666 {} \;
done done
@ -69,7 +71,7 @@ RESTORE_SCHEMA=${SCRIPT_ROOT}/restore-schema.sql.gz
if [ -r $RESTORE_SCHEMA ]; then if [ -r $RESTORE_SCHEMA ]; then
zcat $RESTORE_SCHEMA | $PSQL zcat $RESTORE_SCHEMA | $PSQL
elif ! $PSQL -c 'select * from ttrss_version'; then elif ! $PSQL -c 'select * from ttrss_version'; then
$PSQL < /var/www/html/tt-rss/schema/ttrss_schema_pgsql.sql cat /var/www/html/tt-rss/schema/ttrss_schema_pgsql.sql | sed 's/tt-rss.spb.ru/tt-rss.org/g' | $PSQL
fi fi
if [ ! -s $DST_DIR/config.php ]; then if [ ! -s $DST_DIR/config.php ]; then
@ -85,9 +87,9 @@ fi
# this was previously generated # this was previously generated
rm -f $DST_DIR/config.php.bak rm -f $DST_DIR/config.php.bak
cd $DST_DIR && sudo -E -u app php8 ./update.php --update-schema=force-yes cd $DST_DIR && sudo -E -u app php ./update.php --update-schema=force-yes
touch $DST_DIR/.app_is_ready touch $DST_DIR/.app_is_ready
sudo -E -u app /usr/sbin/php-fpm8 -F sudo -E -u app /usr/bin/php-fpm -F

@ -12,7 +12,7 @@ if ! id app; then
adduser -D -h /var/www/html -G app -u $OWNER_UID app adduser -D -h /var/www/html -G app -u $OWNER_UID app
fi fi
while ! pg_isready -h $TTRSS_DB_HOST -U $TTRSS_DB_USER; do while ! PGPASSWORD=$TTRSS_DB_PASS psql -h $TTRSS_DB_HOST -U $TTRSS_DB_USER $TTRSS_DB_NAME -c 'select true'; do
echo waiting until $TTRSS_DB_HOST is ready... echo waiting until $TTRSS_DB_HOST is ready...
sleep 3 sleep 3
done done
@ -24,4 +24,6 @@ while [ ! -s $DST_DIR/config.php -a -e $DST_DIR/.app_is_ready ]; do
sleep 3 sleep 3
done done
sudo -E -u app /usr/bin/php8 /var/www/html/tt-rss/update_daemon2.php cd $DST_DIR
sudo -E -u app /usr/bin/php /var/www/html/tt-rss/update_daemon2.php

@ -2,7 +2,7 @@ version: '3'
services: services:
db: db:
image: postgres:12-alpine image: postgres:9
restart: unless-stopped restart: unless-stopped
environment: environment:
- POSTGRES_USER=${TTRSS_DB_USER} - POSTGRES_USER=${TTRSS_DB_USER}
@ -24,19 +24,19 @@ services:
depends_on: depends_on:
- db - db
backups: # backups:
build: # build:
context: # context:
./app # ./app
restart: unless-stopped # restart: unless-stopped
env_file: # env_file:
- .env # - .env
volumes: # volumes:
- backups:/backups # - backups:/backups
- app:/var/www/html # - app:/var/www/html
depends_on: # depends_on:
- db # - db
command: /opt/tt-rss/dcron.sh -f # command: /opt/tt-rss/dcron.sh -f
updater: updater:
build: build:

Loading…
Cancel
Save