aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md210
1 files changed, 112 insertions, 98 deletions
diff --git a/README.md b/README.md
index 182ca57..ac066d8 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,10 @@
+# Разворачивание git+Сgit под OpenResty
+
+Идея в том, что наружу показываются только публичные репозитории через Cgit, а репозитории приватные остаются доступными только по ssh.
+
+
+## Создание нового пользователя и создание папок публичных и приватных репозиториев
+
```
sudo adduser --system --shell /bin/bash --group --disabled-password git
@@ -8,179 +15,186 @@ 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
+## Создание репозитория (под созданным пользователем)
```
+sudo -u git mkdir -p /home/git/repositories/public/new.git
+sudo -u git git init --bare /home/git/repositories/public/new.git
```
-nano ~/.ssh/authorized_keys
-```
+## Установка Сgit
```
-
-sudo nano /usr/local/bin/git-create
-sudo chmod +x /usr/local/bin/git-create
+sudo apt update
+sudo apt install cgit spawn-fcgi fcgiwrap
+sudo systemctl status fcgiwrap.socket
```
-```
-sudo -u git mkdir -p /home/git/repositories/private/new.git
-sudo -u git git init --bare /home/git/repositories/private/new.git
+Cgit работает от www-data, поэтому даем права, но только на публичные репозитории
-```
```
-git remote remove origin
+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 chmod -R 755 /usr/share/cgit/
-git remote add origin git@IP_ВАШЕГО_СЕРВЕРА:/home/git/repositories/private/api.git
+```
-git push -u origin --all
+Подстветка синтаксиса:
```
+sudo apt update
+sudo apt install python3-pygments
+sudo apt install python3-markdown
+sudo chmod +x /usr/lib/cgit/filters/syntax-highlighting.py
+sudo chmod +x /usr/lib/cgit/filters/about-formatting.sh
+```
-```cd /var/www/new
-git init
-git add .
-git commit -m "Initial commit"
-
-git-create private new
+about-formatting.sh заменяем на about-formatting.sh из этого репозитория, чтобы не перебирал разные варианты рендеринга.
-git push -u origin --all
+Перед этим провяерем, что markdown рендерится
```
-
-## Установка cgit
+python3 -m markdown --version
+echo "# Тестовый заголовок" | /usr/lib/cgit/filters/about-formatting.sh readme.md
```
-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
+```
-Для запуска из корня:
+В нем должно быть так если хотим, чтобы Cgit работал в location / (virtual-root=/). Если в другом - вставляем другой, по умолчанию (если строки этой нет) работает от /git/
```
-sudo nano /etc/cgitrc
-
+cache-size=1000
virtual-root=/
css=/cgit-css/cgit.css
logo=/cgit-css/cgit.png
favicon=/cgit-css/favicon.ico
-enable-git-config=1
+source-filter=/usr/lib/cgit/filters/syntax-highlighting.py
+about-filter=/usr/lib/cgit/filters/about-formatting.sh
+readme=:README.md
+readme=:readme.md
+readme=:README.txt
+readme=:README
+root-readme=:README.md
+enable-git-config=0
remove-suffix=1
scan-path=/home/git/repositories/public
-main-title=Asustem.ru
+main-title=Мои репозитории
snapshots=tar.gz zip
+```
+Тест:
-sudo chmod -R 755 /usr/share/cgit/
+```
+CGIT_CONFIG=/etc/cgitrc /usr/lib/cgit/cgit.cgi
```
-Тест:
+
+При необходимости рестартуем cgit
```
-CGIT_CONFIG=/etc/cgitrc /usr/lib/cgit/cgit.cgi
+sudo systemctl restart fcgiwrap
```
-Конфигурация nginx:
+В конфиг OpenResty добавляем location в нужное место:
```
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;
- }
-```
+ 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
+# Клиентская часть
+
+Выпускаем ключи
+
```
+ssh-keygen -t ed25519 -f ~/.ssh/id_git_server -C "git-admin"
+cat ~/.ssh/id_git_server.pub
```
-sudo apt update
-sudo apt install python3-pygments
-sudo apt install python3-markdown
-sudo chmod +x /usr/lib/cgit/filters/syntax-highlighting.py
-sudo chmod +x /usr/lib/cgit/filters/about-formatting.sh
+
+Ключ копируем текстом и вставляем на сервере
+
```
+nano ~/.ssh/authorized_keys
```
-source-filter=/usr/lib/cgit/filters/syntax-highlighting.py
-about-filter=/usr/lib/cgit/filters/about-formatting.sh
-readme=:README.md
-readme=:readme.md
-readme=:README.txt
-readme=:README
+Чтобы git знал какой ключ используем:
+
+```
+nano ~/.ssh/config
```
+Добавляем:
+
```
-sudo systemctl restart fcgiwrap
+Host my-git-server
+ HostName IP_ВАШЕГО_СЕРВЕРА
+ User git
+ IdentityFile ~/.ssh/id_git_server
```
+Добавляем репозиторий в созданный на сервере тестовый (в папке локального репозитория):
+
+
```
-sudo nano /usr/lib/cgit/filters/about-formatting.sh
-python3 -m markdown --version
-echo "# Тестовый заголовок" | /usr/lib/cgit/filters/about-formatting.sh readme.md
+git remote remove origin
+git remote add origin git@IP_ВАШЕГО_СЕРВЕРА:/home/git/repositories/public/new.git
+
+git push -u origin --all
```
+Создаем скрипт для автоматического создания репозитория:
+
+
```
-virtual-root=/
-css=/cgit-css/cgit.css
-logo=/cgit-css/cgit.png
-favicon=/cgit-css/favicon.ico
-source-filter=/usr/lib/cgit/filters/syntax-highlighting.py
-about-filter=/usr/lib/cgit/filters/about-formatting.sh
-readme=:README.md
-readme=:readme.md
-readme=:README.txt
-readme=:README
-root-readme=README.md
-enable-git-config=1
-remove-suffix=1
-scan-path=/home/git/repositories/public
-main-title=Asustem.ru
-snapshots=tar.gz zip
+sudo nano /usr/local/bin/git-create
+sudo chmod +x /usr/local/bin/git-create
+
+```
+
+В этот скрипт вставляем код из git-create из этого репозитория и далее создаем репозитории с использованием его:
+
+
+```
+git init
+git add .
+git commit -m "Initial commit"
+git-create private new
+git push -u origin --all
+
```