Легковесный вариант гит репозитория для хранения проектов git и создание зеркал общедоступных проектов. Имеет возможность использовать OAuth2 авторизацию и создание исполнителей.
Сайт проекта: Gitea Official Website
Пример docker compose файла:
type: docker-compose
tags:
aliases:
program:
- gitea
modified: 2025-05-05T17:45:59+03:00
МОС: “[[Docker Compose]]”
services:
gitea:
image: gitea/gitea:latest
container_name: gitea
environment:
- ENABLE_REVERSE_PROXY_AUTHENTICATION=true
- DISABLE_REGISTRATION=true
- REQUIRE_SIGNIN_VIEW=true
- USER_UID=1001
- USER_GID=1001
restart: always
volumes:
- /home/deniom/docker/gitea/data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- /home/git/.ssh/:/data/git/.ssh
ports:
- 3000:3000
- "127.0.0.1:2222:22"
networks:
- gitea
Альтернативный форк: Forgejo – Beyond coding. We forge.
Настройка репозитория: Customizing Gitea | Gitea Documentation
[!note]
Настройка аутентификации через Authentik:
- Основное руководство Gitea | authentik
- Уточнения по настройке групп Gitea groups documentation is outdated · Issue #6987 · goauthentik/authentik · GitHub
- [[Переключение встроенной авторизации на Authentik для GitTea]]
Авторизация gitea по токену
type: note
tags:
aliases:
data: 2025-05-05 02:16
modified: 2025-05-05T18:30:04+03:00
dg-publish: true
Для подключения к закрытому репозиторию gitea необходимо использовать вариант подключения с токеном или авторизацию по ssh.
Для подключения по токену доступа необходимо в настройках пользователя перейти в радел приложения и создать новый токен доступа:
Для получения данных из репозитория по токену доступа необходимо добавить ключ авторизации в адрес доступа репозитория вида:
https://<token>@gitea.domein.ru/User/repa.git
[!urls]- Упоминания:
Настройка доступа к репозиториям gitea по ssh
type: note
tags:
aliases:
data: 2025-05-05 02:22
modified: 2025-05-05T19:36:35+03:00
dg-publish: true
Преимуществом подключения по ssh к репозиторию является то что не надо проходить авторизацию по паролю или использовать в адреса в явном виде токен доступа что обеспечивает дополнительную безопасность.
Настройка gitea
Подробная актуальная документация доступна на сайте: Gitea Documentation
- Создать отдельного пользователя git без установки пароля
sudo useradd -m -s /bin/bash git
sudo mkdir -p /home/git/.ssh
sudo touch /home/git/.ssh/authorized_keys
sudo chmod 700 /home/git/.ssh
sudo chmod 600 /home/git/.ssh/authorized_keys
sudo chown -R git:git /home/deniom/.ssh
- Внести изменения в [[Gitea|docker compose]]
ports:
# [...]
- "127.0.0.1:2222:22"
environment:
- USER_UID=1001
- USER_GID=1001
Где USER_UID и USER_GID определить командой
id git
- Если раньше уже запускался gitea и есть репозитории то передать права на папку с данными на нового пользователя командой ниже, вся дальнейшая работа с репозиториями гит будет идти от данного пользователя
sudo chown -R git:git /home/deniom/docker/gitea/data
- Создаем ключ для связи с gitea, и передаем его новому пользователю
sudo -u git ssh-keygen -t rsa -b 4096 -C "Gitea Host Key"
sudo -u git cat /home/git/.ssh/id_rsa.pub | sudo -u git tee -a /home/git/.ssh/authorized_keys
sudo -u git chmod 600 /home/git/.ssh/authorized_keys
- Создаем скрипт для подмены команды SSH
cat <<"EOF" | sudo tee /usr/local/bin/gitea
#!/bin/sh
ssh -p 2222 -o StrictHostKeyChecking=no git@127.0.0.1 "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@"
EOF
sudo chmod +x /usr/local/bin/gitea
При помощи данного скрипта будет выполнятся переадресация в контейнер gitea но при этом доступ к самому серверу так же останется по 22 порту. Подробнее в документации gitea.
6. Перезапустить docker контейнер gitea с новыми настройками
7. Добавим новый ключ в интерфейсе gitea. Для этого идем в Профиль -> Ключи SSH -> Добавить ключ
8. Проверим работу (пока только по ip)
git clone git@192.168.0.132:Deniom\testrepa.git
Настройка проксирования
Для обращения к gitea по ssh с использованием домена необходимо выполнить проектирование tcp трафика по 22 порту. Для этого будет использован traefik.
[!note] Примечание
Принципе можно проксировать на любой другой порт но тогда ссылки будет иметь вид отличный от стандартного и выглядить такssh://git@gitea.mydomain.com:2222/Deniom/Test.git
- Перенести подключение по ssh на сервере с traefik с 22 порта (см. [[Изменение порта доступа по SSH]])
- Внести изменения в [[Хобби/Docker compose/Traefik|Traefik]] открыв 22 порт
ports:
- 22:22
- В статическую конфигурацию
traefik.ymlдобавить точку входа ssh
entryPoints:
ssh:
address: ":22"
- Изменить динамическую конфигурацию для gitea добавив секцию проксирования tcp
tcp:
routers:
gitea-ssh:
entryPoints:
- ssh
rule: "HostSNI(`*`)"
service: gitea-ssh
services:
gitea-ssh:
loadBalancer:
servers:
- address: 192.168.0.132:22
[!hint] Важно
Секция tcp должна быть отдельно представлена а не встроена в уже существующий http, можно разместить в конце файла.
- Проверка работы по домену
git clone git@gitea.domein.ru:Deniom\testrepa.git
[!attention]
Для доступа из вне необходимо обязательно прокидывать 22 порт на traefik иначе работать нечего не будет, не забываем изменить настройки роутера.
[!bug]
В случае ошибки ssh про атаку в середине как на скрине ниже необходимо очистить файлы в /home/git/.ssh/ и выполнить пункт 4 повторно.
[!urls]- Упоминания:
[!urls]- Упоминания:
- [[Self-hosting программы]]
- [[Сервер Main]]
[!description]- Примечание
Примечание:: Облегченный git репозиторий

