Актуализирован 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/ /gitea/data/
/runner/*.yaml /runner/*.yaml
@@ -17,7 +17,6 @@
*.sql *.sql
*.sql.* *.sql.*
*.log *.log
*.ini
*dump* *dump*
*backup* *backup*

143
README.md
View File

@@ -14,89 +14,95 @@
### Для переноса сервисов с другого сервера ### Для переноса сервисов с другого сервера
1. Клонировать репозиторий 1. Клонировать репозиторий
2. Выполнить `cp .env.example .env` и указать корректные данные для подключения 2. Выполнить `cp ./.env.example ./.env` и указать корректные данные для подключения
3. (Необязательно) Для переноса инстанса Gitea: 3. Создать пользователя git, подробности [описаны в блоге](https://axenov.dev/gitea-to-docker)
1. Потушить сервис (не сервер) 4. Выполнить `cp ./gitea/app.example.ini ./gitea/app.ini` и указать необходимые настройки
2. Выполнить `cp compose.override.yml.example compose.override.yml` **ИЛИ**
3. Скопировать существующий конфиг в `./gitea/app.ini` и скорректировать по необходимости - (Необязательно) Для переноса инстанса Gitea:
4. Снять дамп mysql и положить в `./gitea/dump.sql.gz` - Потушить сервис (не сервер)
5. Директории с данными скопировать в `./gitea/data` - Выполнить `cp ./compose.override.yml.example ./compose.override.yml`
4. (Необязательно) Для переноса инстанса Gitea Runner: - Скопировать существующий конфиг в `./gitea/app.ini` и скорректировать по необходимости
* Выполнить `cp compose.override.yml.example compose.override.yml`, если ещё не - Снять дамп mysql и положить в `./gitea/dump.sql.gz`
* Скопировать старый конфиг в `./runner/config.yaml` и скорректировать по необходимости - Директории с данными скопировать в `./gitea/data`
ИЛИ - (Необязательно) Для переноса инстанса Gitea Runner:
* Выполнить `cp ./runner/config.example.yaml ./runner/config.yaml` и скорректировать по необходимости - Выполнить `cp ./compose.override.yml.example ./compose.override.yml`, если ещё не
5. (Необязательно) Для переноса инстанса OpenGist: - Скопировать старый конфиг в `./runner/config.yaml` и скорректировать по необходимости
1. Потушить сервис (не сервер) **ИЛИ**
2. Выполнить `cp compose.override.yml.example compose.override.yml` - Выполнить `cp ./runner/config.example.yaml ./runner/config.yaml` и скорректировать по необходимости
3. Скопировать существующий конфиг скопировать в `./opengist/opengist.yml` и скорректировать по необходимости - (Необязательно) Для переноса инстанса OpenGist:
4. Снять дамп mysql и положить в `./opengist/dump.sql.gz` - Потушить сервис (не сервер)
5. Директории с данными скопировать в `./opengist/data` - Выполнить `cp ./compose.override.yml.example ./compose.override.yml`, если ещё не
6. Убедиться, что владельцем `./` является юзер с `UID`=`1000`, если не -- `cd ..; chown -R 1000:1000 gitea; cd -` - Скопировать существующий конфиг скопировать в `./opengist/opengist.yml` и скорректировать по необходимости
7. Запустить через `docker compose up -d --build` - Снять дамп mysql и положить в `./opengist/dump.sql.gz`
8. Проверить логи через `docker logs -f ...` - Директории с данными скопировать в `./opengist/data`
9. Проверить веб-морды через `curl -I localhost:...` 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;
``` location / {
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; proxy_pass http://127.0.0.1:8080;
} }
} }
``` ```
Файл: `/etc/nginx/sites-available/opengist.conf` </details>
``` <details>
server { <summary>Файл: /etc/nginx/sites-available/opengist.conf</summary>
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; server {
client_max_body_size 100M; 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; proxy_pass http://127.0.0.1:8081;
} }
} }
``` ```
Сделать линки и перезапустить `nginx` </details>
```shell - Сделать линки и перезапустить `nginx`
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
```
11. Переключить DNS на новый IP ```shell
12. Проверить веб-морды по доменам через `curl -i ...` ln -s /etc/nginx/sites-available/gitea.conf /etc/nginx/sites-enabled/gitea.conf
13. Настроить SSL через `certbot` 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`) 1. Запомнить абсолютный путь до скрипта [./gitea/gitea.sh](./gitea/gitea.sh) (например, `/home/user/gitea/gitea/gitea.sh`)
2. Назначить его оболочкой для системного юзера `git` 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` надо указать имя сети: Если во время выполнения экшена `actions/checkout@v4` возникает ошибка `Could not resolve host`, то в конфиге `./runner/config.yaml` надо указать имя сети:
```yaml ```yaml
#...
container: container:
network: "gitea_network" network: "gitea_network"
#...
``` ```
Доп. информация: Доп. информация:
* https://axenov.dev/gitea-to-docker * 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/quickstart
* https://docs.gitea.com/usage/actions/act-runner * 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