= form_for @application_setting, url: admin_application_settings_path, html: { class: 'form-horizontal fieldset-form' } do |f| = form_errors(@application_setting) - if Gitlab.config.registry.enabled %fieldset %legend Container Registry .form-group = f.label :container_registry_token_expire_delay, 'Authorization token duration (minutes)', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :container_registry_token_expire_delay, class: 'form-control' %fieldset %legend Profiling - Performance Bar %p Enable the Performance Bar for a given group. = link_to icon('question-circle'), help_page_path('administration/monitoring/performance/performance_bar') .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :performance_bar_enabled do = f.check_box :performance_bar_enabled Enable the Performance Bar .form-group = f.label :performance_bar_allowed_group_id, 'Allowed group', class: 'control-label col-sm-2' .col-sm-10 = f.text_field :performance_bar_allowed_group_id, class: 'form-control', placeholder: 'my-org/my-group', value: @application_setting.performance_bar_allowed_group&.full_path %fieldset %legend Background Jobs %p These settings require a = link_to 'restart', help_page_path('administration/restart_gitlab') to take effect. .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :sidekiq_throttling_enabled do = f.check_box :sidekiq_throttling_enabled Enable Sidekiq Job Throttling .help-block Limit the amount of resources slow running jobs are assigned. .form-group = f.label :sidekiq_throttling_queues, 'Sidekiq queues to throttle', class: 'control-label col-sm-2' .col-sm-10 = f.select :sidekiq_throttling_queues, sidekiq_queue_options_for_select, { include_hidden: false }, multiple: true, class: 'select2 select-wide', data: { field: 'sidekiq_throttling_queues' } .help-block Choose which queues you wish to throttle. .form-group = f.label :sidekiq_throttling_factor, 'Throttling Factor', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :sidekiq_throttling_factor, class: 'form-control', min: '0.01', max: '0.99', step: '0.01' .help-block The factor by which the queues should be throttled. A value between 0.0 and 1.0, exclusive. %fieldset %legend Spam and Anti-bot Protection .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :recaptcha_enabled do = f.check_box :recaptcha_enabled Enable reCAPTCHA %span.help-block#recaptcha_help_block Helps prevent bots from creating accounts .form-group = f.label :recaptcha_site_key, 'reCAPTCHA Site Key', class: 'control-label col-sm-2' .col-sm-10 = f.text_field :recaptcha_site_key, class: 'form-control' .help-block Generate site and private keys at %a{ href: 'http://www.google.com/recaptcha', target: 'blank' } http://www.google.com/recaptcha .form-group = f.label :recaptcha_private_key, 'reCAPTCHA Private Key', class: 'control-label col-sm-2' .col-sm-10 = f.text_field :recaptcha_private_key, class: 'form-control' .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :akismet_enabled do = f.check_box :akismet_enabled Enable Akismet %span.help-block#akismet_help_block Helps prevent bots from creating issues .form-group = f.label :akismet_api_key, 'Akismet API Key', class: 'control-label col-sm-2' .col-sm-10 = f.text_field :akismet_api_key, class: 'form-control' .help-block Generate API key at %a{ href: 'http://www.akismet.com', target: 'blank' } http://www.akismet.com .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :unique_ips_limit_enabled do = f.check_box :unique_ips_limit_enabled Limit sign in from multiple ips %span.help-block#unique_ip_help_block Helps prevent malicious users hide their activity .form-group = f.label :unique_ips_limit_per_user, 'IPs per user', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :unique_ips_limit_per_user, class: 'form-control' .help-block Maximum number of unique IPs per user .form-group = f.label :unique_ips_limit_time_window, 'IP expiration time', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :unique_ips_limit_time_window, class: 'form-control' .help-block How many seconds an IP will be counted towards the limit %fieldset %legend Abuse reports .form-group = f.label :admin_notification_email, 'Abuse reports notification email', class: 'control-label col-sm-2' .col-sm-10 = f.text_field :admin_notification_email, class: 'form-control' .help-block Abuse reports will be sent to this address if it is set. Abuse reports are always available in the admin area. %fieldset %legend Error Reporting and Logging .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :sentry_enabled do = f.check_box :sentry_enabled Enable Sentry .help-block %p This setting requires a restart to take effect. Sentry is an error reporting and logging tool which is currently not shipped with GitLab, get it here: %a{ href: 'https://getsentry.com', target: '_blank', rel: 'noopener noreferrer' } https://getsentry.com .form-group = f.label :sentry_dsn, 'Sentry DSN', class: 'control-label col-sm-2' .col-sm-10 = f.text_field :sentry_dsn, class: 'form-control' .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :clientside_sentry_enabled do = f.check_box :clientside_sentry_enabled Enable Clientside Sentry .help-block Sentry can also be used for reporting and logging clientside exceptions. %a{ href: 'https://sentry.io/for/javascript/', target: '_blank', rel: 'noopener noreferrer' } https://sentry.io/for/javascript/ .form-group = f.label :clientside_sentry_dsn, 'Clientside Sentry DSN', class: 'control-label col-sm-2' .col-sm-10 = f.text_field :clientside_sentry_dsn, class: 'form-control' %fieldset %legend Repository Storage .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :hashed_storage_enabled do = f.check_box :hashed_storage_enabled Create new projects using hashed storage paths .help-block Enable immutable, hash-based paths and repository names to store repositories on disk. This prevents repositories from having to be moved or renamed when the Project URL changes and may improve disk I/O performance. %em (EXPERIMENTAL) .form-group = f.label :repository_storages, 'Storage paths for new projects', class: 'control-label col-sm-2' .col-sm-10 = f.select :repository_storages, repository_storages_options_for_select(@application_setting.repository_storages), {include_hidden: false}, multiple: true, class: 'form-control' .help-block Manage repository storage paths. Learn more in the = succeed "." do = link_to "repository storages documentation", help_page_path("administration/repository_storages") %fieldset %legend Git Storage Circuitbreaker settings .form-group = f.label :circuitbreaker_check_interval, _('Check interval'), class: 'control-label col-sm-2' .col-sm-10 = f.number_field :circuitbreaker_check_interval, class: 'form-control' .help-block = circuitbreaker_check_interval_help_text .form-group = f.label :circuitbreaker_access_retries, _('Number of access attempts'), class: 'control-label col-sm-2' .col-sm-10 = f.number_field :circuitbreaker_access_retries, class: 'form-control' .help-block = circuitbreaker_access_retries_help_text .form-group = f.label :circuitbreaker_storage_timeout, _('Seconds to wait for a storage access attempt'), class: 'control-label col-sm-2' .col-sm-10 = f.number_field :circuitbreaker_storage_timeout, class: 'form-control' .help-block = circuitbreaker_storage_timeout_help_text .form-group = f.label :circuitbreaker_failure_count_threshold, _('Maximum git storage failures'), class: 'control-label col-sm-2' .col-sm-10 = f.number_field :circuitbreaker_failure_count_threshold, class: 'form-control' .help-block = circuitbreaker_failure_count_help_text .form-group = f.label :circuitbreaker_failure_reset_time, _('Seconds before reseting failure information'), class: 'control-label col-sm-2' .col-sm-10 = f.number_field :circuitbreaker_failure_reset_time, class: 'form-control' .help-block = circuitbreaker_failure_reset_time_help_text %fieldset %legend Repository Checks .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :repository_checks_enabled do = f.check_box :repository_checks_enabled Enable Repository Checks .help-block GitLab will periodically run %a{ href: 'https://www.kernel.org/pub/software/scm/git/docs/git-fsck.html', target: 'blank' } 'git fsck' in all project and wiki repositories to look for silent disk corruption issues. .form-group .col-sm-offset-2.col-sm-10 = link_to 'Clear all repository checks', clear_repository_check_states_admin_application_settings_path, data: { confirm: 'This will clear repository check states for ALL projects in the database. This cannot be undone. Are you sure?' }, method: :put, class: "btn btn-sm btn-remove" .help-block If you got a lot of false alarms from repository checks you can choose to clear all repository check information from the database. - if koding_enabled? %fieldset %legend Koding .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :koding_enabled do = f.check_box :koding_enabled Enable Koding .help-block Koding integration has been deprecated since GitLab 10.0. If you disable your Koding integration, you will not be able to enable it again. .form-group = f.label :koding_url, 'Koding URL', class: 'control-label col-sm-2' .col-sm-10 = f.text_field :koding_url, class: 'form-control', placeholder: 'http://gitlab.your-koding-instance.com:8090' .help-block Koding has integration enabled out of the box for the %strong gitlab team, and you need to provide that team's URL here. Learn more in the = succeed "." do = link_to "Koding administration documentation", help_page_path("administration/integration/koding") %fieldset %legend PlantUML .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :plantuml_enabled do = f.check_box :plantuml_enabled Enable PlantUML .form-group = f.label :plantuml_url, 'PlantUML URL', class: 'control-label col-sm-2' .col-sm-10 = f.text_field :plantuml_url, class: 'form-control', placeholder: 'http://gitlab.your-plantuml-instance.com:8080' .help-block Allow rendering of = link_to "PlantUML", "http://plantuml.com" diagrams in Asciidoc documents using an external PlantUML service. %fieldset %legend#usage-statistics Usage statistics .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :version_check_enabled do = f.check_box :version_check_enabled Enable version check .help-block GitLab will inform you if a new version is available. = link_to 'Learn more', help_page_path("user/admin_area/settings/usage_statistics", anchor: "version-check") about what information is shared with GitLab Inc. .form-group .col-sm-offset-2.col-sm-10 - can_be_configured = @application_setting.usage_ping_can_be_configured? .checkbox = f.label :usage_ping_enabled do = f.check_box :usage_ping_enabled, disabled: !can_be_configured Enable usage ping .help-block - if can_be_configured To help improve GitLab and its user experience, GitLab will periodically collect usage information. = link_to 'Learn more', help_page_path("user/admin_area/settings/usage_statistics", anchor: "usage-ping") about what information is shared with GitLab Inc. Visit = link_to 'Cohorts', admin_cohorts_path(anchor: 'usage-ping') to see the JSON payload sent. - else The usage ping is disabled, and cannot be configured through this form. For more information, see the documentation on = succeed '.' do = link_to 'deactivating the usage ping', help_page_path('user/admin_area/settings/usage_statistics', anchor: 'deactivate-the-usage-ping') %fieldset %legend Email .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :email_author_in_body do = f.check_box :email_author_in_body Include author name in notification email body .help-block Some email servers do not support overriding the email sender name. Enable this option to include the name of the author of the issue, merge request or comment in the email body instead. .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :html_emails_enabled do = f.check_box :html_emails_enabled Enable HTML emails .help-block By default GitLab sends emails in HTML and plain text formats so mail clients can choose what format to use. Disable this option if you only want to send emails in plain text format. %fieldset %legend Automatic Git repository housekeeping .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :housekeeping_enabled do = f.check_box :housekeeping_enabled Enable automatic repository housekeeping (git repack, git gc) .help-block If you keep automatic housekeeping disabled for a long time Git repository access on your GitLab server will become slower and your repositories will use more disk space. We recommend to always leave this enabled. .checkbox = f.label :housekeeping_bitmaps_enabled do = f.check_box :housekeeping_bitmaps_enabled Enable Git pack file bitmap creation .help-block Creating pack file bitmaps makes housekeeping take a little longer but bitmaps should accelerate 'git clone' performance. .form-group = f.label :housekeeping_incremental_repack_period, 'Incremental repack period', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :housekeeping_incremental_repack_period, class: 'form-control' .help-block Number of Git pushes after which an incremental 'git repack' is run. .form-group = f.label :housekeeping_full_repack_period, 'Full repack period', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :housekeeping_full_repack_period, class: 'form-control' .help-block Number of Git pushes after which a full 'git repack' is run. .form-group = f.label :housekeeping_gc_period, 'Git GC period', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :housekeeping_gc_period, class: 'form-control' .help-block Number of Git pushes after which 'git gc' is run. %fieldset %legend Gitaly Timeouts .form-group = f.label :gitaly_timeout_default, 'Default Timeout Period', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :gitaly_timeout_default, class: 'form-control' .help-block Timeout for Gitaly calls from the GitLab application (in seconds). This timeout is not enforced for git fetch/push operations or Sidekiq jobs. .form-group = f.label :gitaly_timeout_fast, 'Fast Timeout Period', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :gitaly_timeout_fast, class: 'form-control' .help-block Fast operation timeout (in seconds). Some Gitaly operations are expected to be fast. If they exceed this threshold, there may be a problem with a storage shard and 'failing fast' can help maintain the stability of the GitLab instance. .form-group = f.label :gitaly_timeout_medium, 'Medium Timeout Period', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :gitaly_timeout_medium, class: 'form-control' .help-block Medium operation timeout (in seconds). This should be a value between the Fast and the Default timeout. %fieldset %legend Web terminal .form-group = f.label :terminal_max_session_time, 'Max session time', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :terminal_max_session_time, class: 'form-control' .help-block Maximum time for web terminal websocket connection (in seconds). 0 for unlimited. %fieldset %legend Real-time features .form-group = f.label :polling_interval_multiplier, 'Polling interval multiplier', class: 'control-label col-sm-2' .col-sm-10 = f.text_field :polling_interval_multiplier, class: 'form-control' .help-block Change this value to influence how frequently the GitLab UI polls for updates. If you set the value to 2 all polling intervals are multiplied by 2, which means that polling happens half as frequently. The multiplier can also have a decimal value. The default value (1) is a reasonable choice for the majority of GitLab installations. Set to 0 to completely disable polling. = link_to icon('question-circle'), help_page_path('administration/polling') %fieldset %legend Performance optimization .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :authorized_keys_enabled do = f.check_box :authorized_keys_enabled Write to "authorized_keys" file .help-block By default, we write to the "authorized_keys" file to support Git over SSH without additional configuration. GitLab can be optimized to authenticate SSH keys via the database file. Only uncheck this if you have configured your OpenSSH server to use the AuthorizedKeysCommand. Click on the help icon for more details. = link_to icon('question-circle'), help_page_path('administration/operations/fast_ssh_key_lookup') %fieldset %legend User and IP Rate Limits .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :throttle_unauthenticated_enabled do = f.check_box :throttle_unauthenticated_enabled Enable unauthenticated request rate limit %span.help-block Helps reduce request volume (e.g. from crawlers or abusive bots) .form-group = f.label :throttle_unauthenticated_requests_per_period, 'Max requests per period per IP', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :throttle_unauthenticated_requests_per_period, class: 'form-control' .form-group = f.label :throttle_unauthenticated_period_in_seconds, 'Rate limit period in seconds', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :throttle_unauthenticated_period_in_seconds, class: 'form-control' .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :throttle_authenticated_api_enabled do = f.check_box :throttle_authenticated_api_enabled Enable authenticated API request rate limit %span.help-block Helps reduce request volume (e.g. from crawlers or abusive bots) .form-group = f.label :throttle_authenticated_api_requests_per_period, 'Max requests per period per user', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :throttle_authenticated_api_requests_per_period, class: 'form-control' .form-group = f.label :throttle_authenticated_api_period_in_seconds, 'Rate limit period in seconds', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :throttle_authenticated_api_period_in_seconds, class: 'form-control' .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :throttle_authenticated_web_enabled do = f.check_box :throttle_authenticated_web_enabled Enable authenticated web request rate limit %span.help-block Helps reduce request volume (e.g. from crawlers or abusive bots) .form-group = f.label :throttle_authenticated_web_requests_per_period, 'Max requests per period per user', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :throttle_authenticated_web_requests_per_period, class: 'form-control' .form-group = f.label :throttle_authenticated_web_period_in_seconds, 'Rate limit period in seconds', class: 'control-label col-sm-2' .col-sm-10 = f.number_field :throttle_authenticated_web_period_in_seconds, class: 'form-control' %fieldset %legend Outbound requests .form-group .col-sm-offset-2.col-sm-10 .checkbox = f.label :allow_local_requests_from_hooks_and_services do = f.check_box :allow_local_requests_from_hooks_and_services Allow requests to the local network from hooks and services .form-actions = f.submit 'Save', class: 'btn btn-save'