- Начиная
- Introduction
- На этой странице
- Configuring Git repository
- Настройка локального репозитория Git
- Тестовый HTTP-сервер Git
- Setting Up the Server
- Установите Nginx и Git
- Настраиваем сервер
- Getting Git on a Server
- Putting the Bare Repository on a Server
- Small Setups
- SSH Access
- Настроить Nginx для Git
- Настройка сервера Git
- Предпосылки
- Installing Git server
- Создайте репозиторий Git
- Заключение
- Conclusion
- Выводы
Начиная
Перед запуском рекомендуется обновить пакеты сервера до последней версии. Вы можете обновить их с помощью следующей команды:
apt-get update -y
Introduction
When working with the Git version control system, you have many choices such as Github, Bitbucket, or Gitlab. If you want to avoid depending on third-party providers, you can run your own Git server.
Setting up a Git server by yourself allows you to no longer be restricted by public providers’ free plans such as maximum repository size, creating unlimited private repositories, and so on.
This tutorial will show you the way to set up a Git server on your Ubuntu 20.04 machine.
Когда дело доходит до хостинга Git, у вас есть несколько вариантов. GitHub, Gitlab и Bitbucket — популярные решения, но стоит рассмотреть возможность запуска собственного сервера Git.
Настройка Git Server позволяет создавать частные репозитории без ограничений бесплатных планов провайдеров.
В этом руководстве мы объясним, как настроить чистый сервер Git в Linux. Эта установка хороша, если у вас мало репозиториев, а соавторы технически подкованы. В противном случае вам следует подумать об установке самостоятельного приложения git, такого как Gitea, Gogs
или Gitlab
.
Сервер Git можно настроить на любой удаленной машине Linux или даже в вашей локальной системе.
На этой странице
- Предпосылки
- Начало работы
- Установите Nginx и Git
- Создание репозитория Git
- Настройка Nginx для Git
- Тест HTTP-сервера Git
- Заключение
Git — это бесплатная система управления версиями с открытым исходным кодом, разработанная Линусом Торвальдсом. Его используют миллионы разработчиков по всему миру. GitHub также предлагает бесплатный хостинг кода. Однако бесплатный сервис не позволяет размещать код в частном порядке. В этом случае вы можете разместить свой собственный сервер для размещения кода на Git HTTP-сервере. Это даст вам полный контроль над сервером.
В этом руководстве мы покажем вам, как установить и настроить HTTP-сервер Git с Nginx в Ubuntu 20.04.
Configuring Git repository
$ ssh-keygen -t rsa

Now, you can retrieve your public SSH key by running:
$ cat .ssh/id_rsa.pub

On your local Ubuntu 20.04 machine, assuming that you already had an unversioned directory, for example, ~/go. Change the current directory to it:
$ cd ~/go
$ git init .
Next, you have to add a git remote to track your local repository on Git server:
$ git remote add origin git@git-server-ip-address:linuxways.git
$ cd ~/go
$ touch README
$ git add .
$ git commit -m "Add file Readme"
$ git push origin master

Настройка локального репозитория Git
Чтобы иметь возможность отправлять локальные изменения git на сервер Git, вам нужно добавить открытый ключ SSH локального пользователя в файл authorized_keys
удаленного пользователя «git».
Если у вас уже есть пара ключей SSH, созданная в вашей локальной системе, вы можете отобразить открытый ключ, набрав:
cat ~/.ssh/id_rsa.pub Результат должен выглядеть примерно так:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDd/mnMzHwjUzK8g3ldfsfRpJuC16mhWamaXRk8ySQrD/dzpbRLfDnZsLxCzRoq+ZzFHGwcQlJergtergdHGRrO8FE5jl3IWRRp+mP12qYw== [email protected] Если вы получаете сообщение об ошибке « No such file or directory
, это означает, что у вас нет пары ключей SSH, созданной на вашем локальном компьютере.
Чтобы сгенерировать новую пару ключей SSH,
используйте следующую команду:
ssh-keygen -t rsa -b 4096 -C "[email protected]" Скопируйте вывод команды cat
выше и вернитесь в консоль сервера Git.
На сервере откройте текстовый редактор
и вставьте открытый ключ, который вы скопировали с локального компьютера, в файл ~/.ssh/authorized_keys
:
sudo nano /home/git/.ssh/authorized_keys Весь текст открытого ключа должен быть в одной строке.
Мы предполагаем, что пакет Git уже установлен на вашем локальном компьютере. Если нет, установите его так же, как описано в предыдущих разделах.
Если у вас есть неверсированный проект, перейдите в каталог проекта. Если вы начинаете с нуля, создайте каталог проекта и перейдите к нему:
cd /path/to/local/project Инициализируем репозиторий git:
git init . Последний шаг — добавить git remote
в ваш локальный репозиторий:
git remote add origin git@git_server_ip:projectname.git Чтобы убедиться, что все настроено правильно, создайте тестовый файл
:
touch test_file Добавьте изменения в область подготовки:
git add . git commit -m "descriptive message" Отправьте изменения локального репозитория в удаленный репозиторий:
git push -u origin master Если все настроено правильно, результат должен выглядеть примерно так:
Counting objects: 3, done.
Writing objects: 100% (3/3), 218 bytes | 218.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git_server_ip:projectname.git * [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'. Чтобы добавить нового соавтора, просто скопируйте его открытый SSH-ключ в файл ~/.ssh/authorized_keys
пользователя «git».
Вы можете использовать те же шаги для создания новых репозиториев. Важно отметить, что удаленный репозиторий должен существовать до того, как вы добавите git remote в свой локальный репозиторий.
Тестовый HTTP-сервер Git
На данный момент сервер Git установлен и настроен. Теперь пришло время протестировать его.
На клиентском компьютере установите пакет Git с помощью следующей команды:
apt-get install git -y
После установки создайте каталог с именем myapp с помощью следующей команды:
mkdir myapp
Затем перейдите в новый каталог и инициализируйте Git с помощью следующей команды:
cd myapp
git init
Затем добавьте удаленный репозиторий Git с помощью следующей команды:
git remote add origin http:///gituser.git
Затем создайте каталоги app1 и app2, а также создайте файлы app1 и app2 с некоторым содержимым внутри этих каталогов:
mkdir app1 app2
echo "This is my first application" > app1/app1
echo "This is my first application" > app2/app2
Затем добавьте все каталоги и файлы в репозиторий с помощью следующей команды:
git add .
Затем зафиксируйте изменения с помощью следующей команды:
git commit -a -m "Add files and directories"
Вы должны получить следующий результат:
[master (root-commit) 4e90372] Add files and directories 2 files changed, 2 insertions(+) create mode 100644 app1/app1 create mode 100644 app2/app2
Затем отправьте эти изменения на удаленный сервер Git с помощью следующей команды:
git push origin master
Вам будет предложено ввести пароль для удаленного пользователя Git, как показано ниже:
Password for 'http://':
Введите свой пароль и нажмите Enter. Вы должны получить следующий результат:
Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (5/5), 354 bytes | 0 bytes/s, done. Total 5 (delta 0), reused 0 (delta 0) To http:///gituser.git * [new branch] master -> master
Приведенный выше вывод указывает на то, что ваши файлы и каталоги добавлены в удаленный репозиторий Git. Если вы хотите клонировать этот репозиторий в свою локальную систему, выполните следующую команду:
git clone http:///gituser.git
Вы должны получить следующий результат:
Cloning into 'gituser'. Password for 'http://': remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (2/2), done. remote: Total 5 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (5/5), done. Checking connectivity. done.
Setting Up the Server
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys $ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair $ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys Now, you can set up an empty repository for them by running git init
with the --bare
option, which initializes the repository without a working directory:
$ cd /srv/git
$ mkdir project.git
$ cd project.git
$ git init --bare
Initialized empty Git repository in /srv/git/project.git/ # on John's computer
$ cd myproject
$ git init
$ git add .
$ git commit -m 'Initial commit'
$ git remote add origin git@gitserver:/srv/git/project.git
$ git push origin master At this point, the others can clone it down and push changes back up just as easily:
$ git clone git@gitserver:/srv/git/project.git
$ cd project
$ vim README
$ git commit -am 'Fix for README file'
$ git push origin master With this method, you can quickly get a read/write Git server up and running for a handful of developers.
$ cat /etc/shells # see if git-shell is already in there. If not...
$ which git-shell # make sure git-shell is installed on your system.
$ sudo -e /etc/shells # and add the path to git-shell from last command $ sudo chsh git -s $(which git-shell) $ ssh git@gitserver
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to gitserver closed. no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty The result should look like this:
$ cat ~/.ssh/authorized_keys
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6h
PB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541N
YsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcC
IicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBd
LQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJ
ICUvax2T9va5 gsg-keypair
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDEwENNMomTboYI+LJieaAY16qiXiH3wuvENhBG... Установите Nginx и Git
Далее вам нужно будет установить веб-сервер Nginx, Git и другие необходимые пакеты в вашу систему. Вы можете установить их с помощью следующей команды:
apt-get install nginx git fcgiwrap apache2-utils unzip -y
После установки всех пакетов можно переходить к следующему шагу.
Настраиваем сервер
Давайте рассмотрим настройку доступа по SSH на стороне сервера.
В этом примере мы будем использовать метод authorized_keys
для аутентификации пользователей.
Мы подразумеваем, что вы используете стандартный дистрибутив Linux типа Ubuntu.
Для начала создадим пользователя git
и каталог .ssh
для этого пользователя:
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys Затем вам нужно добавить открытые SSH-ключи разработчиков в файл authorized_keys
пользователя git
.
Предположим, у вас уже есть несколько таких ключей и вы сохранили их во временные файлы.
Напомним, открытый ключ выглядит примерно так:
$ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair Вы просто добавляете их в файл .ssh/authorized_keys
в домашнем каталоге пользователя git
:
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys Теперь вы можете создать пустой репозиторий для них, запустив git init
с параметром --bare
, что инициализирует репозиторий без рабочего каталога:
$ cd /srv/git
$ mkdir project.git
$ cd project.git
$ git init --bare
Initialized empty Git repository in /srv/git/project.git/ После этого Джон, Джози или Джессика могут отправить первую версию их проекта в этот репозиторий, добавив его как удалённый и отправив соответствующую ветку.
Заметьте, что кто-то должен заходить на сервер и создавать голый репозиторий каждый раз, когда вы хотите добавить проект.
Пусть gitserver
— имя хоста сервера, на котором вы создали пользователя git
и репозиторий.
Если он находится в вашей внутренней сети и вы создали DNS запись для gitserver
, указывающую на этот сервер, то можно использовать следующие команды как есть (считая что myproject
это существующий проект с файлами):
# На компьютере Джона
$ cd myproject
$ git init
$ git add .
$ git commit -m 'Initial commit'
$ git remote add origin git@gitserver:/srv/git/project.git
$ git push origin master Теперь все остальные могут клонировать его и отправлять в него изменения:
$ git clone git@gitserver:/srv/git/project.git
$ cd project
$ vim README
$ git commit -am 'Fix for README file'
$ git push origin master Этим способом вы можете быстро получить Git-сервер с доступом на чтение/запись для небольшой группы разработчиков.
Заметьте, что теперь все эти пользователи могут заходить на сервер как пользователь git
.
Чтобы это предотвратить, нужно изменить ему оболочку на что-то другое в файле /etc/passwd
.
Вы можете легко ограничить пользователя git
только действиями, связанными с Git, с помощью ограниченной оболочки git-shell
, поставляемой вместе с Git.
Если указать её в качестве командного интерпретатора для пользователя git
, то он не сможет получить доступ к обычной командной оболочке на вашем сервере.
Для её использования, укажите git-shell
вместо bash или csh для пользователя git
.
Для этого вы должны сначала добавить git-shell
в /etc/shells
если её там ещё нет:
$ cat /etc/shells # посмотрим, присутствует ли `git-shell`. Если нет...
$ which git-shell # проверим, что `git-shell` установлена.
$ sudo -e /etc/shells # и добавим путь к `git-shell` из предыдущей команды $ sudo chsh git -s $(which git-shell) $ ssh git@gitserver
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to gitserver closed. На текущий момент пользователи всё ещё могут использовать перенаправление порта SSH для доступа к другим Git серверам, к которым текущий может подключиться.
Если это нужно отключить, вы можете добавить следующие опции в файл authorized_keys
перед теми ключами, для которых нужно применить это ограничение:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty В результате файл будет выглядеть следующим образом:
$ cat ~/.ssh/authorized_keys
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6h
PB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541N
YsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcC
IicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBd
LQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJ
ICUvax2T9va5 gsg-keypair
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDEwENNMomTboYI+LJieaAY16qiXiH3wuvENhBG... Теперь сетевые команды Git будут работать, но пользователи не смогут заходить на сервер.
Вы также можете создать подкаталог в домашнем каталоге пользователя git
, чтобы немного изменить поведение git-shell
.
Например, вы можете ограничить команды Git, которые сервер будет принимать или сообщение, которое увидят пользователи если попробуют зайти по SSH.
Для получения дополнительной информации по настройке оболочки запустите команду git help shell
.
Getting Git on a Server
Now we’ll cover setting up a Git service running these protocols on your own server.
In order to initially set up any Git server, you have to export an existing repository into a new bare repository — a repository that doesn’t contain a working directory.
This is generally straightforward to do.
In order to clone your repository to create a new bare repository, you run the clone command with the --bare
option.
By convention, bare repository directory names end with the suffix .git
, like so:
$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done. You should now have a copy of the Git directory data in your my_project.git
directory.
This is roughly equivalent to something like:
$ cp -Rf my_project/.git my_project.git There are a couple of minor differences in the configuration file but, for your purpose, this is close to the same thing.
It takes the Git repository by itself, without a working directory, and creates a directory specifically for it alone.
Putting the Bare Repository on a Server
Now that you have a bare copy of your repository, all you need to do is put it on a server and set up your protocols.
Let’s say you’ve set up a server called git.example.com
to which you have SSH access, and you want to store all your Git repositories under the /srv/git
directory.
Assuming that /srv/git
exists on that server, you can set up your new repository by copying your bare repository over:
$ scp -r my_project.git user@git.example.com:/srv/git $ git clone user@git.example.com:/srv/git/my_project.git $ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --shared You see how easy it is to take a Git repository, create a bare version, and place it on a server to which you and your collaborators have SSH access.
Now you’re ready to collaborate on the same project.
Small Setups
SSH Access
If you have a server to which all your developers already have SSH access, it’s generally easiest to set up your first repository there, because you have to do almost no work (as we covered in the last section).
If you want more complex access control type permissions on your repositories, you can handle them with the normal filesystem permissions of your server’s operating system.
If you want to place your repositories on a server that doesn’t have accounts for everyone on your team for whom you want to grant write access, then you must set up SSH access for them.
We assume that if you have a server with which to do this, you already have an SSH server installed, and that’s how you’re accessing the server.
Настроить Nginx для Git
Далее вам нужно будет настроить Nginx для обслуживания репозитория Git. Вы можете создать новый файл конфигурации виртуального хоста для Git с помощью следующей команды:
nano /etc/nginx/conf.d/git.conf
Добавьте следующие строки:
server { listen 80; root /var/www/html/git; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name git.example.com; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; }
location ~ (/.*) { client_max_body_size 0; auth_basic "Git Login"; auth_basic_user_file "/var/www/html/git/htpasswd"; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /var/www/html/git; fastcgi_param REMOTE_USER $remote_user; fastcgi_param PATH_INFO $1; fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
} Сохраните и закройте файл, когда закончите. Затем проверьте Nginx на наличие синтаксической ошибки с помощью следующей команды:
nginx -t
Вы должны получить следующий результат:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Затем перезапустите службу Nginx, чтобы применить изменения:
systemctl restart nginx
Вы также можете проверить статус службы Nginx, используя следующую команду:
systemctl status nginx
Вы должны получить следующий результат:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-11-17 07:43:46 UTC; 4s ago Docs: man:nginx/srv/git Process: 3240 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 3256 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 3257 (nginx) Tasks: 3 (limit: 4691) Memory: 3.5M CGroup: /system.slice/nginx.service ??3257 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??3258 nginx: worker process ??3259 nginx: worker process
Nov 17 07:43:46 ubunt4 systemd[1]: Starting A high performance web server and a reverse proxy server.
Nov 17 07:43:46 ubunt4 systemd[1]: Started A high performance web server and a reverse proxy server. Настройка сервера Git
Первый шаг — установить Git на ваш сервер.
Если вы используете Debian или Ubuntu, обновите индекс локального пакета и установите git
, выполнив следующие команды от имени пользователя sudo:
sudo apt update && sudo apt install git Чтобы установить пакет git на
серверы CentOS,
введите:
sudo yum install git Затем создайте нового пользователя,
который будет управлять репозиториями Git:
sudo useradd -r -m -U -d /home/git -s /bin/bash git Домашний каталог пользователя установлен в /home/git
. Все репозитории будут храниться в этом каталоге. Мы не устанавливали пароль для пользователя «git», вход в систему будет возможен только с использованием ключей ssh.
Переключитесь на пользователя «git» с помощью команды su
:
sudo su - git Выполните следующие команды, чтобы создать каталог SSH
и установить правильные разрешения
:
mkdir -p ~/.ssh && chmod 0700 ~/.ssh Создайте файл с именем ~/.ssh/authorized_keys
котором будут храниться SSH-ключи авторизованных пользователей:
touch ~/.ssh/authorized_keys && chmod 0600 ~/.ssh/authorized_keys Вот и все. Настройка сервера завершена. Теперь вы готовы создать свой первый репозиторий Git.
Выполните следующую команду, чтобы создать новый пустой репозиторий:
git init --bare ~/projectname.git Вы можете назвать каталог как хотите. Важно создать репозиторий в домашнем каталоге пользователя «git».
Initialized empty Git repository in /home/git/projectname.git/ Предпосылки
- Сервер под управлением Ubuntu 20.04.
- Действительное доменное имя, указанное с IP-адресом вашего сервера.
- Пароль root настраивается на сервере.
Installing Git server
Firstly, update your packages list by running:
$ sudo apt update
$ sudo apt install git
Verify that Git was successfully installed on your system:
$ git version

$ sudo useradd -m -r -U -d /home/git-repos git
$ sudo su - git
$ mkdir -p ~/.ssh
$ chmod 700 ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

Once, the server was successfully set-up, it’s time to create a new git repository:
$ git init --bare ~/linuxways.git

Создайте репозиторий Git
Затем вам нужно будет создать репозиторий Git в корневом веб-каталоге Nginx. Сначала создайте каталог с именем git с помощью следующей команды:
mkdir /var/www/html/git
Затем измените каталог на git и создайте новый каталог для репозитория Git:
cd /var/www/html/git
mkdir gituser.git
Затем перейдите в этот новый каталог и инициализируйте репозиторий Git с помощью команды:
git --bare init
Затем обновите Git Server с помощью команды:
git update-server-info
Затем установите права собственности и разрешения для каталога git с помощью следующей команды:
chown -R www-data:www-data /var/www/html/git
chmod -R 755 /var/www/html/git
htpasswd -c /var/www/html/git/htpasswd gituser
Вам будет предложено установить пароль, как показано ниже:
New password: Re-type new password: Adding password for user gituser
Теперь вы можете подтвердить свой пароль с помощью следующей команды:
cat /var/www/html/git/htpasswd
Вы должны получить следующий результат:
gituser:$apr1$iPKZDbFB$ziRRbGXzVMMHaPYOtL05m/
Заключение
Поздравляем! вы успешно установили и настроили HTTP-сервер Git на сервере Ubuntu 20.04. Теперь вы можете внедрить сервер Git в свою среду разработки, доступную из вашей локальной сети.
Conclusion
In this tutorial, we’ve described the detailed steps of installing and configuring a Git server.
If you encounter any problems, please let me know.

Выводы
В этом руководстве мы показали вам, как настроить собственный частный сервер Git и создать репозитории.

