Configuration options for the GitLab Linux package | GitLab


本站和网页 https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Configuration options for the GitLab Linux package | GitLab
Docs
What's new?
Get free trial
GitLab Docs
Learn GitLab with tutorials
Choose a subscription
GitLab SaaS subscriptions
Self-managed subscriptions
GitLab Dedicated subscriptions
Compare self-managed to SaaS
Quarterly reconciliation
Storage usage quota
CI/CD minutes quota
Free user limit
Activate Enterprise Edition
Features available to Starter and Bronze subscribers
Install GitLab
Requirements
PostgreSQL extensions
Installation methods
Linux package (Omnibus)
Architecture
Omnibus packages and images
Package information
Package defaults
Package licensing
Package signatures
PostgreSQL versions
Installation
Deprecation policy
Supported OSes
Manual installation
Install JiHu Edition
Configure
Action Cable
Backups
Configuration options
Custom environment variables
Database
GitLab Mattermost
Grafana
High availability roles
Logs
Microsoft Graph Mailer
NGINX
Gitaly Cluster
Prometheus
Puma
Raspberry Pi
Redis
SMTP
Rake tasks
SSL
Troubleshooting SSL
DNS
Image scaling
Memory-constrained environments
Release process
Maintain
Troubleshooting
Helm chart (Kubernetes)
Install
Test the GitLab chart on GKE or EKS
Install prerequisites
Chart versions
Secrets
RBAC
Storage
TLS
Set up cloud resources
Azure Kubernetes Service
Amazon EKS
Google Kubernetes Engine
OpenShift Origin
Oracle Container Engine for Kubernetes
Deploy the Helm chart
Deployment options
Configure
Globals
GitLab subcharts
Gitaly chart
GitLab Exporter chart
GitLab Grafana chart
GitLab Pages chart
GitLab Runner chart
GitLab Shell chart
KAS chart
Mailroom chart
Migrations chart
Praefect chart
Sidekiq chart
Spamcheck chart
Toolbox chart
Webservice chart
Minio chart
Nginx chart
Registry chart
Advanced
Custom Docker images
External database
External Gitaly
External GitLab Pages
External Mattermost
External Nginx
External object storage
External Redis
FIPS-compliant images
Geo
Internal TLS between services
Persistent volumes
Red Hat UBI-based images
Upgrade
Database upgrade
Release notes 6.0
Release notes 5.0
Release notes 4.0
Release notes 3.0
Release notes 2.0
Release notes 1.0
Upgrade old versions
Backup and Restore
Backup
Restore
Migrate from Omnibus
Migrate from the Linux package
Migrate to the Linux package
Migrate between Helm versions
Migrate to MinIO
Uninstall
Troubleshooting
Operator (Kubernetes)
Install
Backup and restore
Upgrade GitLab
Support for Git over SSH
Upgrade the Operator
Security context constraints
Docker
Self-compiled (source)
Install under a relative URL
Troubleshooting
Cloud providers guides
Azure
Google Cloud Platform (GCP)
Amazon Web Services (AWS)
EKS best practices
GitLab SRE for AWS
GitLab Cloud Native Hybrid on AWS EKS
Manual install on AWS
Offline GitLab
Offline GitLab installation
Reference Architectures
Up to 1,000 users
Up to 2,000 users
Up to 3,000 users
Up to 5,000 users
Up to 10,000 users
Up to 25,000 users
Up to 50,000 users
Steps after installing
Upgrade GitLab
Plan an upgrade
Background migrations
Upgrade Omnibus instance
Convert to Omnibus
Convert to Enterprise Edition
Package signatures
GitLab 15 changes
GitLab 14 changes
GitLab 13 changes
GitLab 12 changes
GitLab 11 changes
GitLab 10 changes
Downgrade
Upgrade source instance
Patch versions
Change from Community Edition to Enterprise Edition
Zero-downtime upgrades for multi-node instances
Upgrades with downtime for multi-node instances
Change from Enterprise Edition to Community Edition
Releases and maintenance
Deprecations by version
Removals by version
What's new
Install GitLab Runner
Linux
Linux manual install
FreeBSD
macOS
Windows
Docker
Helm chart
GitLab agent
Operator
Bleeding edge releases
Configure GitLab Runner
Advanced config
Autoscale config
Autoscale on AWS EC2
Autoscale on AWS Fargate
Commands
Feature flags
macOS setup
Runner Operator on OpenShift
Running behind a proxy
Rate limited requests
Self-signed certificates
System services
Speed up job execution
Troubleshooting
Integrate applications
Akismet
Arkose Protect
Datadog
Elasticsearch
Troubleshooting
GitLab CLI (glab)
Gitpod
Jira integrations
Configure the Jira integration
GitLab for Jira app
Jira DVCS connector
Jira Development Panel
Create Jira Server user
Create Jira Cloud API token
Jira integration issue management
Troubleshooting
Kroki diagrams
Mailgun
PlantUML
Project integration management
Project integrations
Asana
Bamboo CI
Discord
Emails on push
GitHub
Google Chat
Harbor
Irker
Jenkins
Mattermost notifications
Mattermost slash commands
Microsoft Teams
Mock CI
Pipeline status emails
Pivotal Tracker
Prometheus
Sample Prometheus data Rake task
Pumble
ServiceNow
Shimo
Slack notifications
Slack slash commands
Slash commands
Slack application
Unify Circuit
Webex Teams
Webhooks
Webhook events
Rake tasks
External issue tracker
Bugzilla
Custom issue tracker
IBM Engineering Workflow Management
Redmine
YouTrack
ZenTao
Gmail actions buttons
reCAPTCHA
Security partners
Sourcegraph
Trello
Visual Studio Code extension
Administer GitLab
Get started
Configure your installation
Authentication and authorization
AliCloud
Atlassian Crowd (deprecated)
Atlassian
Auth0
Authentiq
AWS Cognito
Azure
Bitbucket Cloud
CAS (deprecated)
DingTalk
Facebook
Generic OAuth2
GitHub
GitLab.com
Google
JWT
Kerberos
LDAP
LDAP synchronization
LDAP (Google Secure)
Rake tasks
Troubleshooting
OAuth service provider
OmniAuth
OpenID Connect OmniAuth
OpenID Connect identity
Salesforce
SAML
Smartcard
Twitter
Vault
CI/CD
Configuration and Admin Area
Admin Area settings
Account and limit settings
Appearance
Authentication
CI/CD
Application cache interval
Custom instance-level project templates
Deprecated API rate limits
Diff limits
Email
External authorization
External pipeline validation
Enable features with feature flags
Available GitLab feature flags
Federated Learning of Cohorts (FLoC)
Geo sites
Git abuse rate limit
Git LFS administration
GitLab Pages
GitLab Pages for source installations
Health Check
Incident management rate limits
Instance template repository
Job artifacts
Job logs
Labels
Log system
Parse logs with jq
Trace logs based on correlation ID
Maintenance Mode
Merge request approvals
Package Registry rate limits
Polling interval multiplier
Protected paths
Push event activities limit
Rate limits on Repository files API
Rate limits on Git LFS
Rate limits on issue creation
Rate limits on raw endpoints
Rate limits on note creation
Rate limits on Users API
Rate limits on pipeline creation
Reply by email
Repository checks
Sign-in and help page text
Sign-in restrictions
Sign-up restrictions
Spamcheck
System Hooks
Terms of service and privacy policy
Third-party offers
Timezone
Uploads
Uploads migration Rake tasks
Uploads sanitization Rake tasks
User Cohorts
User and IP rate limits
Visibility and access controls
Consul
Environment variables
File hooks
Git protocol v2
Incoming email
Instance limits
Instance Review
PostgreSQL
Replication and failover
Standalone packaged database
PgBouncer
Database Load Balancing
External database service
Move instances
Multiple databases
Load balancer
NFS
Postfix
Redis
Configure the bundled Redis for replication
Configure your own Redis for replication
Standalone Redis configuration
Troubleshooting
Sidekiq
Multiple Sidekiq processes
Processing specific job classes
Sidekiq MemoryKiller
Sidekiq health check
Sidekiq job migration
Sidekiq job size limits
Troubleshooting
S/MIME signing
Repository storage
Repository storage types
Import repositories
Gitaly and Gitaly Cluster
Configure Gitaly
Configure Gitaly Cluster
Monitoring
Recovery options
Troubleshooting
Gitaly reference
Praefect Rake tasks
Gitaly timeouts
Repository storage Rake tasks
List repositories Rake task
Migrate snippets Rake tasks
Object storage
Merge request diffs storage
Static objects external storage
Geo
Setting up Geo
Database replication
External PostgreSQL instances
Configuration
Using a Geo site
Configure secondary proxying
Location-aware public URL
Upgrading Geo sites
Version-specific upgrades
Using object storage
Container registry for a secondary site
Geo for multiple servers
Geo security review
Location-aware Git remote URLs
Tuning Geo
Rake tasks
Disable Geo
Removing a Geo site
Supported data types
Frequently asked questions
Troubleshooting
Validation tests
Geo Glossary
Disaster recovery (Geo)
Planned failover
Bring primary back
Automatic background verification
Agent server for Kubernetes
Server hooks
Terraform state
Packages
Container Registry
Dependency Proxy
Web terminals
Wikis
Invalidate Markdown cache
Issue closing pattern
Snippets
Host the product documentation
Maintain your installation
Housekeeping
Clean up with Rake tasks
Maintenance Rake tasks
Integrity check Rake task
Fast SSH key lookup
Filesystem benchmarking
Rails console
Use SSH certificates
Enable encrypted configuration
Rake tasks
Backup and restore
Back up GitLab
Restore GitLab
Inactive project deletion
Move repositories
Read-only state
Restart GitLab
Secure your installation
Limits on SSH keys
Rate limits
Webhooks
Information exclusivity
Manage the CRIME vulnerability
Enforce two-factor authentication (2FA)
User email confirmation
Runners
Proxying assets
CI/CD variables
Token overview
Compliance features
Respond to security incidents
Administer users
Reset user password
Unlock a user
Review abuse reports
User file uploads
Password storage
Credentials inventory
Custom password length limits
Generated passwords and integrated authentication
Global user settings
Moderate users
Auditor users
External users
Configure the libravatar service
Broadcast messages
Email from GitLab
Rake tasks
Use GitLab
Set up your organization
Namespaces
Members
Groups
Manage groups
Group access and permissions
Custom group-level project templates
Group access tokens
Group import/export
Migrating groups
SAML Group Sync
Compliance frameworks
Troubleshooting SAML
SAML SSO for GitLab.com groups
Configure SCIM
Example group SAML and SCIM configurations
Troubleshooting SCIM
Subgroups
Move a personal project to a group
Git abuse rate limit
User account options
Active sessions
Contributions calendar
Permissions and roles
Personal access tokens
Profile preferences
Notification emails
User passwords
Two-factor authentication
Report abuse
Delete account
SSH keys
GitLab.com settings
Organize work with projects
Manage projects
Project visibility
Project settings
Project access tokens
Share projects
Reserved project and group names
Search
Advanced Search
Badges
Code intelligence
Compliance
License Compliance
SPDX license list import Rake task
Compliance report
Description templates
Deploy keys
Deploy tokens
File finder
GitLab Pages
Tutorial: Create a GitLab Pages website
Create by using a CI/CD template
Create by using a forked sample project
Create by using a project template
Create a Pages deployment for your static site
Public folder configuration
Default domains, URLs, and baseurls
Custom domains and SSL/TLS certificates
DNS concepts
SSL/TLS concepts
Let's Encrypt integration
Access control
Redirects
Exploring GitLab Pages
Migrating projects
Bitbucket Cloud
Bitbucket Server
ClearCase
CVS
FogBugz
GitHub
GitHub import Rake task
GitLab.com
Gitea
Jira
Perforce Helix
Phabricator
Repo by manifest file
Repo by URL
TFVC
Migrate projects using file exports
Troubleshooting
Rate limits for project and group imports and exports
Decompressed archive size limits
Rake tasks
Plan and track work
Epics
Manage epics
Linked epics
Epic boards
Issues
Create issues
Manage issues
Award emojis
Confidential issues
Crosslinking issues
CSV export
CSV import
Design management
Due dates
Issue boards
Multiple assignees
Linked issues
Service Desk
Sorting and ordering issue lists
Weight
Zoom meetings in issues
Labels
Comments and threads
Customer relations (CRM)
Iterations
Tutorial: Use GitLab to run an Agile iteration
Milestones
Burndown and burnup charts
Objectives and key results (OKR)
Requirements
Roadmaps
Planning hierarchies
Tasks
Time tracking
Wikis
Group wikis
Keyboard shortcuts
Quick actions
Autocomplete characters
Markdown
AsciiDoc
CSV files
To-Do List
Using Git
Tutorial: Make your first Git commit
Terminology
Installing Git
Command line Git
Feature branch workflow
Feature branch development
GitLab Flow
Add file to repository
Bisect
Cherry-pick a commit
Feature branching
File editing
Git add
Git log
Git stash
Partial clone
Rebase, force-push, merge conflicts
Roll back commits
Subtree
Tags
Troubleshooting
Undo with Git
Unstage
Useful commands
Push options
Build your application
Repositories
Code owners
Snippets
Branches
Default branch
Forking workflow
Git attributes
Git LFS
Jupyter notebook files
Locked files
File Blame
File History
Mirroring
Bidirectional mirroring
Pull mirroring
Push mirroring
Protected branches
Protected tags
Push rules
Reduce repository size
Sign commits with GPG
Sign commits with SSH keys
Sign commits and tags with X.509
X509 signatures Rake task
Syntax highlighting
Web Editor
Web IDE
Web IDE Beta
Remote Development
Managing large repositories
Merge requests
Get started
Approvals
Approval rules
Approval settings
Changes
Cherry pick changes
Collaborate across forks
Commit message templates
Confidential merge requests
Create merge requests
Draft merge requests
Export merge requests to CSV
External status checks
Merge methods
Squash and merge
Merge request dependencies
Merge request widgets
Merge when pipeline succeeds
Merge conflicts
Reverting changes
Reviewing and managing merge requests
Suggestions
Versions
Workflows
CI/CD
Tutorial: Create your first pipeline
CI/CD concepts
Migrate from CircleCI
Migrate from Jenkins
Enable or disable CI/CD
Pipelines
Scheduled pipelines
Trigger a pipeline
Customize pipeline configuration
Pipeline architectures
Pipeline efficiency
Pipeline resource groups
Directed acyclic graph (DAG)
Downstream pipelines
Merge request pipelines
Merged results pipelines
Merge trains
Jobs
Choose when jobs run
CI/CD job token
Access a terminal for a running job
Format scripts and job logs
Git submodules
Variables
Predefined variables
Where variables can be used
Secure Files
Cache and artifacts
Job artifacts
Pipeline artifacts
.gitlab-ci.yml
.gitlab-ci.yml reference
Optimize your YAML files
Validate syntax
Pipeline Editor
Artifacts reports
Include examples
Workflow examples
Docker
Run CI/CD jobs in Docker containers
Use Docker to build Docker images
Use kaniko to build Docker images
Services
MySQL service
PostgreSQL service
Redis service
GitLab as a service
Auto DevOps
Requirements
Stages
Customize
CI/CD variables
Multiple Kubernetes clusters
Upgrade PostgreSQL
Prepare for deployment
Upgrade Auto Deploy dependencies
Deploy to GKE
Deploy to ECS
Deploy to EC2
Troubleshooting
Testing
Accessibility testing
Browser performance testing
Code quality
Fail fast testing
Load performance testing
Metrics reports
Test cases
Test coverage visualization
Unit test reports
Unit test report examples
SSH keys
External secrets
Connect to cloud services
Authenticating with HashiCorp Vault
Configure OpenID Connect in AWS
Configure OpenID Connect in Azure
Configure OpenID Connect with Google Cloud
ChatOps
Mobile DevOps
External repository integrations
Bitbucket Cloud
GitHub
CI/CD examples
Deployment with Dpl
End-to-end testing
NPM with semantic-release
PHP with PHPunit and atoum
PHP with NPM and SCP
PHP with Laravel and Envoy
Troubleshooting
Runners
Runner SaaS
Linux
macOS
VM instances
Code signing
Windows
The scope of runners
Register a runner
Examples
Runner executors
Custom
libvirt
LXD
Docker
Docker Machine
Kubernetes
Shell
Supported shells
SSH
Parallels
Virtual Box
Configure runners
Scale a fleet of runners
Best practices for large repositories
Packages & Registries
Package Registry
Supported package managers
Supported hash types
Composer
Conan
Debian
Go Proxy
Helm
Maven
npm
NuGet
PyPI
Ruby gems
Yarn
Generic
Gradle
Store all packages in one project
Monorepo workflows
Reduce Package Registry storage
Build packages
Container Registry
Reduce Container Registry storage
Reduce Container Registry data transfers
Troubleshooting
Harbor Registry
Infrastructure Registry
Terraform module registry
Dependency Proxy
Reduce Dependency Proxy storage
Secure your application
Get started
Security Configuration
Container Scanning
Dependency Scanning
Dependency Scanning Analyzers
Dependency List
Static Application Security Testing
Customize rulesets
SAST Analyzers
Infrastructure as Code (IaC) Scanning
Secret Detection
Post-processing and revocation
Dynamic Application Security Testing (DAST)
DAST browser-based analyzer
Vulnerability checks
Troubleshooting
DAST proxy-based analyzer
Troubleshooting
Authentication
DAST API
Run DAST offline
API Fuzzing
HTTP Archive format
Coverage-guided fuzz testing
Security Dashboard
Offline Environments
Vulnerability Report
View vulnerabilities in a pipeline
Generate test vulnerabilities
Vulnerability Page
Vulnerability severity levels
CVE ID requests
Policies
Scan execution policies
Scan result policies
Security scanner integration
Secure and Protect Terminology
Deploy and release your application
Environments and deployments
Environments Dashboard
Operations Dashboard
Protected environments
Deployment safety
Deployment approvals
Roll out an application incrementally
Deploy to AWS
Deploy to Amazon ECS
Deploy to Heroku
Releases
Release CI/CD examples
Release CLI tool
Release fields
Review Apps
Feature flags
Monitor application performance
Error Tracking
Incident management
Alerts
Integrations
Incidents
Manage incidents
Timeline events
Linked resources
Incident management for Slack
On-call schedules
Escalation policies
Paging and notifications
Status page
Metrics dashboard
Custom dashboards
GitLab-defined metrics dashboards
Dashboard YAML properties
Dashboard settings
Panel types for dashboards
Unit formats reference
Using variables
Templates for custom dashboards
Templating variables for dashboards
Embedding metrics in Grafana
Embedding metrics in Markdown
Metrics library
Monitoring AWS resources
HAProxy
Kubernetes
NGINX
NGINX Ingress
NGINX Ingress VTS
Set up alerts for metrics
Monitor runner performance
Manage your infrastructure
Infrastructure as Code
Terraform state
Terraform integration in merge requests
Terraform template recipes
Troubleshooting
Create Kubernetes clusters
Amazon EKS
Google GKE
Civo
Connect Kubernetes clusters
GitOps workflow
Use Helm charts
Manage Kubernetes secrets
Track cluster resources
GitLab CI/CD workflow
Manage cluster applications
Install the agent for Kubernetes
Work with the agent for Kubernetes
Operational container scanning
Troubleshooting
Migrate to the agent for Kubernetes
Runbooks
Analyze GitLab usage
CI/CD analytics
Code review analytics
Contribution analytics
DevOps adoption by instance
DevOps adoption by group
DORA metrics
Insights for projects
Insights for groups
Issue analytics for projects
Issue analytics for groups
Merge request analytics
Product analytics
Productivity analytics
Repository analytics
Repository analytics for groups
Usage trends
Value stream analytics for projects
Value stream analytics for groups
Instance-level analytics
Audit events
Audit event streaming
Audit reports
Metrics
Configure GitLab
Configure Grafana
GitHub imports
GitLab exporter
GitLab Prometheus metrics
Self monitoring project
IP allowlist endpoints
Node exporter
PGBouncer exporter
PostgreSQL server exporter
Prometheus
Performance bar
Performance monitoring
Redis exporter
Registry exporter
Usage statistics
Web exporter
Use the API
REST API resources
.gitignore (templates)
.gitlab-ci.yml (templates)
Access requests
Agent for Kubernetes
Alert Management
Appearance (application)
Applications
Audit events
Avatar
Award emojis
Badges (project)
Badges (group)
Branches
Broadcast messages
Commits
Composer
Conan
Container Registry
Custom attributes
Dashboard annotations
Debian
Debian group distributions
Debian project distributions
Dependencies
Dependency Proxy
Deploy keys
Deploy tokens
Deployments
Discussions
Dockerfile (templates)
DORA4 metrics
Environments
Epics
Error tracking
Events
Experiments
External status checks
Feature flags
Feature flag user lists
Freeze periods
Geo nodes
GitLab Pages
Go Proxy
Group access tokens
Group activity analytics
Group Import/Export
Group relations export
Group repository storage moves
Groups
Helm
Import
Instance-level CI/CD variables
Integrations
Invitations
Issue boards (project)
Issue boards (group)
Issues
Issues (epic)
Issues statistics
Iterations (project)
Iterations (group)
Jobs
Job artifacts
Keys
Labels (project)
Labels (group)
License
Licenses (templates)
Linked epics
Links (issue)
Links (epic)
Managed licenses
Markdown
Maven
Members
Merge request approvals
Merge request context commits
Merge requests
Merge trains
Metadata
Migrations (bulk imports)
Milestones (project)
Milestones (group)
Namespaces
Notes (comments)
Notification settings
npm
NuGet
Packages
Pages domains
Personal access tokens
Pipelines schedules
Pipeline triggers
Pipelines
Plan limits
Product analytics
Project access tokens
Project aliases
Project import/export
Project relations export
Project remote mirrors
Project repository storage moves
Project statistics
Project templates
Project vulnerabilities
Projects
Protected branches
Project-level protected environments
Group-level protected environments
Protected tags
PyPI
Releases
Group releases
Release links
Repositories
Repository files
Repository submodules
Resource group
Resource iteration events
Resource label events
Resource milestone events
Resource state events
Resource weight events
Ruby gems
Runners
SAML
SCIM
Search
Secure files
Settings (application)
Sidekiq metrics
Sidekiq queues
Snippet repository storage moves
Snippets
Snippets (project)
Statistics (application)
Suggestions
System hooks
Tags
To-Do lists
Topics
Service Data
Users
User-starred metrics dashboards
Variables (project)
Variables (group)
Version
Visual Review discussions
Vulnerabilities
Vulnerability export
Vulnerability Findings
Wikis (group)
Wikis (project)
OpenAPI
GraphQL
Get started using GraphQL
GraphQL reference
Create audit report (example)
Identify issue boards (example)
Query users (example)
Use custom emojis (example)
Removed items
Lint .gitlab-ci.yml
GitLab as an OAuth2 provider
Contribute to GitLab development
Contribute to GitLab
Architecture
Adding a new Service Component
Development Rake tasks
Mass insert Rails models
Development processes
Changelog entries
ChatOps on GitLab.com
Code review guidelines
Community roles
Danger bot
Deprecation guidelines
FIPS compliance
Experiments
Implementing experiments
Testing experiments
Experiment code reviews
Experiment rollouts
Feature flags for GitLab development
Controlling feature flags
Documenting feature flags
Feature flags API
Framework - DeclarativePolicy
Issues workflow
Merge request concepts
Merge request workflow
Secure partner onboarding process
Testing standards and styles
Flaky tests
Frontend testing standards and style guidelines
Review apps
Smoke tests
Testing best practices
Testing levels
Testing Rails migrations
Testing Rake tasks
Testing (contract)
Writing consumer tests
Writing provider tests
Testing (end to end)
Beginner's guide to writing end-to-end tests
Best practices when writing end-to-end tests
Dynamic element validation
Flows in GitLab QA
Page objects in GitLab QA
Resource class in GitLab QA
Style guide for writing end-to-end tests
Testing with feature flags
Troubleshooting
Translate GitLab
Externalization
Translation
Proofreading
Merging
Development style guides
Frontend style guides
API style guide
Go standards and style guidelines
GraphQL API style guide
Guidelines for shell commands
HTML style guide
JavaScript style guide
Python development guidelines
RuboCop rule development guide
Ruby style guide
Gemfile guidelines
SCSS style guide
Secure coding guidelines
Shell scripting standards and style guidelines
Vue style guide
Feature development
Approval rules development
Audit Event development
Auto DevOps development
Built-in project templates
CI/CD development
Documenting keywords
Contribute to the CI/CD schema
CI/CD template development
Pipeline Wizard
Code intelligence
CodeSandbox development environment
Create - Source Code backend
Gitaly touch points
Source Code REST endpoints
Database development
Adding database indexes
Add a foreign key constraint to an existing column
Avoiding downtime in migrations
Batched background migrations
Case study - filtering by label
Case study - namespaces storage statistics
CI mirrored tables
Database Dictionary
Database Lab and Postgres.ai
Database migration pipeline
Database review guidelines
Database check-migrations job
Delete existing migrations
Foreign keys and associations
Layout and access patterns
Maintenance operations
Migrations style guide
Ordering table columns
Pagination guidelines
Pagination performance guidelines
Keyset pagination
Post-deployment migrations
Query comments with Marginalia
Query Recorder
SQL guidelines
Strings and the Text data type
Swapping tables
Table partitioning
Troubleshooting and debugging
Understanding EXPLAIN plans
Multiple databases
Loose Foreign Keys
Migrations for multiple databases
Design and UI
Developer guide to logging
Distributed tracing
Frontend development
Accessibility
Architecture
Axios
Content Editor
Customizable dashboards
Dark mode
Dependencies
Design anti-patterns
Design patterns
Development process
Event tracking
Emojis
Frontend FAQ
GraphQL
HAML
Icons and SVG illustrations
Keyboard shortcuts
Logging
Merge request widget extensions
Performance
Principles
Registry architecture
Security
Source editor
Tooling
Troubleshooting
ViewComponent
Vuex
Vue
Vue 3 migration
Widgets
Geo development
Geo framework
Geo proxying
Git LFS
Git object deduplication
Gitaly development
GitLab Flavored Markdown (GLFM) developer documentation
GitLab Flavored Markdown (GLFM) specification guide
GitLab group migration
GraphQL development
GraphQL authorization
GraphQL BatchLoader
GraphQL pagination
GraphQL Pro
Integrations
Internal API
Internal allowed API
Internal users
Issuable-like Rails models utilities
Issue types
Jenkins in local environments
Jira development environment
JSON guidelines
Kubernetes integration
Merge request diffs development guide
Observability for stage groups
Dashboards
Stage group dashboard
Error budget detail
Package development
Package settings
Package structure
Support new formats
Cleanup policies
Debian repository
Dependency proxy
Permissions
Product Qualified Lead (PQL) guide
Real-time features
Sec section development
Analyzer development guide
Security report ingestion
Service Ping guide
Metrics lifecycle
Implement Service Ping
Metrics instrumentation
Metrics dictionary guide
Metrics dictionary
Metrics Performance Indicator
Review guidelines
Troubleshooting
Sidekiq development
Compatibility across updates
Job idempotency and job deduplication
Limited capacity worker
Logging
Worker attributes
Snowplow
Implement Snowplow
Snowplow Infrastructure
Schemas
Event dictionary guide
Event dictionary
Review guidelines
Troubleshooting
Spam protection and CAPTCHA
Model and services
REST API spam protection
GraphQL API spam protection
Web UI spam protection
Exploratory testing
Test import project
Uploads
Adding new uploads
Value Stream Analytics
Verify stage development
Wikis
Work items and work item types
Workhorse
Adding new features to Workhorse
Configuration
Features that rely on Workhorse
Websocket channel support
Prometheus metrics
Workspace
GitLab Development Kit
GitLab Design System
GitLab project pipelines
Contribute to Omnibus GitLab
Get started
Build locally
Build Omnibus GitLab package
Build all-in-one Docker image
Information for GitLab team members
Set up a development environment
CI variables
Change package behavior
Change YAML config options
Add deprecation messages
Add new gitlab-ctl commands
Add new services
Add new software definitions
Create patches
Add or remove configuration options
Manage PostgreSQL versions
Omnibus mirror
Version format for the packages and Docker images
Pipelines
Work with public_attributes.json
Upgrade Chef
Handle vulnerabilities
Handle broken master pipelines
Deprecate and remove support for an OS
Contribute to GitLab Pages
Contribute to GitLab Runner
Review GitLab Runner
Add new Windows version support for Docker executor
Contribute to GitLab Helm charts
Architecture of Cloud native GitLab Helm charts
Backup and Restore
Goals
Architecture
Design Decisions
Resource Usage
Environment setup
Style guide
Versioning and release
Troubleshooting
Contribute to documentation
How to update the documentation
Style guide
Recommended word list
Topic types
Concepts
Tasks
Reference
Troubleshooting
Tutorials
Document product versions
Global navigation
Drawer content
Testing
Site architecture
Folder structure
Deployment process
Documentation review apps
Redirects
Create a GraphQL example page
RESTful API style guide
Configure the external URL for GitLab
Specify the external URL at the time of installationConfigure a relative URL for GitLabLoad external configuration file from non-root userStore Git data in an alternative directoryChange the name of the Git user or groupSpecify numeric user and group identifiersDisable user and group account managementMove the home directory for a user
Disable storage directories management
Disable the /etc/gitlab directory managementDisable the /var/opt/gitlab directory managementStart Omnibus GitLab services only after a given file system is mountedConfigure the runtime directoryConfigure a failed authentication banDisable automatic cache cleaning during installationError Reporting and Logging with SentrySet a Content Delivery Network URLSet a Content Security PolicySet initial root password on installationSet allowed hosts to prevent host header attacksRelated topics
Troubleshooting
Relative URL troubleshootingMixlib::ShellOut::ShellCommandFailed: linux_user[GitLab user and group]Configuration options for the GitLab Linux package
To configure GitLab, set the relevant options in the /etc/gitlab/gitlab.rb file.gitlab.rb.template
contains a complete list of available options. New installations have all the
options of the template listed in /etc/gitlab/gitlab.rb by default.For a list of default settings, see the
package defaults.Configure the external URL for GitLab
To display the correct repository clone links to your users,
you must provide GitLab with the URL your users use to reach the repository.
You can use the IP of your server, but a Fully Qualified Domain Name (FQDN)
is preferred. See the DNS documentation
for more details about the use of DNS in a self-managed GitLab instance.To change the external URL:
Optional. Before you change the external URL, determine if you have previously
defined a custom Home page URL or After sign-out path.
Both of these settings might cause unintentional redirecting after configuring
a new external URL. If you have defined any URLs, remove them completely.
Edit /etc/gitlab/gitlab.rb:
external_url "http://gitlab.example.com"
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
After you change the external URL, we recommended you also
invalidate the Markdown cache.Specify the external URL at the time of installation
If you use the GitLab Linux package, you can set up your GitLab instance
with the minimum number of commands by using the EXTERNAL_URL environment variable.
If this variable is set, it is automatically detected and its value is written
as external_url in the gitlab.rb file.The EXTERNAL_URL environment variable affects only the installation and upgrade
of packages. For regular reconfigure runs, the value
in /etc/gitlab/gitlab.rb is used.As part of package updates, if you have EXTERNAL_URL variable set
inadvertently, it replaces the existing value in /etc/gitlab/gitlab.rb
without any warning. So, we recommended not to set the variable globally, but
rather pass it specifically to the installation command:sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ee
Configure a relative URL for GitLab
noteFor self-compiled (source) installations, there is a
separate document.While we recommended installing GitLab in its own (sub)domain, sometimes
it is not possible. In that case, GitLab can also
be installed under a relative URL, for example, https://example.com/gitlab.By changing the URL, all remote URLs change as well, so you must
manually edit them in any local repository that points to your GitLab instance.To enable relative URL in GitLab:
Set the external_url in /etc/gitlab/gitlab.rb:
external_url "https://example.com/gitlab"
In this example, the relative URL under which GitLab is served is
/gitlab. Change it to your liking.
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
If you have any issues, see the troubleshooting section.Load external configuration file from non-root user
Omnibus GitLab package loads all configuration from /etc/gitlab/gitlab.rb file.
This file has strict file permissions and is owned by the root user. The reason for strict permissions
and ownership is that /etc/gitlab/gitlab.rb is being executed as Ruby code by the root user during gitlab-ctl reconfigure. This means
that users who have to write access to /etc/gitlab/gitlab.rb can add a configuration that is executed as code by root.In certain organizations, it is allowed to have access to the configuration files but not as the root user.
You can include an external configuration file inside /etc/gitlab/gitlab.rb by specifying the path to the file:from_file "/home/admin/external_gitlab.rb"
Code you include into /etc/gitlab/gitlab.rb using from_file runs with root privileges when you run sudo gitlab-ctl reconfigure.
Any configuration that is set in /etc/gitlab/gitlab.rb after from_file is included, takes precedence over the configuration from the included file.Store Git data in an alternative directory
By default, Omnibus GitLab stores the Git repository data under
/var/opt/gitlab/git-data. The repositories are stored in a subfolder called
repositories.To change the location of the git-data parent directory:
Edit /etc/gitlab/gitlab.rb:
git_data_dirs({ "default" => { "path" => "/mnt/nas/git-data" } })
You can also add more than one Git data directory:
git_data_dirs({
"default" => { "path" => "/var/opt/gitlab/git-data" },
"alternative" => { "path" => "/mnt/nas/git-data" }
})
The target directories and any of its subpaths must not be a symlink.
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
Optional. If you already have existing Git repositories in /var/opt/gitlab/git-data, you
can move them to the new location:
Prevent users from writing to the repositories while you move them:
sudo gitlab-ctl stop
Sync the repositories to the new location. Note there is no slash behind
repositories, but there is a slash behind git-data:
sudo rsync -av --delete /var/opt/gitlab/git-data/repositories /mnt/nas/git-data/
Reconfigure to start the necessary processes and fix any wrong permissions:
sudo gitlab-ctl reconfigure
Double-check the directory layout in /mnt/nas/git-data/. The expected output
should be repositories:
sudo ls /mnt/nas/git-data/
Start GitLab and verify that you can browse through the repositories in
the web interface:
sudo gitlab-ctl start
If you鈥檙e running Gitaly on a separate server, remember to also include the
gitaly_address for each Git data directory. See
the documentation on configuring Gitaly.If you鈥檙e not looking to move all repositories, but instead want to move specific
projects between existing repository storages, use the
Edit Project API
endpoint and specify the repository_storage attribute.Change the name of the Git user or group
noteWe do not recommend changing the user or group of an existing installation because it can cause unpredictable side effects.By default, Omnibus GitLab uses the user name git for Git GitLab Shell login,
ownership of the Git data itself, and SSH URL generation on the web interface.
Similarly, the git group is used for group ownership of the Git data.To change the user and group:
Edit /etc/gitlab/gitlab.rb:
user['username'] = "gitlab"
user['group'] = "gitlab"
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
If you are changing the username of an existing installation, the reconfigure run
doesn鈥檛 change the ownership of the nested directories, so you must do that manually.
Make sure that the new user can access the repositories and uploads directories.Specify numeric user and group identifiers
Omnibus GitLab creates users for GitLab, PostgreSQL, Redis, NGINX, etc. To
specify the numeric identifiers for these users:
Edit /etc/gitlab/gitlab.rb:
user['uid'] = 1234
user['gid'] = 1234
postgresql['uid'] = 1235
postgresql['gid'] = 1235
redis['uid'] = 1236
redis['gid'] = 1236
web_server['uid'] = 1237
web_server['gid'] = 1237
registry['uid'] = 1238
registry['gid'] = 1238
mattermost['uid'] = 1239
mattermost['gid'] = 1239
prometheus['uid'] = 1240
prometheus['gid'] = 1240
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
Optional. If you鈥檙e changing user['uid'] and user['gid'], make sure to update the uid/guid of any files not managed by Omnibus directly, for example, the logs:find /var/log/gitlab -uid <old_uid> | xargs -I:: chown git ::
find /var/log/gitlab -gid <old_uid> | xargs -I:: chgrp git ::
find /var/opt/gitlab -uid <old_uid> | xargs -I:: chown git ::
find /var/opt/gitlab -gid <old_uid> | xargs -I:: chgrp git ::
Disable user and group account management
By default, Omnibus GitLab creates system user and group accounts,
as well as keeping the information updated.
These system accounts run various components of the package.
Most users don鈥檛 need to change this behavior.
However, if your system accounts are managed by other software, for example, LDAP, you
might need to disable account management done by the GitLab package.By default, the Omnibus GitLab package expects the following users and groups to exist:
Linux user and groupRequiredDescription
gitYesGitLab user/group
gitlab-wwwYesWeb server user/group
gitlab-redisOnly when using the packaged RedisRedis user/group for GitLab
gitlab-psqlOnly when using the packaged PostgreSQLPostgreSQL user/group
gitlab-prometheusYesPrometheus user/group for Prometheus monitoring and various exporters
mattermostOnly when using GitLab MattermostGitLab Mattermost user/group
registryOnly when using GitLab RegistryGitLab Registry user/group
gitlab-consulOnly when using GitLab ConsulGitLab Consul user/groupTo disable user and group accounts management:
Edit /etc/gitlab/gitlab.rb:
manage_accounts['enable'] = false
Optional. You can also use different user/group names, but then you must specify the user/group details:
# GitLab
user['username'] = "custom-gitlab"
user['group'] = "custom-gitlab"
user['shell'] = "/bin/sh"
user['home'] = "/var/opt/custom-gitlab"
# Web server
web_server['username'] = 'webserver-gitlab'
web_server['group'] = 'webserver-gitlab'
web_server['shell'] = '/bin/false'
web_server['home'] = '/var/opt/gitlab/webserver'
# Postgresql (not needed when using external Postgresql)
postgresql['username'] = "postgres-gitlab"
postgresql['group'] = "postgres-gitlab"
postgresql['shell'] = "/bin/sh"
postgresql['home'] = "/var/opt/postgres-gitlab"
# Redis (not needed when using external Redis)
redis['username'] = "redis-gitlab"
redis['group'] = "redis-gitlab"
redis['shell'] = "/bin/false"
redis['home'] = "/var/opt/redis-gitlab"
# And so on for users/groups for GitLab Mattermost
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
Move the home directory for a user
For the GitLab user, we recommended that the home directory
is set on a local disk and not on shared storage like NFS, for better performance. When setting it in
NFS, Git requests must make another network request to read the Git
configuration and this increases latency in Git operations.To move an existing home directory, GitLab services need to be stopped and some downtime is required:
Stop GitLab:
gitlab-ctl stop
Stop the runit server:
sudo systemctl stop gitlab-runsvdir
Change the home directory:
usermod -d /path/to/home <username>
If you had existing data, you need to manually copy/rsync it to the new location:
Edit /etc/gitlab/gitlab.rb:
user['home'] = "/var/opt/custom-gitlab"
Start the runit server:
sudo systemctl start gitlab-runsvdir
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
Disable storage directories management
The Omnibus GitLab package takes care of creating all the necessary directories
with the correct ownership and permissions, as well as keeping this updated.Some of the directories hold large amounts of data so in certain setups,
those directories are most likely mounted on an NFS (or some other) share.Some types of mounts don鈥檛 allow the automatic creation of directories by the root user
(default user for initial setup), for example, NFS with root_squash enabled on the
share. To work around this, the Omnibus GitLab package attempts to create
those directories using the directory鈥檚 owner user.Disable the /etc/gitlab directory management
If you have the /etc/gitlab directory mounted, you can turn off the management of
that directory:
Edit /etc/gitlab/gitlab.rb:
manage_storage_directories['manage_etc'] = false
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
Disable the /var/opt/gitlab directory management
If you are mounting all GitLab storage directories, each on a separate mount,
you should completely disable the management of storage directories.The Omnibus GitLab package expects these directories to exist
on the file system. It is up to you to create and set correct
permissions if this setting is set.Enabling this setting prevents the creation of the following directories:
Default locationPermissionsOwnershipPurpose
/var/opt/gitlab/git-data0700git:gitHolds repositories directory
/var/opt/gitlab/git-data/repositories2770git:gitHolds Git repositories
/var/opt/gitlab/gitlab-rails/shared0751git:gitlab-wwwHolds large object directories
/var/opt/gitlab/gitlab-rails/shared/artifacts0700git:gitHolds CI artifacts
/var/opt/gitlab/gitlab-rails/shared/external-diffs0700git:gitHolds external merge request diffs
/var/opt/gitlab/gitlab-rails/shared/lfs-objects0700git:gitHolds LFS objects
/var/opt/gitlab/gitlab-rails/shared/packages0700git:gitHolds package repository
/var/opt/gitlab/gitlab-rails/shared/dependency_proxy0700git:gitHolds dependency proxy
/var/opt/gitlab/gitlab-rails/shared/terraform_state0700git:gitHolds terraform state
/var/opt/gitlab/gitlab-rails/shared/ci_secure_files0700git:gitHolds uploaded secure files
/var/opt/gitlab/gitlab-rails/shared/pages0750git:gitlab-wwwHolds user pages
/var/opt/gitlab/gitlab-rails/uploads0700git:gitHolds user attachments
/var/opt/gitlab/gitlab-ci/builds0700git:gitHolds CI build logs
/var/opt/gitlab/.ssh0700git:gitHolds authorized keysTo disable the management of storage directories:
Edit /etc/gitlab/gitlab.rb:
manage_storage_directories['enable'] = false
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
Start Omnibus GitLab services only after a given file system is mounted
If you want to prevent Omnibus GitLab services (NGINX, Redis, Puma, etc.)
from starting before a given file system is mounted:
Edit /etc/gitlab/gitlab.rb:
# wait for /var/opt/gitlab to be mounted
high_availability['mountpoint'] = '/var/opt/gitlab'
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
Configure the runtime directory
When Prometheus monitoring is enabled, the GitLab Exporter conducts measurements
of each Puma process (Rails metrics). Every Puma process needs to write
a metrics file to a temporary location for each controller request.
Prometheus then collects all these files and processes their values.To avoid creating disk I/O, the Omnibus GitLab package uses a
runtime directory.During reconfigure, the package check if /run is a tmpfs mount.
If it is not, the following warning is shown and Rails metrics are disabled:Runtime directory '/run' is not a tmpfs mount.
To enable the Rails metrics again:
Edit /etc/gitlab/gitlab.rb to create a tmpfs mount
(note that there is no = in the configuration):
runtime_dir '/path/to/tmpfs'
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
Configure a failed authentication ban
You can configure a failed authentication ban
for Git and the container registry:
Edit /etc/gitlab/gitlab.rb:
gitlab_rails['rack_attack_git_basic_auth'] = {
'enabled' => true,
'ip_whitelist' => ["127.0.0.1"],
'maxretry' => 10, # Limit the number of Git HTTP authentication attempts per IP
'findtime' => 60, # Reset the auth attempt counter per IP after 60 seconds
'bantime' => 3600 # Ban an IP for one hour (3600s) after too many auth attempts
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
The following settings can be configured:
enabled: By default, this is set to false. Set this to true to enable Rack Attack.
ip_whitelist: IPs to not block. They must be formatted as strings in a
Ruby array. CIDR notation is supported in GitLab 12.1 and later.
For example, ["127.0.0.1", "127.0.0.2", "127.0.0.3", "192.168.0.1/24"].
maxretry: The maximum amount of times a request can be made in the
specified time.
findtime: The maximum amount of time that failed requests can count against an IP
before it鈥檚 added to the denylist (in seconds).
bantime: The total amount of time that an IP is blocked (in seconds).Disable automatic cache cleaning during installation
If you have a large GitLab installation, you might not want to run a rake cache:clear task
as it can take a long time to finish. By default, the cache clear task runs automatically
during reconfiguring.To disable automatic cache cleaning during installation:
Edit /etc/gitlab/gitlab.rb:
# This is an advanced feature used by large gitlab deployments where loading
# whole RAILS env takes a lot of time.
gitlab_rails['rake_cache_clear'] = false
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
Error Reporting and Logging with Sentry
Sentry is an error reporting and logging tool which can be
used as SaaS or on-premise. It鈥檚 Open Source, and you can
browse its source code repositories.To configure Sentry:
Edit /etc/gitlab/gitlab.rb:
gitlab_rails['sentry_enabled'] = true
gitlab_rails['sentry_dsn'] = 'https://<key>@sentry.io/<project>'
gitlab_rails['sentry_clientside_dsn'] = 'https://<key>@sentry.io/<project>'
gitlab_rails['sentry_environment'] = 'production'
The Sentry environment
can be used to track errors and issues across several deployed GitLab
environments, for example, lab, development, staging, and production.
Optional. To set custom Sentry tags
on every event sent from a particular server, the GITLAB_SENTRY_EXTRA_TAGS
an environment variable can be set. This variable is a JSON-encoded hash representing any
tags that should be passed to Sentry for all exceptions from that server.For instance, setting:
gitlab_rails['env'] = {
'GITLAB_SENTRY_EXTRA_TAGS' => '{"stage": "main"}'
Would add the stage tag with a value of main.
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
Set a Content Delivery Network URL
Service static assets with a Content Delivery Network (CDN) or asset host
using gitlab_rails['cdn_host']. This configures a Rails asset host.To set a CDN/asset host:
Edit /etc/gitlab/gitlab.rb:
gitlab_rails['cdn_host'] = 'https://mycdnsubdomain.fictional-cdn.com'
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
Additional documentation for configuring common services to act as an asset host
is tracked in this issue.Set a Content Security Policy
Setting a Content Security Policy (CSP) can help thwart JavaScript
cross-site scripting (XSS) attacks. See
the Mozilla documentation on CSP for more
details.GitLab 12.2 added support for
CSP and nonce-source with inline JavaScript.
It is not configured by default yet.
noteImproperly configuring the CSP rules could prevent GitLab from working
properly. Before rolling out a policy, you may also want to change
report_only to true to test the configuration.To add a CSP:
Edit /etc/gitlab/gitlab.rb:
gitlab_rails['content_security_policy'] = {
enabled: true,
report_only: false
GitLab automatically provides secure default values for the CSP.
Explicitly setting the <default_value> value for a directive is equivalent to
not setting a value and will use the default values.To add a custom CSP:
gitlab_rails['content_security_policy'] = {
enabled: true,
report_only: false,
directives: {
default_src: "'none'",
script_src: "https://example.com"
In GitLab 14.9 and later, secure default values
are used for directives that aren鈥檛 explicitly configured.To unset a CSP directive, set a value of false.
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
Set initial root password on installation
The initial password for the administrator user root can be set at the installation time
with the GITLAB_ROOT_PASSWORD environment variable:sudo GITLAB_ROOT_PASSWORD="<strongpassword>" EXTERNAL_URL="http://gitlab.example.com" apt install gitlab-ee
Set allowed hosts to prevent host header attacks
To prevent GitLab from accepting a host header other than
what鈥檚 intended:
Edit /etc/gitlab/gitlab.rb:
gitlab_rails['allowed_hosts'] = ['gitlab.example.com']
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
There are no known security issues in GitLab caused by not configuring allowed_hosts,
but it鈥檚 recommended for defense in depth against potential HTTP Host header attacks.If using a custom external proxy such as apache, it may be necessary to add the localhost. Administrators should add filters to the external proxy to mitigate potential HTTP Host header attacks passed through the proxy to workhorse.gitlab_rails['allowed_hosts'] = ['gitlab.example.com', '127.0.0.1']
Related topics
Disable impersonationSet up LDAP sign-inSmartcard authentication
Set up NGINX for things like:
Set up HTTPSRedirect HTTP requests to HTTPS
Change the default port and the SSL certificate locationsSet the NGINX listen-address or addressesInsert custom NGINX settings into the GitLab server blockInsert custom settings into the NGINX configurationEnable nginx_status
Use a non-packaged web-serverUse a non-packaged PostgreSQL database management serverUse a non-packaged Redis instanceAdd ENV vars to the GitLab runtime environmentChanging gitlab.yml and application.yml settingsSend application email via SMTPSet up OmniAuth (Google, Twitter, GitHub login)Adjust Puma settingsTroubleshooting
Relative URL troubleshooting
If you notice any issues with GitLab assets appearing broken after moving to a
relative URL configuration (like missing images or unresponsive components),
please raise an issue in GitLab
with the Frontend label.
Mixlib::ShellOut::ShellCommandFailed: linux_user[GitLab user and group]
When moving the home directory for a user,
if the runit service is not stopped and the home directories are not manually
moved for the user, GitLab will encounter an error while reconfiguring:account[GitLab user and group] (gitlab::users line 28) had an error: Mixlib::ShellOut::ShellCommandFailed: linux_user[GitLab user and group] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/resources/account.rb line 51) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '8'
---- Begin output of ["usermod", "-d", "/var/opt/gitlab", "git"] ----
STDOUT:
STDERR: usermod: user git is currently used by process 1234
---- End output of ["usermod", "-d", "/var/opt/gitlab", "git"] ----
Ran ["usermod", "-d", "/var/opt/gitlab", "git"] returned 8
Make sure to stop runit before moving the home directory.
Help & feedback
DocsEdit this page
to fix an error or add an improvement in a merge request.
Create an issue
to suggest an improvement to this page.
Show and post comments
to review and give feedback about this page.
ProductCreate an issue
if there's something you don't like about this feature.
Propose functionality
by submitting a feature request.
Join First Look
to help shape new features.
Feature availability and product trialsView pricing
to see all GitLab tiers and features, or to upgrade.
Try GitLab for free
with access to all features for 30 days.
Get Help
If you didn't find what you were looking for,
search the docs.
If you want help with something specific and could use community support,
post on the GitLab forum.
For problems setting up or using this feature (depending on your GitLab
subscription).
Request support
Please enable JavaScript to view the
comments powered by Disqus.
Twitter
Facebook
YouTube
LinkedIn
Docs Repo
About GitLab
Terms
Privacy Policy
Cookies Policy
Contact
View page source -
Edit in Web IDE
Twitter
Facebook
YouTube
LinkedIn