Гид по технологиям

Как установить публичный Git-репозиторий на Debian

• 4 min read • DevOps • Обновлено 23 Nov 2025
Установка публичного Git на Debian
Установка публичного Git на Debian

Введение

Git — распределённая система контроля версий. Короткая определение: Git хранит полную историю проекта и позволяет работать локально и через сеть.

В этой инструкции показано, как развернуть публичный Git-репозиторий на Debian с веб-интерфейсом gitweb и доступом по git-daemon (порт 9418).

Важно: инструкция ориентирована на Debian и предположительно на систему с Apache как веб-сервером.

Что потребуется

  • Доступ root или sudo на сервере Debian.
  • Установленный Apache (DocumentRoot в примере — /var/www).
  • Пакеты из репозитория Debian: git-core и gitweb.

Установка git и gitweb

Получим пакеты из репозитория Debian с помощью aptitude:

$ sudo aptitude install git-core gitweb

Создадим каталоги для репозиториев и для веб-файлов gitweb:

$ sudo mkdir /var/www/git

$ [ -d "/var/cache/git" ] || sudo mkdir /var/cache/git

Настройка Apache для gitweb

Создайте файл конфигурации Apache, например /etc/apache2/conf.d/git, и поместите туда правила доступа и обработку CGI:


   Allow from all
   AllowOverride all
   Order allow,deny
   Options ExecCGI
   
   SetHandler cgi-script
   

DirectoryIndex gitweb.cgi
SetEnv  GITWEB_CONFIG  /etc/gitweb.conf

Важно: путь к каталогу должен совпадать с тем, куда вы поместите gitweb.cgi.

Перемещение файлов gitweb

Перенесём скрипт и статические файлы в каталог веб-документов:

$ sudo mv /usr/share/gitweb/* /var/www/git

$ sudo mv /usr/lib/cgi-bin/gitweb.cgi /var/www/git

Альтернатива: можно оставить файлы в /usr/share/gitweb и настроить Alias в Apache.

Настройка /etc/gitweb.conf

Отредактируйте конфигурацию gitweb, чтобы указать расположение репозиториев и внешние ресурсы:

$projectroot = '/var/cache/git/';
$git_temp = "/tmp";
#$home_link = $my_uri || "/";
$home_text = "indextext.html";
$projects_list = $projectroot;
$stylesheet = "/git/gitweb.css";
$logo = "/git/git-logo.png";
$favicon = "/git/git-favicon.png";

После изменений перезагрузите Apache:

$ sudo /etc/init.d/apache2 reload

Создание и инициализация репозитория

Перейдите в каталог с репозиториями и создайте новый bare-репозиторий:

$ cd /var/cache/git/

$ mkdir project.git

$ cd project.git

$ git init

Добавьте краткое описание и настройте имя и email для коммитов (если ещё не настроены):

$ echo "Short project's description" > .git/description

$ git config --global user.name "Your Name"

$ git config --global user.email "[email protected]"

Примечание: чтобы сделать первый commit, создайте локальный клон, добавьте файлы и выполните push в bare-репозиторий. Команда git commit -a в пустом bare-репозитории не создаст коммиты сама по себе.

Отметить репозиторий как экспортируемый для git-daemon

Для того чтобы git-daemon раздавал репозиторий по протоколу git, создайте файл .git/git-daemon-export-ok:

$ cd /var/cache/git/project.git

$ touch .git/git-daemon-export-ok

Запуск git-daemon

Git имеет лёгкий демон для шаринга репозиториев. Запустим его с базовым путём к репозиториям (без завершающего слеша):

$ git daemon --base-path=/var/cache/git --detach --syslog --export-all

Этот демон слушает порт 9418 по умолчанию. Теперь репозиторий доступен по URL типа git://server/project.git

Клонирование репозитория

С вашей рабочей машины выполните:

$ git clone git://server/project.git project

Если клонирование прошло успешно, у вас появится локальная папка project.

Альтернативные подходы

  • Доступ по SSH: безопаснее и проще для контроля прав. Настройка: git user + bare-репозиторий + SSH-ключи.
  • HTTP/HTTPS (smart HTTP): используйте git-http-backend и mod_cgi/mod_fcgi для безопасного доступа через TLS.
  • Хостинги: GitLab, Gitea, GitHub Enterprise — предоставляют UI, управление правами и CI.

Безопасность и жёсткая настройка

Важно:

  • Не используйте –export-all без крайней необходимости. Лучше разрешать экспорт только для конкретных репозиториев.
  • Защитите веб-интерфейс Apache: доступ по HTTPS, настройка директив Allow/Deny и аутентификация при необходимости.
  • Права на каталоги: владелец репозиториев должен быть системный пользователь (напр., git), права — 770/750 по необходимости.
  • Фаервол: откройте порт 9418 только для доверенных сетей, если репозиторий не должен быть полностью публичным.

Роль‑ориентированный чек‑лист

Администратору:

  • Установить git, gitweb.
  • Настроить Apache и права доступа.
  • Запустить git-daemon и проверить логи.

Разработчику:

  • Проверить git clone по git:// и через веб-интерфейс.
  • Сделать тестовый push и проверить видимость в gitweb.

Операциям (Ops):

  • Настроить бэкапы каталога /var/cache/git.
  • Автоматизировать создание новых bare-репозиториев.

Мини‑методология развертывания

  1. Установить пакеты. 2. Создать каталоги и права. 3. Настроить web (gitweb). 4. Инициализировать bare-репозиторий. 5. Разрешить экспорт и запустить daemon. 6. Протестировать клонирование и веб-доступ.

Критерии приёмки

  • Репозиторий доступен по git://server/project.git и корректно клонируется.
  • gitweb отображает список проекта и метаданные.
  • Права файлов и доступность через веб соответствуют политике безопасности.

Глоссарий (одна строка)

  • git: распределённая система контроля версий; gitweb: веб-интерфейс для просмотра репозиториев; git-daemon: простой демон для раздачи репозиториев по протоколу git.

Факты и числа

  • Порт по умолчанию для git-daemon: 9418.
  • Стандартный каталог в примере для репозиториев: /var/cache/git.
  • Стандартный каталог веб-документов в примере: /var/www.

Тестовые сценарии

  • Клонирование: git clone git://server/project.git должен завершиться без ошибок.
  • Веб-интерфейс: открытие http://server/git/ должно показать gitweb с проектом.
  • Разрешения: попытка записи от неавторизованного пользователя должна быть запрещена.

Резюме

Вы установили git и gitweb, создали bare-репозиторий, пометили его для экспорта и запустили git-daemon. Для продакшена рассмотрите доступ через SSH или HTTPS и настройку прав пользователей, бэкапы и мониторинг.

Важно: в продакшн‑среде публичный доступ требует дополнительной политики безопасности и резервного копирования.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро