From a8c316693648786f1b0ead04fcbaf056dd810439 Mon Sep 17 00:00:00 2001 From: AnthonyAxenov Date: Mon, 29 Sep 2025 02:35:38 +0800 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D1=83=D0=BF=D1=80=D0=BE=D1=89=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8=20ssh?= =?UTF-8?q?=20+=20=D1=82=D0=BE=D1=87=D0=B5=D1=87=D0=BD=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 1 + README.md | 73 +++++++++++++-------------------- gitea/config-gitea-ssh.sh | 48 ++++++++++++++++++++++ gitea/{gitea.sh => gitea-shell} | 0 4 files changed, 77 insertions(+), 45 deletions(-) create mode 100755 gitea/config-gitea-ssh.sh rename gitea/{gitea.sh => gitea-shell} (100%) diff --git a/.env.example b/.env.example index 1844239..c6062be 100644 --- a/.env.example +++ b/.env.example @@ -6,6 +6,7 @@ GITEA_DB_NAME= GITEA_HOST_DB_PORT=3306 GITEA_HOST_WEB_PORT=8080 GITEA_HOST_SSH_PORT=222 +RUNNER_REG_TOKEN= OG_DB_ROOT_PASSWORD= OG_DB_USER= diff --git a/README.md b/README.md index 544afec..d016f18 100644 --- a/README.md +++ b/README.md @@ -35,11 +35,11 @@ - Скопировать существующий конфиг скопировать в `./opengist/opengist.yml` и скорректировать по необходимости - Снять дамп mysql и положить в `./opengist/dump.sql.gz` - Директории с данными скопировать в `./opengist/data` -1. Убедиться, что владельцем `./` является юзер с `UID`/`GID`=`1000`, если нет -- `chown -R 1000:1000 ./` -2. Запустить через `docker compose up -d --build` -3. Проверить логи через `docker logs -f ...` -4. Проверить веб-морды через `curl -I localhost:...` -5. (Необязательно) Если есть домены: +5. Убедиться, что владельцем `./` является юзер `git`, если нет -- присвоить владение ему +6. Запустить через `docker compose up -d --build` +7. Проверить логи через `docker logs -f ...` +8. Проверить веб-морды через `curl -I localhost:...` +9. (Необязательно) Если есть домены: - Настроить nginx на хосте как реверс-прокси из внешки в контейнеры: (поменять `server_name` и порты на свои) @@ -48,17 +48,17 @@ ``` server { - listen 80; - listen [::]:80; - server_name git.example.com + listen 80; + listen [::]:80; + server_name git.example.com - access_log /var/log/nginx/gitea-access.log; - error_log /var/log/nginx/gitea-error.log; - client_max_body_size 100M; + access_log /var/log/nginx/gitea-access.log; + error_log /var/log/nginx/gitea-error.log; + client_max_body_size 100M; - location / { - proxy_pass http://127.0.0.1:8080; - } + location / { + proxy_pass http://127.0.0.1:8080; + } } ``` @@ -69,17 +69,17 @@ ``` server { - listen 80; - listen [::]:80; - server_name gist.example.com + listen 80; + listen [::]:80; + server_name gist.example.com - access_log /var/log/nginx/opengist-access.log; - error_log /var/log/nginx/opengist-error.log; - client_max_body_size 100M; + access_log /var/log/nginx/opengist-access.log; + error_log /var/log/nginx/opengist-error.log; + client_max_body_size 100M; - location / { - proxy_pass http://127.0.0.1:8081; - } + location / { + proxy_pass http://127.0.0.1:8081; + } } ``` @@ -100,26 +100,7 @@ ## Gitea + ssh через хостовый порт -Если порт openssh на хосте занят (по дефолту 22), то пробросить его же напрямую из докера не получится. - -Поэтому предлагается использовать порт 222 или другой (`GITEA_HOST_SSH_PORT`) - -1. Запомнить абсолютный путь до скрипта [./gitea/gitea.sh](./gitea/gitea.sh) (например, `/home/user/gitea/gitea/gitea.sh`) -2. Назначить его оболочкой для системного юзера `git` - - ```shell - usermod -s /home/user/gitea/gitea/gitea.sh git - ``` - -4. Создать конфиг `/etc/ssh/sshd_config.d/gitea.conf` следующее: - - ```shell - Match User git - AuthorizedKeysCommandUser git - AuthorizedKeysCommand /usr/bin/docker exec -i gitea /usr/local/bin/gitea keys -e git -u %u -t %t -k %k - ``` - -5. Перезапустить демона через `systemctl restart sshd` +Выполнить скрипт [`./gitea/config-gitea-ssh.sh`](./gitea/config-gitea-ssh.sh). ## Настройка Gitea Actions (runner) @@ -130,17 +111,19 @@ ENABLED=true ``` +Для версий выше этого делать не нужно. + Для начала нужно запустить всю среду. Чтобы раннер заработал, его нужно зарегистрировать в Gitea с помощью токена регистрации. -Раннеры могут работать в разных скоупах: на уровне репозитория, организации или глобально. +Раннеры могут работать в разных скоупах: на уровне пользователя, репозитория, организации или глобально. Базово, для создания глобального раннера, нужно зайти в раздел админки со [списком раннеров](http://localhost:8080/-/admin/actions/runners) и найти кнопку в правом верхнем углу. ![Скриншот админки из документации, весьма старый, но суть передаёт](https://docs.gitea.com/assets/images/register-runner-9a8b9ef53a945ba67fe002b581b1ecf4.png) -Токен из этого поля нужно скопировать в файл [`.env`](.env.example) в переменную `RUNNER_REG_TOKEN` и перезапустить контейнер `gitea-runner` или всю среду по желанию. +Токен из этого поля нужно скопировать в файл [`.env`](.env.example) в переменную `RUNNER_REG_TOKEN` и пересоздать контейнер `gitea-runner`. В логах раннера должны быть подобные строчки: diff --git a/gitea/config-gitea-ssh.sh b/gitea/config-gitea-ssh.sh new file mode 100755 index 0000000..d51361b --- /dev/null +++ b/gitea/config-gitea-ssh.sh @@ -0,0 +1,48 @@ +#!/bin/bash +set -e + +# ================================================================================== + +echo "Configuring user 'git'..." + +if ! id git; then + sudo adduser \ + --system \ + --disabled-password \ + --group \ + --gecos 'Gitea user' \ + --home /home/git \ + git +fi + +sudo passwd -d git +sudo usermod -aG docker git + +currentdir=$(dirname $(readlink -e -- "${BASH_SOURCE}")) +sudo cp -f "$currentdir/gitea-shell" /home/git/ +sudo chmod a+x /home/git/gitea-shell +sudo usermod -s /home/git/gitea-shell git + +sudo mkdir -p /home/git/.ssh +sudo chown -R git:git /home/git +sudo chmod 755 /home/git +sudo chmod 700 /home/git/.ssh + +# ================================================================================== + +cfgpath="/etc/ssh/sshd_config.d/gitea.conf" +echo "Installing new ssh config: $cfgpath" +sudo tee "$cfgpath" > /dev/null <