mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-04-16 12:27:20 -04:00
* Possiblity to autoinstall in Docker Compose #fix https://github.com/FreshRSS/FreshRSS/issues/3349 It is simply calling our existing CLI: do-install.php and create-user.php https://github.com/FreshRSS/FreshRSS/tree/master/cli FreshRSS will typically be ready a few seconds before the database, so introduce a tolerance when the database is not available / up (yet) by trying a few times to connect. Also useful to avoid service interruption when DB service is restarted. Example: ```yml freshrss-app: image: freshrss/freshrss container_name: freshrss-app hostname: freshrss-app restart: unless-stopped ports: - "8080:80" depends_on: - freshrss-db volumes: - data:/var/www/FreshRSS/data - extensions:/var/www/FreshRSS/extensions environment: CRON_MIN: '*/20' FRESHRSS_ENV: development FRESHRSS_INSTALL: |- --api_enabled --base_url https://rss.example.net --db-base freshrss --db-host freshrss-db --db-password freshrss --db-type pgsql --db-user freshrss --default_user admin --language en FRESHRSS_USER: |- --api_password freshrss --email user@example.net --language en --password freshrss --user admin TZ: Europe/Paris ``` * Minor type f in find * shellcheck
72 lines
2.2 KiB
Bash
Executable File
72 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
||
|
||
php -f ./cli/prepare.php >/dev/null
|
||
|
||
find /etc/php*/ -type f -name php.ini -exec sed -r -i "\\#^;?date.timezone#s#^.*#date.timezone = $TZ#" {} \;
|
||
find /etc/php*/ -type f -name php.ini -exec sed -r -i "\\#^;?post_max_size#s#^.*#post_max_size = 32M#" {} \;
|
||
find /etc/php*/ -type f -name php.ini -exec sed -r -i "\\#^;?upload_max_filesize#s#^.*#upload_max_filesize = 32M#" {} \;
|
||
|
||
if [ -n "$LISTEN" ]; then
|
||
find /etc/apache2/ -type f -name FreshRSS.Apache.conf -exec sed -r -i "\\#^Listen#s#^.*#Listen $LISTEN#" {} \;
|
||
fi
|
||
|
||
if [ -n "$CRON_MIN" ]; then
|
||
(
|
||
echo "export TZ=$TZ"
|
||
echo "export COPY_LOG_TO_SYSLOG=$COPY_LOG_TO_SYSLOG"
|
||
echo "export COPY_SYSLOG_TO_STDERR=$COPY_SYSLOG_TO_STDERR"
|
||
echo "export FRESHRSS_ENV=$FRESHRSS_ENV"
|
||
) >/var/www/FreshRSS/Docker/env.txt
|
||
crontab -l | sed -r "\\#FreshRSS#s#^[^ ]+ #$CRON_MIN #" | crontab -
|
||
fi
|
||
|
||
if [ -n "$FRESHRSS_INSTALL" ]; then
|
||
# shellcheck disable=SC2046
|
||
php -f ./cli/do-install.php -- \
|
||
$(echo "$FRESHRSS_INSTALL" | sed -r 's/[\r\n]+/\n/g' | paste -s -) \
|
||
1>/tmp/out.txt 2>/tmp/err.txt
|
||
EXITCODE=$?
|
||
grep -v 'Remember to' /tmp/out.txt
|
||
grep -v 'Please use' /tmp/err.txt 1>&2
|
||
|
||
if [ $EXITCODE -eq 3 ]; then
|
||
echo 'ℹ️ FreshRSS already installed; no change performed.'
|
||
elif [ $EXITCODE -eq 0 ]; then
|
||
echo '✅ FreshRSS successfully installed.'
|
||
else
|
||
rm -f /tmp/out.txt /tmp/err.txt
|
||
echo '❌ FreshRSS error during installation!'
|
||
exit $EXITCODE
|
||
fi
|
||
|
||
rm -f /tmp/out.txt /tmp/err.txt
|
||
fi
|
||
|
||
if [ -n "$FRESHRSS_USER" ]; then
|
||
# shellcheck disable=SC2046
|
||
php -f ./cli/create-user.php -- \
|
||
$(echo "$FRESHRSS_USER" | sed -r 's/[\r\n]+/\n/g' | paste -s -) \
|
||
1>/tmp/out.txt 2>/tmp/err.txt
|
||
EXITCODE=$?
|
||
grep -v 'Remember to' /tmp/out.txt
|
||
cat /tmp/err.txt 1>&2
|
||
|
||
if [ $EXITCODE -eq 3 ]; then
|
||
echo 'ℹ️ FreshRSS user already exists; no change performed.'
|
||
elif [ $EXITCODE -eq 0 ]; then
|
||
echo '✅ FreshRSS user successfully created.'
|
||
./cli/list-users.php | xargs -n1 ./cli/actualize-user.php --user
|
||
else
|
||
rm -f /tmp/out.txt /tmp/err.txt
|
||
echo '❌ FreshRSS error during the creation of a user!'
|
||
exit $EXITCODE
|
||
fi
|
||
|
||
rm -f /tmp/out.txt /tmp/err.txt
|
||
fi
|
||
|
||
chown -R :www-data .
|
||
chmod -R g+r . && chmod -R g+w ./data/
|
||
|
||
exec "$@"
|