HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux vmi1674223.contaboserver.net 5.4.0-182-generic #202-Ubuntu SMP Fri Apr 26 12:29:36 UTC 2024 x86_64
User: root (0)
PHP: 7.4.3-4ubuntu2.22
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //opt/openproject/docker/supervisord
#!/bin/bash

set -e
set -o pipefail

indent() {
	sed -u 's/^/       /'
}

echo "-----> Starting the all-in-one OpenProject setup at $BASH_SOURCE..."

if [ "$PGDATA" == "" ]; then
	echo "No PGDATA environment variable defined. Aborting." | indent
	exit 2
fi

PGUSER=${PGUSER:=postgres}
PGPASSWORD=${PGPASSWORD:=postgres}
PG_STARTUP_WAIT_TIME=${PG_STARTUP_WAIT_TIME:=10}
SUPERVISORD_LOG_LEVEL=${SUPERVISORD_LOG_LEVEL:=info}
PGBIN="/usr/lib/postgresql/9.6/bin"

dbhost=$(ruby -ruri -e 'puts URI(ENV.fetch("DATABASE_URL")).host')
pwfile=$(mktemp)
echo "$PGPASSWORD" > $pwfile
chown postgres $pwfile

PLUGIN_GEMFILE_TMP=$(mktemp)
PLUGIN_GEMFILE=$APP_PATH/Gemfile.local

if [ "$PLUGIN_GEMFILE_URL" != "" ]; then
	echo "Fetching custom gemfile from ${PLUGIN_GEMFILE_URL}..."
	curl -L -o "$PLUGIN_GEMFILE_TMP" "$PLUGIN_GEMFILE_URL"

	# set custom plugin gemfile if file is readable and non-empty
	if [ -s "$PLUGIN_GEMFILE_TMP" ]; then
		mv "$PLUGIN_GEMFILE_TMP" "$PLUGIN_GEMFILE"
		chown $APP_USER:$APP_USER "$PLUGIN_GEMFILE"
	fi
fi

install_plugins() {
	pushd $APP_PATH >/dev/null

	if [ -s "$PLUGIN_GEMFILE" ]; then
		echo "Installing plugins..."
		bundle install

		echo "Installing frontend dependencies..."
		pushd $APP_PATH/frontend >/dev/null
		if [ "$(id -u)" = '0' ]; then
			su - $APP_USER -c "cd $APP_PATH/frontend && npm install"
		else
			npm install
		fi
		popd >/dev/null

		echo "Precompiling new assets..."
		bundle exec rake assets:precompile

		echo "Plugins installed"
	fi

	popd >/dev/null
}

migrate() {
	wait_for_postgres
	pushd $APP_PATH >/dev/null
	/etc/init.d/memcached start
	bundle exec rake db:migrate
	# run seed as app user so created attachments (and folder) belong to app, not root
	su app -c 'bundle exec rake db:seed'
	/etc/init.d/memcached stop
	popd >/dev/null
}

wait_for_postgres() {
	retries=${PG_STARTUP_WAIT_TIME}

	echo "Trying to contact PostgreSQL server instance or waiting for it to come online."

	until su postgres -c "$PGBIN/psql $DATABASE_URL -c 'select 1;' > /dev/null 2>&1" || [ $retries -eq 0 ]; do
		echo "Waiting for postgres server, $((retries--)) remaining attempts..."
		sleep 3
	done
}

if [ "$dbhost" = "127.0.0.1" ]; then
	# initialize cluster if it does not exist yet
	if [ -f "$PGDATA/PG_VERSION" ]; then
		echo "-----> Database cluster already exists, not modifying."
		/etc/init.d/postgresql start | indent
		(install_plugins && migrate) | indent
		/etc/init.d/postgresql stop | indent
	else
		echo "-----> Database cluster not found. Creating a new one in $PGDATA..."
		chown -R postgres:postgres $PGDATA
		su postgres -c "$PGBIN/initdb --pgdata=${PGDATA} --username=${PGUSER} --encoding=unicode --auth=trust --pwfile=$pwfile" | indent
		su postgres -c "rm -f $pwfile"
		/etc/init.d/postgresql start | indent
		su postgres -c "$PGBIN/psql --command \"CREATE USER openproject WITH SUPERUSER PASSWORD 'openproject';\"" | indent
		su postgres -c "$PGBIN/createdb -O openproject openproject" | indent
		(install_plugins && migrate) | indent
		/etc/init.d/postgresql stop | indent
	fi
else
	echo "-----> You're using an external database. Not initializing a local database cluster."
	migrate | indent
fi

echo "-----> Database setup finished."
echo "       On first installation, the default admin credentials are login: admin, password: admin"

echo "-----> Launching supervisord..."
exec /usr/bin/supervisord -c $APP_PATH/docker/supervisord.conf -e ${SUPERVISORD_LOG_LEVEL}