Актуализирован README, шаблон конфига gitea

This commit is contained in:
2025-09-25 11:21:31 +08:00
parent eb9d44a3c7
commit 1883f6459b
3 changed files with 2931 additions and 71 deletions

3
.gitignore vendored
View File

@@ -1,4 +1,4 @@
/gitea/*.ini
/gitea/app.ini
/gitea/data/
/runner/*.yaml
@@ -17,7 +17,6 @@
*.sql
*.sql.*
*.log
*.ini
*dump*
*backup*

143
README.md
View File

@@ -14,89 +14,95 @@
### Для переноса сервисов с другого сервера
1. Клонировать репозиторий
2. Выполнить `cp .env.example .env` и указать корректные данные для подключения
3. (Необязательно) Для переноса инстанса Gitea:
1. Потушить сервис (не сервер)
2. Выполнить `cp compose.override.yml.example compose.override.yml`
3. Скопировать существующий конфиг в `./gitea/app.ini` и скорректировать по необходимости
4. Снять дамп mysql и положить в `./gitea/dump.sql.gz`
5. Директории с данными скопировать в `./gitea/data`
4. (Необязательно) Для переноса инстанса Gitea Runner:
* Выполнить `cp compose.override.yml.example compose.override.yml`, если ещё не
* Скопировать старый конфиг в `./runner/config.yaml` и скорректировать по необходимости
ИЛИ
* Выполнить `cp ./runner/config.example.yaml ./runner/config.yaml` и скорректировать по необходимости
5. (Необязательно) Для переноса инстанса OpenGist:
1. Потушить сервис (не сервер)
2. Выполнить `cp compose.override.yml.example compose.override.yml`
3. Скопировать существующий конфиг скопировать в `./opengist/opengist.yml` и скорректировать по необходимости
4. Снять дамп mysql и положить в `./opengist/dump.sql.gz`
5. Директории с данными скопировать в `./opengist/data`
6. Убедиться, что владельцем `./` является юзер с `UID`=`1000`, если не -- `cd ..; chown -R 1000:1000 gitea; cd -`
7. Запустить через `docker compose up -d --build`
8. Проверить логи через `docker logs -f ...`
9. Проверить веб-морды через `curl -I localhost:...`
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`
1. Убедиться, что владельцем `./` является юзер с `UID`/`GID`=`1000`, если нет -- `chown -R 1000:1000 ./`
2. Запустить через `docker compose up -d --build`
3. Проверить логи через `docker logs -f ...`
4. Проверить веб-морды через `curl -I localhost:...`
5. (Необязательно) Если есть домены:
- Настроить nginx на хосте как реверс-прокси из внешки в контейнеры:
(поменять `server_name` и порты на свои)
Опционально, если есть домены:
<details>
<summary>Файл: /etc/nginx/sites-available/gitea.conf</summary>
10. Настроить nginx на хосте как реверс-прокси из внешки в контейнеры: (поменять `server_name` и порты на свои)
```
server {
listen 80;
listen [::]:80;
server_name git.example.com
Файл: `/etc/nginx/sites-available/gitea.conf`
access_log /var/log/nginx/gitea-access.log;
error_log /var/log/nginx/gitea-error.log;
client_max_body_size 100M;
```
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 / {
location / {
proxy_pass http://127.0.0.1:8080;
}
}
```
}
}
```
Файл: `/etc/nginx/sites-available/opengist.conf`
</details>
```
server {
listen 80;
listen [::]:80;
server_name gist.example.com
<details>
<summary>Файл: /etc/nginx/sites-available/opengist.conf</summary>
access_log /var/log/nginx/opengist-access.log;
error_log /var/log/nginx/opengist-error.log;
client_max_body_size 100M;
```
server {
listen 80;
listen [::]:80;
server_name gist.example.com
location / {
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;
}
}
```
}
}
```
Сделать линки и перезапустить `nginx`
</details>
```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
```
- Сделать линки и перезапустить `nginx`
11. Переключить DNS на новый IP
12. Проверить веб-морды по доменам через `curl -i ...`
13. Настроить SSL через `certbot`
```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`
Всё то же, но шаги 3-5 можно полностью пропустить.
## Gitea + ssh через хостовый порт
## Gitea + ssh через хост
Если порт openssh на хосте занят (по дефолту 22), то пробросить его же напрямую из докера не получится.
Если порт openssh на хосте занят (по дефолту 22), то пробросить порт напрямую из докера не получится.
Поэтому предлагается использовать порт 222 или другой (`GITEA_HOST_SSH_PORT`)
1. Запомнить абсолютный путь до скрипта [./gitea/gitea.sh](./gitea/gitea.sh) (например, `/home/user/gitea/gitea/gitea.sh`)
2. Назначить его оболочкой для системного юзера `git`
@@ -152,13 +158,14 @@ time="2025-04-08T02:14:17Z" level=info msg="runner: gitea-runner, with version:
Если во время выполнения экшена `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

2854
gitea/app.example.ini Normal file

File diff suppressed because it is too large Load Diff