115 lines
3.5 KiB
Bash
115 lines
3.5 KiB
Bash
#!/bin/sh
|
|
|
|
# Env variables
|
|
export DB_HOST
|
|
export DB_USER
|
|
export DB_NAME
|
|
|
|
# Default values
|
|
DB_HOST=${DB_HOST:-mariadb}
|
|
DB_USER=${DB_USER:-flarum}
|
|
DB_NAME=${DB_NAME:-flarum}
|
|
|
|
# Required env variables
|
|
if [ -z "$DB_PASS" ]; then
|
|
echo "[ERROR] Mariadb database password must be set !"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$FORUM_URL" ]; then
|
|
echo "[ERROR] Forum url must be set !"
|
|
exit 1
|
|
fi
|
|
|
|
cd /flarum/app/
|
|
|
|
# Installation settings
|
|
cat > config.yml <<EOF
|
|
databaseConfiguration:
|
|
driver: mysql
|
|
host: ${DB_HOST}
|
|
database: ${DB_NAME}
|
|
username: ${DB_USER}
|
|
password: ${DB_PASS}
|
|
|
|
baseUrl: ${FORUM_URL}
|
|
EOF
|
|
|
|
# Installer problem, wait fix in beta 6
|
|
# PHP Fatal error: Uncaught ReflectionException: Class flarum.config does not
|
|
# exist in /flarum/vendor/illuminate/container/Container.php
|
|
# https://github.com/flarum/core/commit/7192c4391bee006ccc2de3db6caa89803d72d130
|
|
sed -i -e 's|InfoCommand::class,||g' \
|
|
-e "s|\['config' => \$app->make('flarum.config')\]|['config' => \$app->isInstalled() ? \$app->make('flarum.config') : []]|g" vendor/flarum/core/src/Console/Server.php
|
|
|
|
# Set permissions
|
|
chown -R flarum:flarum .
|
|
|
|
# if no installation was performed before
|
|
if [ ! -e 'assets/rev-manifest.json' ]; then
|
|
|
|
# Mail settings
|
|
sed -i -e "s|{{ MAIL_FROM }}|${MAIL_FROM}|g" \
|
|
-e "s|{{ MAIL_HOST }}|${MAIL_HOST}|g" \
|
|
-e "s|{{ MAIL_PORT }}|${MAIL_PORT}|g" \
|
|
-e "s|{{ MAIL_USER }}|${MAIL_USER}|g" \
|
|
-e "s|{{ MAIL_PASS }}|${MAIL_PASS}|g" \
|
|
-e "s|{{ MAIL_ENCR }}|${MAIL_ENCR}|g" config.sql
|
|
|
|
# Install flarum
|
|
su-exec flarum:flarum php flarum install --file config.yml
|
|
|
|
# Define flarum settings in database
|
|
mysql -h"${DB_HOST}" -u"${DB_USER}" -p"${DB_PASS}" "${DB_NAME}" < config.sql
|
|
|
|
else
|
|
|
|
echo "[INFO] Flarum already installed, init app..."
|
|
|
|
# Disable already done steps during installation
|
|
# ----------------------------------------------
|
|
#
|
|
# See : flarum/core/src/Install/Console/DefaultsDataProvider.php
|
|
# flarum/core/src/Install/Console/InstallCommand.php
|
|
#
|
|
# runMigrations() = Database migration (Flarum\Database\Migrator)
|
|
# writeSettings() = Writing default flarum settings (Flarum\Settings\SettingsRepositoryInterface)
|
|
# seedGroups() = Create default groups
|
|
# seedPermissions() = Create default permissions
|
|
# createAdminUser() = Create default admin user
|
|
sed -i -e '/$this->runMigrations();/ s/^/#/' \
|
|
-e '/$this->writeSettings();/ s/^/#/' \
|
|
-e '/$this->seedGroups();/ s/^/#/' \
|
|
-e '/$this->seedPermissions();/ s/^/#/' \
|
|
-e '/$this->createAdminUser();/ s/^/#/' vendor/flarum/core/src/Install/Console/InstallCommand.php
|
|
|
|
# Init flarum (without steps above)
|
|
su-exec flarum:flarum php flarum install --file config.yml
|
|
|
|
# Composer cache dir and packages list paths
|
|
CACHE_DIR=/flarum/app/assets/.extensions
|
|
LIST_FILE=assets/.extensions/list
|
|
|
|
# Download extra extensions installed with composer wrapup script
|
|
if [ -s "$LIST_FILE" ]; then
|
|
echo "[INFO] Install extra bundled extensions"
|
|
while read extension; do
|
|
echo "[INFO] -------------- Install extension : ${extension} --------------"
|
|
COMPOSER_CACHE_DIR="$CACHE_DIR" su-exec flarum:flarum composer require "$extension"
|
|
done < "$LIST_FILE"
|
|
echo "[INFO] Install extra bundled extensions. DONE."
|
|
fi
|
|
|
|
echo "[INFO] Init done, launch flarum..."
|
|
|
|
fi
|
|
|
|
# Removing installation files
|
|
rm -f config.sql config.yml
|
|
|
|
# Set permissions
|
|
chown -R flarum:flarum /flarum /var/lib/nginx
|
|
|
|
# RUN !
|
|
exec supervisord -c /etc/supervisor/supervisord.conf
|