Как запустить собственный Git-сервер с GitLab на Debian 7 (Wheezy)
Краткий план
- Подготовка сервера и системные требования
- Установка Ruby 2.x, Python 2.7 и Bundler
- Установка GitLab Shell и GitLab
- Настройка базы данных (MySQL/MariaDB)
- Финальная конфигурация, проверка и запуск
Введение
Этот документ описывает, как установить Git и GitLab (ранее GitHub-подобный интерфейс) на собственном сервере Debian 7. Self-hosted GitLab предоставляет веб-интерфейс к репозиториям, контроль доступа и гибкость, необходимую при работе с закрытым кодом.
Важно: это руководство ориентировано на Debian 7 (Wheezy). На других дистрибутивах или более новых версиях пакеты и шаги могут отличаться. Автор не гарантирует успешность в вашей среде; используйте это как практическое руководство и адаптируйте под свои требования.
Требования перед началом
- Debian 7 установлен и обновлён.
- Статический IP адрес и корректное DNS-имя (в примерах: 192.168.0.100 и server1.example.com).
- Наличие прав root или sudo для установки пакетов.
- Установленные Ruby 2.x и Python 2.7 (Ruby 2.0+ обязательно).
- Рекомендуется резервная копия любого существующего сервера перед изменениями.
Важно: на серверах с уже установленными системными Ruby/Python версии могут конфликтовать. При необходимости используйте rbenv/rvm или контейнеры для изоляции.
1 Предварительная информация
Перед выполнением шагов убедитесь, что система обновлена и имеет статический IP. Если у вас VPS с нестандартной конфигурацией, проверьте совместимость версий Python и Ruby.
2 Установка Ruby 2.x, Python 2.7 и Bundler
Обновите индекс пакетов и установите необходимые библиотеки:
apt-get update
apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl git-core openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-devПроверьте версию Python:
python --versionПример вывода:
root@server1:~# python --version
Python 2.7.3
root@server1:~#Скачайте и соберите Ruby (пример для Ruby 2.1.2):
mkdir /tmp/ruby && cd /tmp/ruby
wget http://ftp.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz
tar zxvf ruby-2.1.2.tar.gz
cd ruby-2.1.2
./configure
make
make installПроверьте версию Ruby:
ruby -vПримерный вывод:
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]Установите Bundler:
gem install bundler --no-ri --no-rdocСоздайте пользователя git, от имени которого будет работать GitLab:
adduser --disabled-login --gecos 'GitLab' git3 Установка GitLab Shell
Загрузите и установите GitLab Shell в домашней папке пользователя git:
cd /home/git
apt-get install sudo
sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git
cd gitlab-shell
sudo -u git -H git checkout v1.7.0
sudo -u git -H cp config.yml.example config.ymlОтредактируйте конфигурацию и укажите URL вашей инстанции GitLab, например server1.example.com:
vi config.ymlВнутри файла измените значение gitlab_url:
user: git
# Url to gitlab instance. Used for api calls. Should end with a slash.
#gitlab_url: "http://localhost/"
gitlab_url: "http://server1.example.com"Установите GitLab Shell:
sudo -u git -H ./bin/installПример вывода установки:
mkdir -p /home/git/repositories: true
mkdir -p /home/git/.ssh: true
chmod 700 /home/git/.ssh: true
touch /home/git/.ssh/authorized_keys: true
chmod 600 /home/git/.ssh/authorized_keys: true
chmod -R ug+rwX,o-rwx /home/git/repositories: true
find /home/git/repositories -type d -print0 | xargs -0 chmod g+s: true4 Установка MySQL/MariaDB для GitLab
Установите сервер базы данных и клиентские библиотеки:
apt-get install mysql-server mysql-client libmysqlclient-devВо время установки укажите пароль для пользователя root MariaDB/MySQL. Затем войдите в консоль MySQL:
mysql -u root -pСоздайте базу данных и пользователя для GitLab (замените пароли на собственные):
CREATE DATABASE gitlabdb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON gitlabdb.* TO 'gitlabuser'@'localhost' IDENTIFIED BY 'gitlabuserpassword';
flush privileges;
quit5 Установка GitLab (gitlabhq)
Клонируйте репозиторий GitLab и подготовьте конфигурацию:
cd /home/git
sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
cd /home/git/gitlab
sudo -u git -H git checkout 6-0-stable
sudo -u git -H cp config/gitlab.yml.example config/gitlab.ymlОтредактируйте config/gitlab.yml, установив host на свой домен или IP:
sudo -u git -H vi config/gitlab.ymlПример секции:
gitlab:
## Web server settings
host: server1.example.com
port: 80
https: falseУстановите права и создайте необходимые директории:
cd /home/git/gitlab
chown -R git log/
chown -R git tmp/
chmod -R u+rwX log/
chmod -R u+rwX tmp/
sudo -u git -H mkdir /home/git/gitlab-satellites
sudo -u git -H mkdir tmp/pids/
sudo -u git -H mkdir tmp/sockets/
chmod -R u+rwX tmp/pids/
chmod -R u+rwX tmp/sockets/
sudo -u git -H mkdir public/uploads
chmod -R u+rwX public/uploads
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "gitlab@localhost"
sudo -u git -H git config --global core.autocrlf input
sudo -u git cp config/database.yml.mysql config/database.ymlОтредактируйте config/database.yml и укажите ранее созданные параметры подключения:
sudo -u git -H vi config/database.ymlПример секции production:
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: gitlabdb
pool: 10
username: gitlabuser
password: "gitlabuserpassword"Сделайте файл конфигурации недоступным для остальных:
sudo -u git -H chmod o-rwx config/database.ymlУстановите требуемые Ruby-гемы (пример charlock_holmes):
cd /home/git/gitlab
gem install charlock_holmes --version '0.6.9.4'Далее в примере скачивается готовый пакет Omnibus и устанавливается почтовая подсистема:
wget https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab_7.1.1-omnibus-1_amd64.deb
apt-get install openssh-server
apt-get install postfixВо время установки postfix выберите “Internet Site” и укажите system mail как server1.example.com. Можно использовать sendmail; exim в примере не рекомендуется.
Установите пакет Omnibus (пример):
dpkg -i gitlab_7.1.1-omnibus-1_amd64.debОтредактируйте основной конфиг Omnibus и укажите внешний URL:
vi /etc/gitlab/gitlab.rbПример изменения:
external_url 'http://server1.example.com'Пересоберите конфигурацию и запустите сервисы GitLab:
gitlab-ctl reconfigureПосле этого откройте в браузере страницу входа по IP или DNS, например http://192.168.0.100/users/sign_in. По умолчанию в примерах логин root и пароль 5iveL!fe — обязательно смените пароль при первом входе.



Быстрая проверка работоспособности
- Откройте веб-интерфейс и выполните вход под root.
- Создайте первый проект и выполните git clone/ push с рабочего ноутбука.
- Проверьте журнал ошибок GitLab: /var/log/gitlab/.
Критерии приёмки
- Веб-интерфейс доступен по заданному адресу.
- Успешный логин под root и смена пароля.
- Создание репозитория и успешный push.
- Отсутствие ошибок в логах при старте сервисов.
Чек-листы по ролям
Администратор:
- Установить и обновить систему.
- Настроить DNS и статический IP.
- Установить зависимости и создать пользователя git.
- Настроить бэкапы базы и каталога репозиториев.
Разработчик:
- Убедиться, что SSH-ключ добавлен в профиль.
- Проверить клонирование и push.
- Настроить локальные git-имя и email.
Операции/DevOps:
- Настроить мониторинг процессов GitLab.
- Настроить ежедневные резервные копии базы данных и папки репозиториев.
- Обновлять GitLab после тестирования на стенде.
Руководство по откату (rollback)
- Остановите сервисы: gitlab-ctl stop.
- Восстановите базу данных из последней резервной копии.
- Восстановите каталог /home/git/repositories из бэкапа.
- Запустите сервисы: gitlab-ctl start.
- Проверьте логи и функциональность.
Важно: перед обновлениями всегда делайте полные бэкапы базы и репозиториев.
Когда этот подход не подходит
- Если нужна минимальная поддержка и вы не готовы управлять сервером — предпочтительнее SaaS-решения (GitLab.com, GitHub, Bitbucket).
- Если у вас ограничения по аппаратным ресурсам: GitLab Omnibus требует памяти и CPU; для слабых VPS лучше использовать альтернативы или контейнеры с компактной конфигурацией.
Альтернативные подходы
- Использовать GitLab CE/EE в Docker-контейнере для изоляции и упрощённого обновления.
- Применить Gitea или Gogs — более лёгкие self-hosted альтернативы для небольших команд.
- Хостить приватные репозитории на GitHub/Bitbucket при отсутствии регуляторных требований.
Мини-методология развертывания
- Подготовка тестовой среды, выполнение всех шагов там.
- Полные бэкапы продовых данных.
- Поэтапное развёртывание в продовой среде с логированием.
- Тесты основной функциональности и уведомление команд.
Решающее дерево для выбора варианта развертывания
flowchart TD
A[Нужен self-hosted?] -->|Да| B{Ограничен ли ресурсами VPS?}
A -->|Нет| Z[Использовать SaaS]
B -->|Да| C[Использовать Gitea/Gogs или контейнер]
B -->|Нет| D[Развернуть GitLab Omnibus или source]
D --> E{Нужен полный контроль и кастомизация?}
E -->|Да| F[Собрать из исходников 'source']
E -->|Нет| G[Установить Omnibus package]Безопасность и бэкап
- Настройте TLS/HTTPS через Let’s Encrypt или ваш сертификат.
- Регулярно выполняйте резервные копии базы данных и каталога репозиториев.
- Ограничьте доступ к административным панелям по IP, если возможно.
Примеры тестовых сценариев
- Клонирование: git clone по SSH и по HTTPS.
- Push большого репозитория и проверка использования диска.
- Создание и удаление проекта с проверкой прав доступа.
Краткая сводка
- GitLab даёт мощный веб-интерфейс и гибкость, но требует ресурсов и администрирования.
- Для Debian 7 важно иметь Ruby 2.x и Python 2.7.
- Всегда используйте бэкапы и проверяйте конфигурацию перед выводом в прод.
Ключевые ссылки:
- gitlab : https://about.gitlab.com/
- Debian : https://www.debian.org/
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента