The source of omnibus-gitlab is hosted on GitLab.com and there are mirrors to make contributing as easy as possible.
The documentation overview is in the readme in the doc directory.
To setup GitLab CI please see the separate GitLab CI documentation.
Please follow the steps on the downloads page.
Your GitLab instance should reachable over HTTP at the IP or hostname of your server.
You can login as an admin user with username
root and password
See doc/maintenance/README.md for useful commands to control/debug your GitLab instance.
Configuring the external URL for GitLab
Storing Git data in an alternative directory
Changing the name of the Git user / group
Setting up LDAP sign-in
HTTP requests to
Change the default port and the ssl certificate locations.
Use non-packaged web-server
For using an existing Nginx, Passenger, or Apache webserver see doc/settings/nginx.md.
Using a non-packaged PostgreSQL database management server
To connect to an external PostgreSQL or MySQL DBMS see doc/settings/database.md (MySQL support in the Omnibus Packages is Enterprise Only).
Using a non-packaged Redis instance
Adding ENV Vars to the Gitlab Runtime Environment
Changing gitlab.yml settings
Specify numeric user and group identifiers
Sending application email via SMTP
Omniauth (Google, Twitter, GitHub login)
Omniauth configuration is documented in doc.gitlab.com.
Adjusting Unicorn settings
Setting the NGINX listen address or addresses
Inserting custom NGINX settings into the GitLab server block
Inserting custom settings into the NGINX config
Only start omnibus-gitlab services after a given filesystem is mounted
Instructions for updating your Omnibus installation and upgrading from a manual installation are in the update doc.
To uninstall omnibus-gitlab, preserving your data (repositories, database, configuration), run the following commands.
# Stop gitlab and remove its supervision process sudo gitlab-ctl uninstall # Debian/Ubuntu sudo dpkg -r gitlab-ce # Redhat/Centos sudo rpm -e gitlab-ce
To remove all omnibus-gitlab data use
sudo gitlab-ctl cleanse.
To remove all users and groups created by omnibus-gitlab, before removing the gitlab package (with dpkg or yum) run
sudo gitlab-ctl remove_users. Note All gitlab processes need to be stopped before runnign the command.
Common installation problems
This section has been moved to the separate document doc/common_installation_problems/README.md.
Section below remains for historical reasons(mainly to not break existing links). Each section contains the link to the new location.
Apt error 'The requested URL returned error: 403'
GitLab is unreachable in my browser
GitLab CI shows GitLab login page
Emails are not being delivered
Reconfigure freezes at
ruby_block[supervise_redis_sleep] action run
TCP ports for GitLab services are already taken
Git SSH access stops working on SELinux-enabled systems
Postgres error 'FATAL: could not create shared memory segment: Cannot allocate memory'
Reconfigure complains about the GLIBC version
Reconfigure fails to create the git user
Failed to modify kernel parameters with sysctl
I am unable to install omnibus-gitlab without root access
gitlab-rake assets:precompile fails with 'Permission denied'
'Short read or OOM loading DB' error
Backup and restore omnibus-gitlab configuration
Creating an application backup
Restoring an application backup
Backup and restore using non-packaged database
If you are using non-packaged database see documentation on using non-packaged database.
Upload backups to remote (cloud) storage
For details check backup restore document of GitLab CE.
Invoking Rake tasks
Omnibus-gitlab uses four different directories.
/opt/gitlabholds application code for GitLab and its dependencies.
/var/opt/gitlabholds application data and configuration files that
gitlab-ctl reconfigurewrites to.
/etc/gitlabholds configuration files for omnibus-gitlab. These are the only files that you should ever have to edit manually.
/var/log/gitlabcontains all log data generated by components of omnibus-gitlab.
Omnibus-gitlab and SELinux
Although omnibus-gitlab runs on systems that have SELinux enabled, it does not use SELinux confinement features:
- omnibus-gitlab creates unconfined system users;
- omnibus-gitlab services run in an unconfined context.
The correct operation of Git access via SSH depends on the labeling of
/var/opt/gitlab/.ssh. If needed you can restore this labeling by running
sudo gitlab-ctl reconfigure.
Depending on your platform,
gitlab-ctl reconfigure will install SELinux
modules required to make GitLab work. These modules are listed in
NSA, if you're reading this, we'd really appreciate it if you could contribute back a SELinux profile for omnibus-gitlab :) Of course, if anyone else is reading this, you're welcome to contribute the SELinux profile too.
This section has been moved to separate document doc/settings/logs.md.
Tail logs in a console on the server
UDP log shipping (GitLab Enterprise Edition only)
Using a MySQL database management server (Enterprise Edition only)
Create a user and database for GitLab
Configure omnibus-gitlab to connect to it
Seed the database (fresh installs only)
Building your own package
Running a custom GitLab version
It is not recommended to make changes to any of the files in
after installing omnibus-gitlab: they will either conflict with or be
overwritten by future updates. If you want to run a custom version of GitLab
you can build your own package or use another installation
This omnibus installer project is based on the awesome work done by Chef in omnibus-chef-server.