Files
knowledge-base/docs/misc/gitea.md
Arity-T d180f06ab0
All checks were successful
Build MkDocs / build-and-deploy (push) Successful in 24s
Про SSH_PORT gitea
2025-10-13 01:08:11 +03:00

451 lines
15 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
Шпаргалки актуальны для Gitea 1.24.
## Установка с Docker
Эта заметка лишь дополнение к [документации](https://docs.gitea.com/installation/install-with-docker#basics).
=== "Терминал"
```sh
# Создаём служебного пользователя
sudo useradd --create-home --shell /bin/bash --system gitea
# Даём пользователю права использовать Docker
# Строго говоря это необязательно для разворачивания Gitea,
# но скорее всего и ранеры будут запускаться от этого пользователя,
# так что ему в любом случае потребуются права на Docker
sudo usermod -aG docker gitea
# Переключаемся на пользователя gitea
sudo su - gitea
# Узнаём его uid и gid
id
# Создаём docker-compose.yml по примеру
# Указываем переменные USER, USER_UID и USER_GID и порты
nano docker-compose.yml
# Создаём директорию для данных Gitea из-под пользователя gitea,
# иначе Docker сам создаст её из-под root
# см. секцию "volumes" в docker-compose.yml
mkdir data
# Запускаем Gitea
docker compose up -d
```
=== "docker-compose.yml"
```yaml
networks:
gitea:
external: false
services:
server:
image: docker.gitea.com/gitea:1.24.6
container_name: gitea
environment:
- USER=<user>
- USER_UID=<uid>
- USER_GID=<gid>
restart: always
networks:
- gitea
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "28500:3000"
- "28522:22"
```
Теперь можно перейти по адресу `http://<IPv4>:28500` и завершить установку Gitea.
Подключиться к контейнеру можно командой.
```sh
docker exec --user gitea -it gitea bash
# Уже внутри контейнера можно запускать бинарник gitea
/usr/local/bin/gitea help
```
## Создание бэкапа
Ссылка на [документацию](https://docs.gitea.com/administration/backup-and-restore).
### Gitea установлена из бинарника
```sh
# gitea - это пользователь под которым запущен Gitea, часто это просто git
sudo su - gitea
mkdir gitea-backup
cd gitea-backup
# Нужно указать актуальный путь к конфигу
/usr/local/bin/gitea dump -c /etc/gitea/app.ini
# Если планируется восстановление с другой базой данных,
# то нужно указать параметр --database <sqlite3|mysql|postgres>
/usr/local/bin/gitea dump --database sqlite3 -c /etc/gitea/app.ini
```
### Gitea установлена с Docker
Предполагается, что Gitea развёрнута с помощью Docker Compose как описано в инструкции [выше](#установка-с-docker).
Подключаемся к контейнеру.
```sh
docker exec --user gitea -it gitea bash
```
Внутри контейнера выполняем.
```sh
# Бэкап нужно создать в директории /data, потому что она прокинута на хост
cd /data
# (Опционально) Создаём директорию для бэкапов
mkdir backups
cd backups
# Нужно указать актуальный путь к конфигу
/usr/local/bin/gitea dump -c /data/gitea/conf/app.ini
# Если планируется восстановление с другой базой данных,
# то нужно указать параметр --database <sqlite3|mysql|postgres>
/usr/local/bin/gitea dump --database sqlite3 -c /data/gitea/conf/app.ini
```
То же самое в одну команду.
```sh
docker exec -u gitea -w /data gitea /usr/local/bin/gitea dump -c /data/gitea/conf/app.ini
```
### Перенос бэкапа на другую машину
Перенести бэкап на другую машину можно, например, так:
```sh
# Запускаем HTTP сервер (с scp загрузка больших файлов займёт много времени)
python3 -m http.server 8080
# На другой машине скачиваем бэкап
curl -O http://<IP>:8080/gitea-dump-1760203345.zip
```
## Восстановление из бэкапа в Docker
Предполагается, что Gitea разворачивается из [бэкапа](#создание-бэкапа) с помощью Docker Compose как описано в инструкции [выше](#установка-с-docker). В [документации](https://docs.gitea.com/1.24/administration/backup-and-restore#using-docker-restore) есть соответствующая инструкция, однако она не полная и содержит ошибки.
```sh
# Если создавали пользователя по инструкции выше,
# то команды выполняем от него
sudo su - gitea
# Распаковываем бэкап
unzip -q gitea-dump-*.zip -d dump
# Создаём директорию для данных Gitea
mkdir data
# Копируем данные
cp -r dump/data/ data/gitea/
# Копируем репозитории
mkdir data/git/
cp -r dump/repos/ data/git/repositories/
# Копируем кастомные стили и шаблоны
cp -r dump/custom/. data/gitea/
# Если Gitea в Docker будет работать с SQLite,
# то восстановить базу данных можно так.
# Команды для других баз данныех есть в документации
sqlite3 data/gitea/gitea.db < dump/gitea-db.sql
# Копируем конфиг
mkdir data/gitea/conf
cp dump/app.ini data/gitea/conf/app.ini
```
Если до этого Gitea была запущена не через Docker, то нужно отредактировать конфиг.
=== "Терминал"
```sh
vim data/gitea/conf/app.ini
```
=== "`app.ini` для Docker"
Это не полноценный конфиг, а лишь часть настроек для запуска Gitea Docker.
Подразумевается, что конфиг был перенесён из бэкапа.
`SSH_PORT` нужно указать тот же, что и в `docker-compose.yml`.
```ini
RUN_USER = gitea
WORK_PATH = /data/gitea
[server]
LOCAL_ROOT_URL = http://localhost:3000
APP_DATA_PATH = /data/gitea
DOMAIN = localhost
SSH_DOMAIN = localhost
HTTP_PORT = 3000
SSH_PORT = 28522
[repository]
ROOT = /data/git/repositories
[database]
PATH = /data/gitea/gitea.db
DB_TYPE = sqlite3
HOST = localhost:3306
NAME = gitea
USER = root
PASSWD =
LOG_SQL = false
[lfs]
PATH = /data/git/lfs
[log]
ROOT_PATH = /data/gitea/log
```
Запускаем Gitea, скорее всего она начнёт падать с ошибкой `permission denied`, а Docker будет пытаться её перезапустить. При первом запуске Gitea создаёт директории для ssh ключей, но по какой-то причине они создаются из-под `root`, а не из-под пользователя `gitea`.
```sh
# Специально без -d, ждём когда в логах повалятся ошибки и нажимаем Ctrl+C
docker compose up
```
Теперь нужно из-под `root` или с помощью `sudo` указать нужные права.
```sh
# Выходим из пользователя gitea (Ctrl + D или exit)
# и выполняем команду с root правами
sudo chown -R gitea:gitea ~gitea/data
```
Снова запускаем Gitea.
```sh
sudo su - gitea
docker compose up -d
```
Если всё работает корректно, то файлы бэкапа можно удалить.
```sh
rm -rf dump gitea-dump-*.zip
```
## Кастомизация Gitea
Во всех командах подразумевается, что Gitea [установлена из бинарника](https://docs.gitea.com/installation/install-from-binary) и [запускается как `systemd` сервис](https://docs.gitea.com/installation/linux-service).
В документации есть страница, посвящённая [кастомизации Gitea](https://docs.gitea.com/administration/customizing-gitea).
### Свой `css`
Добавляем ссылку на свой файл со стилями.
=== "Терминал"
```sh
# Путь по умолчанию
export GITEA_CUSTOM=/var/lib/gitea/custom
sudo -u git mkdir -p $GITEA_CUSTOM/templates/custom
sudo -u git nano $GITEA_CUSTOM/templates/custom/header.tmpl
```
=== "header.tmpl"
```html
<link rel="stylesheet" href="/assets/css/custom.css">
```
Создаём файл со стилями.
=== "Терминал"
```sh
sudo -u git mkdir -p $GITEA_CUSTOM/public/assets/css
sudo -u git nano $GITEA_CUSTOM/public/assets/css/custom.css
```
=== "Пример custom.css"
```css
/* Стили для git.tishenko.dev */
* {
transition: all 0.125s;
}
/* Список переменных и их значения по умолчанию
*
* Для светлой темы
* https://github.com/go-gitea/gitea/blob/main/web_src/css/themes/theme-gitea-light.css
*
* Для тёмной темы
* https://github.com/go-gitea/gitea/blob/main/web_src/css/themes/theme-gitea-dark.css
*/
/* Переопределения переменных для светлой и тёмной темы одновременно */
:root {
/* Основной цвет */
--color-primary: #6674c4;
--color-primary-contrast: #ffffff;
/* https://maketintsandshades.com/#4051B5 */
--color-primary-dark-1: #7985cb;
--color-primary-dark-2: #8c97d3;
--color-primary-dark-3: #a0a8da;
--color-primary-dark-4: #b3b9e1;
--color-primary-dark-5: #c6cbe9;
--color-primary-dark-6: #d9dcf0;
--color-primary-dark-7: #eceef8;
--color-primary-light-1: #5362bc;
--color-primary-light-2: #4051b5;
--color-primary-light-3: #3a49a3;
--color-primary-light-4: #334191;
--color-primary-light-5: #2d397f;
--color-primary-light-6: #26316d;
--color-primary-light-7: #20295b;
--color-primary-alpha-10: #6674c419;
--color-primary-alpha-20: #6674c433;
--color-primary-alpha-30: #6674c44b;
--color-primary-alpha-40: #6674c466;
--color-primary-alpha-50: #6674c480;
--color-primary-alpha-60: #6674c499;
--color-primary-alpha-70: #6674c4b3;
--color-primary-alpha-80: #6674c4cc;
--color-primary-alpha-90: #6674c4e1;
}
/* Переопределения переменных для светлой темы */
@media (prefers-color-scheme: light) {
:root {}
#navbar-logo {
padding: 5px !important;
background: #14151A;
}
#navbar-logo img {
width: 27px !important;
height: 27px !important;
}
#navbar-logo:hover {
background: #14151A !important;
}
}
/* Переопределения переменных для тёмной темы */
@media (prefers-color-scheme: dark) {
:root {
/* Шапка */
--color-nav-bg: #14151A;
--color-secondary-nav-bg: #14151A;
--color-nav-text: #BEC1C6;
--color-nav-hover-bg: #272A35;
/* Тёмно-серый фон основной */
--color-body: #1E2129;
--color-input-background: #14151A;
--color-menu: #14151A;
--color-card: #14151A;
--color-button: #14151A;
}
}
```
Перезапускаем Gitea.
```sh
sudo systemctl restart gitea
```
После изменения стилей, страницу в браузере нужно обновить с помощью `ctrl + f5`.
### Настройка `app.ini`
Перечень всех возможных настроек представлен в [документации](https://docs.gitea.com/administration/config-cheat-sheet).
=== "Терминал"
```sh
sudo nano /etc/gitea/app.ini
```
=== "Пример параметров app.ini"
```ini
[server]
LANDING_PAGE = explore
[other]
SHOW_FOOTER_VERSION = false
SHOW_FOOTER_TEMPLATE_LOAD_TIME = false
SHOW_FOOTER_POWERED_BY = false
ENABLE_FEED = false
[i18n]
LANGS = en-US,ru-RU
NAMES = English,Русский
[repository]
DISABLE_STARS = true
[cron]
ENABLED = true
[ui.meta]
AUTHOR = Artem Tishenko: Personal Git Repository Hub
DESCRIPTION = A personal hub for managing Git repositories by Artem Tishenko.
KEYWORDS = Artem Tishenko, Artyom Tishchenko, Git, self-hosted, personal projects, repositories, Gitea
```
Перезапускаем Gitea.
```sh
sudo systemctl restart gitea
```
### Изменение шаблонов страниц
Ищем шаблон для нужной версии в [репозитории Gitea](https://github.com/go-gitea/gitea/tree/main/templates), загружаем с помощью `wget` по такому же пути в `$GITEA_CUSTOM/templates` и редактируем.
Так, например, можно убрать пункт "Помощь" с ссылкой на `https://docs.gitea.com` из основного меню.
```sh
# Путь по умолчанию
export GITEA_CUSTOM=/var/lib/gitea/custom
# gitea --version
export GITEA_VERSION=v1.22.3
sudo -u git mkdir -p $GITEA_CUSTOM/templates/base
wget -P $GITEA_CUSTOM/templates/base https://raw.githubusercontent.com/go-gitea/gitea/refs/tags/$GITEA_VERSION/templates/base/head_navbar.tmpl
sudo -u git nano $GITEA_CUSTOM/templates/base/head_navbar.tmpl
```
Перезапускаем Gitea.
```sh
sudo systemctl restart gitea
```