Files
gitea-opengist/README.md

155 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Gitea + OpenGist docker environment
Подробности: https://axenov.dev/gitea-to-docker
Ниже краткая выжимка этого поста.
Стек:
- gitea (latest) + mariadb 10.6
- opengist (latest) + mariadb 10.6
- git, docker, docker-compose-plugin; могут понадобиться ssh, scp, nginx, certbot, любой текстовый редактор
## Порядок действий
### Для переноса сервисов с другого сервера
1. Клонировать репозиторий
2. Выполнить `cp ./.env.example ./.env` и указать корректные данные для подключения
3. Создать пользователя git, подробности [описаны в блоге](https://axenov.dev/gitea-to-docker)
4. Выполнить `cp ./gitea/app.example.ini ./gitea/app.ini` и указать необходимые настройки
**ИЛИ**
- (Необязательно) Для переноса инстанса Gitea:
- Потушить сервис (не сервер)
- Выполнить `cp ./compose.override.yml.example ./compose.override.yml`
- Скопировать существующий конфиг в `./gitea/app.ini` и скорректировать по необходимости
- Снять дамп mysql и положить в `./gitea/dump.sql.gz`
- Директории с данными скопировать в `./gitea/data`
- (Необязательно) Для переноса инстанса Gitea Runner:
- Выполнить `cp ./compose.override.yml.example ./compose.override.yml`, если ещё не
- Скопировать старый конфиг в `./runner/config.yaml` и скорректировать по необходимости
**ИЛИ**
- Выполнить `cp ./runner/config.example.yaml ./runner/config.yaml` и скорректировать по необходимости
- (Необязательно) Для переноса инстанса OpenGist:
- Потушить сервис (не сервер)
- Выполнить `cp ./compose.override.yml.example ./compose.override.yml`, если ещё не
- Скопировать существующий конфиг скопировать в `./opengist/opengist.yml` и скорректировать по необходимости
- Снять дамп mysql и положить в `./opengist/dump.sql.gz`
- Директории с данными скопировать в `./opengist/data`
5. Убедиться, что владельцем `./` является юзер `git`, если нет -- присвоить владение ему
6. Запустить через `docker compose up -d --build`
7. Проверить логи через `docker logs -f ...`
8. Проверить веб-морды через `curl -I localhost:...`
9. (Необязательно) Если есть домены:
- Настроить nginx на хосте как реверс-прокси из внешки в контейнеры:
(поменять `server_name` и порты на свои)
<details>
<summary>Файл: /etc/nginx/sites-available/gitea.conf</summary>
```
server {
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;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
```
</details>
<details>
<summary>Файл: /etc/nginx/sites-available/opengist.conf</summary>
```
server {
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;
location / {
proxy_pass http://127.0.0.1:8081;
}
}
```
</details>
- Сделать линки и перезапустить `nginx`
```shell
ln -s /etc/nginx/sites-available/gitea.conf /etc/nginx/sites-enabled/gitea.conf
ln -s /etc/nginx/sites-available/opengist.conf /etc/nginx/sites-enabled/opengist.conf
unlink /etc/nginx/sites-enabled/default
systemctl restart nginx
```
- Переключить DNS на новый IP
- Проверить веб-морды по доменам через `curl -i ...`
- (Необязательно) Настроить SSL через `certbot`
## Gitea + ssh через хостовый порт
Выполнить скрипт [`./gitea/config-gitea-ssh.sh`](./gitea/config-gitea-ssh.sh).
## Настройка Gitea Actions (runner)
При использовании Gitea версии ниже 1.21.0, необходимо в `./gitea/app.ini` добавить строчки:
```ini
[actions]
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`.
В логах раннера должны быть подобные строчки:
```
level=info msg="Registering runner, arch=amd64, os=linux, version=v0.2.11."
level=debug msg="Successfully pinged the Gitea instance server"
level=info msg="Runner registered successfully."
SUCCESS
time="2025-04-08T02:14:17Z" level=info msg="Starting runner daemon"
time="2025-04-08T02:14:17Z" level=info msg="runner: gitea-runner, with version: v0.2.11, with labels: [ubuntu-latest ubuntu-22.04 ubuntu-20.04], declare successfully"
```
В списке раннеров должен отобразиться `gitea-runner` в зелёном статусе "Простаивает".
Если во время выполнения экшена `actions/checkout@v4` возникает ошибка `Could not resolve host`, то в конфиге `./runner/config.yaml` надо указать имя сети:
```yaml
container:
network: "gitea_network"
```
Доп. информация:
* https://axenov.dev/gitea-to-docker
* https://docs.gitea.com/installation/install-with-docker-rootless
* https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini
* https://docs.gitea.com/administration/config-cheat-sheet
* https://docs.gitea.com/usage/actions/quickstart
* https://docs.gitea.com/usage/actions/act-runner