``` sudo adduser --system --shell /bin/bash --group --disabled-password git # Переключаемся на пользователя git sudo -u git -i # Создаем структуру папок mkdir -p ~/repositories/public mkdir -p ~/repositories/private mkdir ~/.ssh # Задаем жесткие права доступа (чтение/запись только для владельца) chmod 700 ~/.ssh ``` ``` ssh-keygen -t ed25519 -f ~/.ssh/id_git_server -C "git-admin" cat ~/.ssh/id_git_server.pub Host my-git-server HostName IP_ВАШЕГО_СЕРВЕРА User git IdentityFile ~/.ssh/id_git_server ``` ``` nano ~/.ssh/authorized_keys ``` ``` sudo nano /usr/local/bin/git-create sudo chmod +x /usr/local/bin/git-create ``` ``` sudo -u git mkdir -p /home/git/repositories/private/new.git sudo -u git git init --bare /home/git/repositories/private/new.git ``` ``` git remote remove origin git remote add origin git@IP_ВАШЕГО_СЕРВЕРА:/home/git/repositories/private/api.git git push -u origin --all ``` ```cd /var/www/new git init git add . git commit -m "Initial commit" git-create private new git push -u origin --all ``` ## Установка cgit ``` sudo apt update sudo apt install cgit spawn-fcgi fcgiwrap sudo systemctl status fcgiwrap.socket ``` ``` sudo chown -R git:www-data /home/git/repositories/public sudo find /home/git/repositories/public -type d -exec chmod 750 {} \; sudo find /home/git/repositories/public -type f -exec chmod 640 {} \; sudo chmod +x /home/git sudo chmod +x /home/git/repositories sudo chmod +x /home/git/repositories/public ``` Для запуска из корня: ``` sudo nano /etc/cgitrc virtual-root=/ css=/cgit-css/cgit.css logo=/cgit-css/cgit.png favicon=/cgit-css/favicon.ico enable-git-config=1 remove-suffix=1 scan-path=/home/git/repositories/public main-title=Asustem.ru snapshots=tar.gz zip sudo chmod -R 755 /usr/share/cgit/ ``` Тест: ``` CGIT_CONFIG=/etc/cgitrc /usr/lib/cgit/cgit.cgi ``` Конфигурация nginx: ``` location /cgit-css/ { alias /usr/share/cgit/; try_files $uri =404; } location / { include fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/cgit/cgit.cgi; fastcgi_param PATH_INFO $uri; fastcgi_param QUERY_STRING $args; fastcgi_pass unix:/run/fcgiwrap.socket; } ``` ``` .git/config [gitweb] description = Мой тестовый репозиторий owner = user ```