cleanup
This commit is contained in:
126
Cloudron/WorkInProgress/netmon.knownelement.com/start.sh
Normal file
126
Cloudron/WorkInProgress/netmon.knownelement.com/start.sh
Normal file
@@ -0,0 +1,126 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eu
|
||||
|
||||
# Setup directories
|
||||
if [ ! -d "/app/data/rrd" ] || [ -z "$(ls -A /app/data/rrd)" ]; then
|
||||
echo "First run, initializing data directories..."
|
||||
mkdir -p /app/data/rrd
|
||||
mkdir -p /app/data/logs
|
||||
mkdir -p /app/data/config
|
||||
mkdir -p /app/data/plugins
|
||||
|
||||
# Copy initial configurations if they don't exist
|
||||
if [ ! -f "/app/data/config/config.php" ]; then
|
||||
cp /tmp/data/config/config.php /app/data/config/
|
||||
fi
|
||||
fi
|
||||
|
||||
# Create necessary log files
|
||||
touch /app/data/logs/librenms.log
|
||||
touch /app/data/logs/auth.log
|
||||
touch /app/data/logs/discovery.log
|
||||
touch /app/data/logs/poller.log
|
||||
|
||||
# Environment variables for database and redis
|
||||
export DB_HOST=${CLOUDRON_MYSQL_HOST}
|
||||
export DB_PORT=${CLOUDRON_MYSQL_PORT}
|
||||
export DB_USER=${CLOUDRON_MYSQL_USERNAME}
|
||||
export DB_PASS=${CLOUDRON_MYSQL_PASSWORD}
|
||||
export DB_NAME=${CLOUDRON_MYSQL_DATABASE}
|
||||
export REDIS_HOST=${CLOUDRON_REDIS_HOST}
|
||||
export REDIS_PORT=${CLOUDRON_REDIS_PORT}
|
||||
export REDIS_DB=0
|
||||
export REDIS_PASS=${CLOUDRON_REDIS_PASSWORD}
|
||||
export APP_URL=https://${CLOUDRON_APP_DOMAIN}
|
||||
|
||||
# Set up OIDC authentication if enabled
|
||||
if [[ -n "${CLOUDRON_OIDC_IDENTIFIER:-}" ]]; then
|
||||
echo "Configuring OIDC authentication..."
|
||||
sed -i "s|'auth_mechanism' => 'mysql'|'auth_mechanism' => 'socialite'|g" /app/data/config/config.php
|
||||
|
||||
# Add OIDC configuration
|
||||
cat >> /app/data/config/config.php << EOF
|
||||
\$config['auth_socialite_oidc']['enabled'] = true;
|
||||
\$config['auth_socialite_oidc']['client_id'] = '${CLOUDRON_OIDC_CLIENT_ID}';
|
||||
\$config['auth_socialite_oidc']['client_secret'] = '${CLOUDRON_OIDC_CLIENT_SECRET}';
|
||||
\$config['auth_socialite_oidc']['authorize_url'] = '${CLOUDRON_OIDC_ISSUER}/auth';
|
||||
\$config['auth_socialite_oidc']['token_url'] = '${CLOUDRON_OIDC_ISSUER}/token';
|
||||
\$config['auth_socialite_oidc']['userinfo_url'] = '${CLOUDRON_OIDC_ISSUER}/userinfo';
|
||||
\$config['auth_socialite_oidc']['scope'] = 'openid email profile groups';
|
||||
\$config['auth_socialite_oidc']['redirect'] = 'https://${CLOUDRON_APP_DOMAIN}/auth/oidc/callback';
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Set up LDAP authentication if enabled and OIDC is not enabled
|
||||
if [[ -z "${CLOUDRON_OIDC_IDENTIFIER:-}" && -n "${CLOUDRON_LDAP_SERVER:-}" ]]; then
|
||||
echo "Configuring LDAP authentication..."
|
||||
sed -i "s|'auth_mechanism' => 'mysql'|'auth_mechanism' => 'ldap'|g" /app/data/config/config.php
|
||||
|
||||
# Add LDAP configuration
|
||||
cat >> /app/data/config/config.php << EOF
|
||||
\$config['auth_ldap_server'] = '${CLOUDRON_LDAP_SERVER}';
|
||||
\$config['auth_ldap_port'] = ${CLOUDRON_LDAP_PORT};
|
||||
\$config['auth_ldap_version'] = 3;
|
||||
\$config['auth_ldap_starttls'] = true;
|
||||
\$config['auth_ldap_prefix'] = '${CLOUDRON_LDAP_BIND_DN%%,*}';
|
||||
\$config['auth_ldap_suffix'] = ',${CLOUDRON_LDAP_BIND_DN#*,}';
|
||||
\$config['auth_ldap_group'] = '${CLOUDRON_LDAP_USERS_GROUP_DN}';
|
||||
\$config['auth_ldap_groupbase'] = '${CLOUDRON_LDAP_GROUPS_BASE_DN}';
|
||||
\$config['auth_ldap_groups']['admin']['level'] = 10;
|
||||
\$config['auth_ldap_groups']['admin']['group'] = '${CLOUDRON_LDAP_ADMINS_GROUP_DN}';
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Fix permissions
|
||||
chown -R cloudron:cloudron /app/data
|
||||
|
||||
# Initialize database if needed
|
||||
echo "Checking database..."
|
||||
if ! mysql -h "${CLOUDRON_MYSQL_HOST}" -P "${CLOUDRON_MYSQL_PORT}" -u "${CLOUDRON_MYSQL_USERNAME}" -p"${CLOUDRON_MYSQL_PASSWORD}" -e "USE ${CLOUDRON_MYSQL_DATABASE}" 2>/dev/null; then
|
||||
echo "Setting up database schema..."
|
||||
cd /app/code
|
||||
php build-base.php
|
||||
fi
|
||||
|
||||
# Apply database updates if needed
|
||||
cd /app/code
|
||||
php includes/sql-schema/update.php
|
||||
|
||||
# Create admin user on first run if authentication is MySQL
|
||||
if [[ ! -n "${CLOUDRON_OIDC_IDENTIFIER:-}" && ! -n "${CLOUDRON_LDAP_SERVER:-}" ]]; then
|
||||
if ! mysql -h "${CLOUDRON_MYSQL_HOST}" -P "${CLOUDRON_MYSQL_PORT}" -u "${CLOUDRON_MYSQL_USERNAME}" -p"${CLOUDRON_MYSQL_PASSWORD}" -e "SELECT username FROM users WHERE username='admin'" ${CLOUDRON_MYSQL_DATABASE} 2>/dev/null | grep -q admin; then
|
||||
echo "Creating admin user..."
|
||||
php adduser.php admin admin 10 admin@localhost
|
||||
fi
|
||||
fi
|
||||
|
||||
# Link config file
|
||||
ln -sf /app/data/config/config.php /app/code/config.php
|
||||
|
||||
# Setup cron jobs
|
||||
echo "Setting up cron jobs..."
|
||||
cat > /etc/cron.d/librenms << EOF
|
||||
# Run a complete discovery of all devices once every 6 hours
|
||||
33 */6 * * * cloudron cd /app/code/ && php discovery.php -h all >> /app/data/logs/discovery-all.log 2>&1
|
||||
# Run a complete poll of all devices once every 5 minutes
|
||||
*/5 * * * * cloudron cd /app/code/ && php poller.php -h all >> /app/data/logs/poll-all.log 2>&1
|
||||
# Run hourly maintenance tasks
|
||||
15 * * * * cloudron cd /app/code/ && php daily.php >> /app/data/logs/daily.log 2>&1
|
||||
# Run daily maintenance tasks
|
||||
15 0 * * * cloudron cd /app/code/ && php daily.sh >> /app/data/logs/daily.log 2>&1
|
||||
# Check services
|
||||
*/5 * * * * cloudron cd /app/code/ && php check-services.php >> /app/data/logs/check-services.log 2>&1
|
||||
# Process alerts
|
||||
*/5 * * * * cloudron cd /app/code/ && php alerts.php >> /app/data/logs/alerts.log 2>&1
|
||||
# Poll billing
|
||||
*/5 * * * * cloudron cd /app/code/ && php poll-billing.php >> /app/data/logs/poll-billing.log 2>&1
|
||||
# Generate billing data
|
||||
01 * * * * cloudron cd /app/code/ && php billing-calculate.php >> /app/data/logs/billing-calculate.log 2>&1
|
||||
# Update device groups
|
||||
*/5 * * * * cloudron cd /app/code/ && php update-device-groups.php >> /app/data/logs/update-device-groups.log 2>&1
|
||||
EOF
|
||||
|
||||
# Start supervisord to manage all processes
|
||||
echo "Starting supervisord..."
|
||||
exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
|
Reference in New Issue
Block a user