#!/bin/bash DEBUG=${DEBUG:-$DEBUG_ENTRYPOINT} ## GITLAB CORE GITLAB_BACKUP_DIR="${GITLAB_BACKUP_DIR:-$GITLAB_DATA_DIR/backups}" GITLAB_REPOS_DIR="${GITLAB_REPOS_DIR:-$GITLAB_DATA_DIR/repositories}" GITLAB_BUILDS_DIR="${GITLAB_BUILDS_DIR:-$GITLAB_DATA_DIR/builds}" GITLAB_SHARED_DIR="${GITLAB_SHARED_DIR:-$GITLAB_DATA_DIR/shared}" GITLAB_LFS_OBJECTS_DIR="${GITLAB_LFS_OBJECTS_DIR:-$GITLAB_SHARED_DIR/lfs-objects}" GITLAB_HTTPS=${GITLAB_HTTPS:-false} GITLAB_HOST=${GITLAB_HOST:-localhost} GITLAB_CI_HOST=${GITLAB_CI_HOST:-} GITLAB_PORT=${GITLAB_PORT:-} if [[ $GITLAB_HTTPS == true ]]; then GITLAB_PORT=${GITLAB_PORT:-443} else GITLAB_PORT=${GITLAB_PORT:-80} fi ## SSH GITLAB_SSH_HOST=${GITLAB_SSH_HOST:-$GITLAB_HOST} GITLAB_SSH_PORT=${GITLAB_SSH_PORT:-$GITLAB_SHELL_SSH_PORT} # for backwards compatibility GITLAB_SSH_PORT=${GITLAB_SSH_PORT:-22} GITLAB_HTTPS_HSTS_ENABLED=${GITLAB_HTTPS_HSTS_ENABLED:-true} GITLAB_HTTPS_HSTS_MAXAGE=${GITLAB_HTTPS_HSTS_MAXAGE:-31536000} ## DATABASE DB_TYPE=${DB_TYPE:-} DB_HOST=${DB_HOST:-} DB_PORT=${DB_PORT:-} DB_NAME=${DB_NAME:-} DB_USER=${DB_USER:-} DB_PASS=${DB_PASS:-} DB_POOL=${DB_POOL:-10} ## REDIS REDIS_HOST=${REDIS_HOST:-} REDIS_PORT=${REDIS_PORT:-} ## SIDEKIQ SIDEKIQ_SHUTDOWN_TIMEOUT=${SIDEKIQ_SHUTDOWN_TIMEOUT:-4} SIDEKIQ_CONCURRENCY=${SIDEKIQ_CONCURRENCY:-25} SIDEKIQ_MEMORY_KILLER_MAX_RSS=${SIDEKIQ_MEMORY_KILLER_MAX_RSS:-1000000} ## UNICORN UNICORN_WORKERS=${UNICORN_WORKERS:-3} UNICORN_TIMEOUT=${UNICORN_TIMEOUT:-60} ## GITLAB_TIMEZONE=${GITLAB_TIMEZONE:-UTC} GITLAB_USERNAME_CHANGE=${GITLAB_USERNAME_CHANGE:-true} GITLAB_CREATE_GROUP=${GITLAB_CREATE_GROUP:-true} GITLAB_PROJECTS_ISSUES=${GITLAB_PROJECTS_ISSUES:-true} GITLAB_PROJECTS_MERGE_REQUESTS=${GITLAB_PROJECTS_MERGE_REQUESTS:-true} GITLAB_PROJECTS_WIKI=${GITLAB_PROJECTS_WIKI:-true} GITLAB_PROJECTS_SNIPPETS=${GITLAB_PROJECTS_SNIPPETS:-false} GITLAB_PROJECTS_BUILDS=${GITLAB_PROJECTS_BUILDS:-true} GITLAB_RELATIVE_URL_ROOT=${GITLAB_RELATIVE_URL_ROOT:-} GITLAB_WEBHOOK_TIMEOUT=${GITLAB_WEBHOOK_TIMEOUT:-10} GITLAB_TIMEOUT=${GITLAB_TIMEOUT:-10} ## LFS GITLAB_LFS_ENABLED=${GITLAB_LFS_ENABLED:-true} GITLAB_SECRETS_DB_KEY_BASE=${GITLAB_SECRETS_DB_KEY_BASE:-} GITLAB_NOTIFY_ON_BROKEN_BUILDS=${GITLAB_NOTIFY_ON_BROKEN_BUILDS:-true} GITLAB_NOTIFY_PUSHER=${GITLAB_NOTIFY_PUSHER:-false} GITLAB_ROBOTS_PATH=${GITLAB_ROBOTS_PATH:-${USERCONF_TEMPLATES_DIR}/gitlabhq/robots.txt} ## SSL SSL_SELF_SIGNED=${SSL_SELF_SIGNED:-false} SSL_CERTIFICATE_PATH=${SSL_CERTIFICATE_PATH:-$GITLAB_DATA_DIR/certs/gitlab.crt} SSL_KEY_PATH=${SSL_KEY_PATH:-$GITLAB_DATA_DIR/certs/gitlab.key} SSL_DHPARAM_PATH=${SSL_DHPARAM_PATH:-$GITLAB_DATA_DIR/certs/dhparam.pem} SSL_VERIFY_CLIENT=${SSL_VERIFY_CLIENT:-off} CA_CERTIFICATES_PATH=${CA_CERTIFICATES_PATH:-$GITLAB_DATA_DIR/certs/ca.crt} ## BACKUPS GITLAB_BACKUPS=${GITLAB_BACKUPS:-disable} GITLAB_BACKUP_TIME=${GITLAB_BACKUP_TIME:-04:00} GITLAB_BACKUP_EXPIRY=${GITLAB_BACKUP_EXPIRY:-} GITLAB_BACKUP_ARCHIVE_PERMISSIONS=${GITLAB_BACKUP_ARCHIVE_PERMISSIONS:-0600} case ${GITLAB_BACKUPS} in daily|weekly|monthly) GITLAB_BACKUP_EXPIRY=${GITLAB_BACKUP_EXPIRY:-604800} ;; disable|*) GITLAB_BACKUP_EXPIRY=${GITLAB_BACKUP_EXPIRY:-0} ;; esac ### AWS BACKUPS AWS_BACKUPS=${AWS_BACKUPS:-false} AWS_BACKUP_REGION=${AWS_BACKUP_REGION} AWS_BACKUP_ACCESS_KEY_ID=${AWS_BACKUP_ACCESS_KEY_ID} AWS_BACKUP_SECRET_ACCESS_KEY=${AWS_BACKUP_SECRET_ACCESS_KEY} AWS_BACKUP_BUCKET=${AWS_BACKUP_BUCKET} ## NGINX NGINX_WORKERS=${NGINX_WORKERS:-1} NGINX_ACCEL_BUFFERING=${NGINX_ACCEL_BUFFERING:-no} NGINX_PROXY_BUFFERING=${NGINX_PROXY_BUFFERING:-off} NGINX_MAX_UPLOAD_SIZE=${NGINX_MAX_UPLOAD_SIZE:-20m} GITLAB_MAX_SIZE=$(echo $NGINX_MAX_UPLOAD_SIZE |sed -e "s/^ *\([0-9]*\)[mMkKgG] *$/\1/g" ) case "$NGINX_MAX_UPLOAD_SIZE" in *[kK] ) GITLAB_MAX_SIZE=$(($GITLAB_MAX_SIZE * 1024));; *[mM] ) GITLAB_MAX_SIZE=$(($GITLAB_MAX_SIZE * 1048576));; *[gG] ) GITLAB_MAX_SIZE=$(($GITLAB_MAX_SIZE * 1073741824));; esac case ${GITLAB_HTTPS} in true) NGINX_X_FORWARDED_PROTO=${NGINX_X_FORWARDED_PROTO:-https} ;; *) NGINX_X_FORWARDED_PROTO=${NGINX_X_FORWARDED_PROTO:-\$scheme} ;; esac ## MAIL DELIVERY SMTP_DOMAIN=${SMTP_DOMAIN:-www.gmail.com} SMTP_HOST=${SMTP_HOST:-smtp.gmail.com} SMTP_PORT=${SMTP_PORT:-587} SMTP_USER=${SMTP_USER:-} SMTP_PASS=${SMTP_PASS:-} SMTP_OPENSSL_VERIFY_MODE=${SMTP_OPENSSL_VERIFY_MODE:-none} SMTP_STARTTLS=${SMTP_STARTTLS:-true} SMTP_TLS=${SMTP_TLS:-false} SMTP_CA_ENABLED=${SMTP_CA_ENABLED:-false} SMTP_CA_PATH=${SMTP_CA_PATH:-$GITLAB_DATA_DIR/certs} SMTP_CA_FILE=${SMTP_CA_FILE:-$GITLAB_DATA_DIR/certs/ca.crt} if [[ -n ${SMTP_USER} ]]; then SMTP_ENABLED=${SMTP_ENABLED:-true} SMTP_AUTHENTICATION=${SMTP_AUTHENTICATION:-login} fi SMTP_ENABLED=${SMTP_ENABLED:-false} GITLAB_EMAIL_ENABLED=${GITLAB_EMAIL_ENABLED:-${SMTP_ENABLED}} GITLAB_EMAIL=${GITLAB_EMAIL:-${SMTP_USER}} GITLAB_EMAIL_REPLY_TO=${GITLAB_EMAIL_REPLY_TO:-${GITLAB_EMAIL}} GITLAB_EMAIL=${GITLAB_EMAIL:-example@example.com} GITLAB_EMAIL_REPLY_TO=${GITLAB_EMAIL_REPLY_TO:-noreply@example.com} GITLAB_EMAIL_DISPLAY_NAME=${GITLAB_EMAIL_DISPLAY_NAME:-GitLab} ## INCOMING MAIL IMAP_HOST=${IMAP_HOST:-imap.gmail.com} IMAP_PORT=${IMAP_PORT:-993} IMAP_USER=${IMAP_USER:-} IMAP_PASS=${IMAP_PASS:-} IMAP_SSL=${IMAP_SSL:-true} IMAP_STARTTLS=${IMAP_STARTTLS:-false} IMAP_MAILBOX=${IMAP_MAILBOX:-inbox} if [[ -n ${IMAP_USER} ]]; then IMAP_ENABLED=${IMAP_ENABLED:-true} fi IMAP_ENABLED=${IMAP_ENABLED:-false} GITLAB_INCOMING_EMAIL_ENABLED=${GITLAB_INCOMING_EMAIL_ENABLED:-${IMAP_ENABLED}} GITLAB_INCOMING_EMAIL_ADDRESS=${GITLAB_INCOMING_EMAIL_ADDRESS:-${IMAP_USER}} GITLAB_INCOMING_EMAIL_ADDRESS=${GITLAB_INCOMING_EMAIL_ADDRESS:-reply@example.com} if ! grep -q '+%{key}@' <<< $GITLAB_INCOMING_EMAIL_ADDRESS; then GITLAB_INCOMING_EMAIL_ADDRESS=$(sed 's/@/+%{key}@/' <<< $GITLAB_INCOMING_EMAIL_ADDRESS) fi ## LDAP LDAP_ENABLED=${LDAP_ENABLED:-false} LDAP_HOST=${LDAP_HOST:-} LDAP_PORT=${LDAP_PORT:-389} LDAP_UID=${LDAP_UID:-sAMAccountName} LDAP_METHOD=${LDAP_METHOD:-plain} LDAP_BIND_DN=${LDAP_BIND_DN:-} LDAP_PASS=${LDAP_PASS:-} LDAP_ACTIVE_DIRECTORY=${LDAP_ACTIVE_DIRECTORY:-true} LDAP_BLOCK_AUTO_CREATED_USERS=${LDAP_BLOCK_AUTO_CREATED_USERS:-false} LDAP_BASE=${LDAP_BASE:-} LDAP_USER_FILTER=${LDAP_USER_FILTER:-} LDAP_LABEL=${LDAP_LABEL:-LDAP} LDAP_ALLOW_USERNAME_OR_EMAIL_LOGIN=${LDAP_ALLOW_USERNAME_OR_EMAIL_LOGIN:-} case ${LDAP_UID} in userPrincipalName) LDAP_ALLOW_USERNAME_OR_EMAIL_LOGIN=${LDAP_ALLOW_USERNAME_OR_EMAIL_LOGIN:-false} ;; *) LDAP_ALLOW_USERNAME_OR_EMAIL_LOGIN=${LDAP_ALLOW_USERNAME_OR_EMAIL_LOGIN:-true} esac ## GRAVATAR GITLAB_GRAVATAR_ENABLED=${GITLAB_GRAVATAR_ENABLED:-true} GITLAB_GRAVATAR_HTTP_URL=${GITLAB_GRAVATAR_HTTP_URL:-} GITLAB_GRAVATAR_HTTPS_URL=${GITLAB_GRAVATAR_HTTPS_URL:-} ## OAUTH OAUTH_ENABLED=${OAUTH_ENABLED:-} OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=${OAUTH_AUTO_SIGN_IN_WITH_PROVIDER:-} OAUTH_ALLOW_SSO=${OAUTH_ALLOW_SSO:-false} OAUTH_BLOCK_AUTO_CREATED_USERS=${OAUTH_BLOCK_AUTO_CREATED_USERS:-true} OAUTH_AUTO_LINK_LDAP_USER=${OAUTH_AUTO_LINK_LDAP_USER:-false} ### GOOGLE OAUTH_GOOGLE_API_KEY=${OAUTH_GOOGLE_API_KEY:-} OAUTH_GOOGLE_APP_SECRET=${OAUTH_GOOGLE_APP_SECRET:-} ### FACEBOOK OAUTH_FACEBOOK_API_KEY=${OAUTH_FACEBOOK_API_KEY:-} OAUTH_FACEBOOK_APP_SECRET=${OAUTH_FACEBOOK_APP_SECRET:-} ### TWITTER OAUTH_TWITTER_API_KEY=${OAUTH_TWITTER_API_KEY:-} OAUTH_TWITTER_APP_SECRET=${OAUTH_TWITTER_APP_SECRET:-} ### GITHUB OAUTH_GITHUB_API_KEY=${OAUTH_GITHUB_API_KEY:-} OAUTH_GITHUB_APP_SECRET=${OAUTH_GITHUB_APP_SECRET:-} ### GITLAB OAUTH_GITLAB_API_KEY=${OAUTH_GITLAB_API_KEY:-} OAUTH_GITLAB_APP_SECRET=${OAUTH_GITLAB_APP_SECRET:-} ### BITBUCKET OAUTH_BITBUCKET_API_KEY=${OAUTH_BITBUCKET_API_KEY:-} OAUTH_BITBUCKET_APP_SECRET=${OAUTH_BITBUCKET_APP_SECRET:-} ### CROWD OAUTH_CROWD_SERVER_URL=${OAUTH_CROWD_SERVER_URL:-} OAUTH_CROWD_APP_NAME=${OAUTH_CROWD_APP_NAME:-} OAUTH_CROWD_APP_PASSWORD=${OAUTH_CROWD_APP_PASSWORD:-} ### SAML case $GITLAB_HTTPS in true) OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=${OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL:-https://${GITLAB_HOST}/users/auth/saml/callback} OAUTH_SAML_ISSUER=${OAUTH_SAML_ISSUER:-https://${GITLAB_HOST}} ;; false) OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=${OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL:-http://${GITLAB_HOST}/users/auth/saml/callback} OAUTH_SAML_ISSUER=${OAUTH_SAML_ISSUER:-http://${GITLAB_HOST}} ;; esac OAUTH_SAML_LABEL=${OAUTH_SAML_LABEL:-'Our SAML Provider'} OAUTH_SAML_IDP_CERT_FINGERPRINT=${OAUTH_SAML_IDP_CERT_FINGERPRINT:-} OAUTH_SAML_IDP_SSO_TARGET_URL=${OAUTH_SAML_IDP_SSO_TARGET_URL:-} OAUTH_SAML_NAME_IDENTIFIER_FORMAT=${OAUTH_SAML_NAME_IDENTIFIER_FORMAT:-urn:oasis:names:tc:SAML:2.0:nameid-format:transient} ## ANALYTICS ### GOOGLE GOOGLE_ANALYTICS_ID=${GOOGLE_ANALYTICS_ID:-} ### PIWIK PIWIK_URL=${PIWIK_URL:-} PIWIK_SITE_ID=${PIWIK_SITE_ID:-}