Установка Gitea
Gitea — вполне себе удобный репозиторий контроля версий, который может подойти и в качестве домашнего сервера контроля версия или для вашей команды разрабов. Быстро поднимается. Легко работать. Рекомендую.
Ну, а теперь к установке.
В прошлый раз мы уже поставили MariaDB. Перед началом установки создайте базу и пользователя gitea.
Теперь нам нужно выяснить, какой последний релиз Gitea. Его можно посмотреть тут. Номер релиза нам еще понадобится. Скопируйте его без буквы v
Введите в терминале следующие команды:
VERSION= wget -O /tmp/gitea https://dl.gitea.io/gitea/$/gitea-$-linux-amd64 sudo mv /tmp/gitea /usr/local/bin
И сделайте файл исполняемым.
sudo chmod +x /usr/local/bin/gitea
Затем, по рекомендации Gitea, создайте следующие папки с разрешениями:
sudo mkdir -p /var/lib/gitea/ sudo chown git:git /var/lib/gitea/ sudo chmod 750 /var/lib/gitea/ sudo mkdir /etc/gitea sudo chown root:git /etc/gitea sudo chmod 770 /etc/gitea
Теперь сделаем так, что бы Gitea была частью системы и создадим для него сценарий systemd:
sudo nano /etc/systemd/system/gitea.service
Скопируйте и вставьте туда содержимое ниже:
[Unit] Description=Gitea (Git with a cup of tea) After=syslog.target After=network.target #After=mysqld.service #After=postgresql.service #After=memcached.service #After=redis.service [Service] # Modify these two values and uncomment them if you have # repos with lots of files and get an HTTP error 500 because # of that ### #LimitMEMLOCK=infinity #LimitNOFILE=65535 RestartSec=2s Type=simple User=git Group=git WorkingDirectory=/var/lib/gitea/ ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini Restart=always Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea # If you want to bind Gitea to a port below 1024 uncomment # the two values below ### #CapabilityBoundingSet=CAP_NET_BIND_SERVICE #AmbientCapabilities=CAP_NET_BIND_SERVICE [Install] WantedBy=multi-user.target
После обновите список демонов и запустите сервис Gitea
sudo systemctl daemon-reload sudo systemctl enable gitea sudo systemctl start gitea
Затем проверьте, все ли запустилось:
sudo systemctl status gitea
Если вы увидите примерное следующее, то поздравляю. Gitea запустилась.
gitea.service - Gitea (Git with a cup of tea) Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: en Active: active (running) since Fri 2019-04-26 10:52:32 CDT; 11s ago Main PID: 7118 (gitea) Tasks: 6 (limit: 4683) CGroup: /system.slice/gitea.service └─7118 /usr/local/bin/gitea web -c /etc/gitea/app.ini Apr 26 10:52:32 ubuntu1804 gitea[7118]: 2019/04/26 10:52:32 [T] Log path: /var/l Apr 26 10:52:32 ubuntu1804 gitea[7118]: 2019/04/26 10:52:32 [I] Gitea v1.8.0 bui Apr 26 10:52:32 ubuntu1804 gitea[7118]: 2019/04/26 10:52:32 [I] Log Mode: Consol Apr 26 10:52:32 ubuntu1804 gitea[7118]: 2019/04/26 10:52:32 [I] XORM Log Mode: C Apr 26 10:52:32 ubuntu1804 gitea[7118]: 2019/04/26 10:52:32 [I] Cache Service En Apr 26 10:52:32 ubuntu1804 gitea[7118]: 2019/04/26 10:52:32 [I] Session Service lines 1-18/18 (END)
Перейдите к серверу, где установлена Gitea: https://localhost:3000/install
Введите информацию о подключении к базе данных. Настройте аккаунт администратора. После установки вы сможете войти в систему и использовать Gitea в качестве службы git.
Да. Если кому интересен конфиг Gitea, который использую я, то вот он. Но, думаюm с этим вы уже и сами справитесь.
APP_NAME = Свой GitHub с блекджеком и .. RUN_USER = GIT RUN_MODE = prod [oauth2] JWT_SECRET = KEY [security] INTERNAL_TOKEN = TOKEN INSTALL_LOCK = true SECRET_KEY = KEY [database] DB_TYPE = mysql HOST = 127.0.0.1:3306 NAME = DB USER = USER PASSWD = PASSWORD SSL_MODE = disable CHARSET = utf8 PATH = /usr/local/bin/data/gitea.db [repository] ROOT = /storage/gitea [server] SSH_DOMAIN = git.antropoff.ru DOMAIN = localhost HTTP_PORT = 3333 ROOT_URL = https://git.antropoff.ru/ DISABLE_SSH = true SSH_PORT = 22 LFS_START_SERVER = true LFS_CONTENT_PATH = /usr/local/bin/data/lfs LFS_JWT_SECRET = SECRET OFFLINE_MODE = false [mailer] ENABLED = true HOST = localhost:25 FROM = git@antropoff.ru USER = PASSWD = [service] REGISTER_EMAIL_CONFIRM = true ENABLE_NOTIFY_MAIL = true DISABLE_REGISTRATION = false ALLOW_ONLY_EXTERNAL_REGISTRATION = false ENABLE_CAPTCHA = true REQUIRE_SIGNIN_VIEW = false DEFAULT_KEEP_EMAIL_PRIVATE = true DEFAULT_ALLOW_CREATE_ORGANIZATION = false DEFAULT_ENABLE_TIMETRACKING = true NO_REPLY_ADDRESS = noreply@antropoff.ru
Оцените статью
Written by Aleksdem on Март 18, 2022
Предлагаю ещё добавить про Indexer. Code Search просто must have для кодохранилищ. 🙂 Хотя бы такой вариант из документации. В итоге в поиске появится возможность и искать по коду всех проектов, что иногда адски выручает. «` [indexer] REPO_INDEXER_ENABLED = true REPO_INDEXER_PATH = indexers/repos.bleve UPDATE_BUFFER_LEN = 20 MAX_FILE_SIZE = 1048576 REPO_INDEXER_INCLUDE = REPO_INDEXER_EXCLUDE = resources/bin/** «`
Установка и настройка Gitea в Docker контейнере: руководство для разработчиков и DevOps специалистов.

Gitea — это бесплатная и открытая система управления репозиториями Git, которая может быть легко установлена и запущена в docker контейнере. Gitea предоставляет удобный интерфейс веб-приложения для управления вашими Git-репозиториями и различными аспектами их разработки. Gitea может использоваться как локально, так и в облачном режиме.
Почему использовать Gitea в docker контейнере?
Docker контейнер позволяет изолировать приложение от хостовой операционной системы и его зависимостей. Это делает Gitea удобным для установки, настройки и использования на любой платформе и в любом окружении. Docker контейнеры также обеспечивают масштабируемость, облегчают управление зависимостями и предоставляют возможность для более безопасного развертывания и эксплуатации.
Для установки Gitea в Docker, на вашем сервере уже должен быть установлен Docker и docker-compose. Подробнее о том как произвести установку Docker + docker-compose + Portainer вы можете прочитать в данной статье.

После запуска, откройте веб-браузер и введите адрес http://server-ip:3000 для доступа к веб-интерфейсу gitea. Вы должны увидеть страницу входа в систему. Заполните все необходимые поля согласно вашей конфигурации. В поле Server Domain обязательно укажите IP адрес либо доменное имя которое направлено на ваш сервер.
В случаи если при установке вы указали неверные значения то вы можете их изменить в главном файле конфигурации gitea который находится в /data/gitea/conf/app.ini
По-умолчанию база данных используется SQLite, при необходимости вы можете выбрать и настроить MySQL либо PostgresSQL.

В Administrator Account Settings обязательно укажите имя пользователя и пароль для учетной записи администратора.
После установки Gitea мы можем приступить к созданию нашего первого репозитория.
Использование gitea

Чтобы создать новый репозиторий, выберите в меню «Create a New Repository» и введите имя и описание репозитория.
Для клонирования репозитория с помощью SSH, необходимо использовать порт 2222 и команду git clone ssh://:2222//.git
Чтобы сохранить данные gitea при перезапуске или удалении контейнера, необходимо сохранить данные, которые находятся в папке ./data.

Это все! Теперь у вас установлена Gitea на собственном сервере в Docker контейнере.
Установка Gitea с использованием Docker Compose
Данная статья предназначена для тех, кто искал подробное и понятное руководство о том, как установить Gitea с использованием Docker Compose.
Gitea — это инструмент для хостинга контроля версий на базе Git с функциями совместной работы: отслеживание ошибок, ревью кода, CI, доски Kanban, тикеты и вики. Вы можете развернуть Gitea на своем сервере или воспользоваться бесплатной публичной версией от разработчиков.
Репозиторий, использованный в этом руководстве, можно найти на GitHub.
Мы будем использовать Traefik в качестве нашего обратного прокси. Он будет отвечать за получение криптографических сертификатов от Let’s Encrypt для ваших доменных имен и направлять запросы к соответствующим службам на основе этих доменов.
❗ Для получения криптографических сертификатов вам потребуются записи типа A во внешней зоне DNS, которые указывают на IP-адрес вашего сервера, где установлен Traefik. Если вы создали эти записи недавно, следует подождать, прежде чем начать установку сервисов. Полная репликация данных записей между DNS-серверами может занять от нескольких минут до 48 часов или даже больше в редких случаях.
В этом руководстве мы будем рассматривать тот случай, когда у вас уже есть сервер с установленной на нем операционной системой Ubuntu Server 22.04 LTS.
Подробно о том, как установить Ubuntu Server 22.04 LTS, вы можете прочитать в моем руководстве “Установка Ubuntu Server 22.04 LTS”.
Также на сервере должен быть установлен Docker Engine и Docker Compose.
Узнать о том, как установить Docker Engine на Ubuntu Server, вы можете, прочитав “Установка Docker Engine и Docker Compose на Ubuntu Server”.
Кроме того, на сервер должен быть установлен OpenSSH, а также открыт 22 порт, чтобы иметь возможность подключаться к серверу по протоколу SSH.
Для установки OpenSSH на сервер вы можете воспользоваться командой:


Далее нужно клонировать репозиторий, который содержит конфигурационные файлы, которые содержать все необходимые условия для работы Gitea.
Клонировать репозиторий можно с помощью команды:


Далее вам необходимо изменить переменные в файле .env в соответствии с вашими требованиями.
Обратите внимание, что .env должен находиться в той же директории, что и gitea-traefik-letsencrypt-docker-compose.yml .
Теперь запустим Gitea с помощью команды:
docker compose -f gitea-traefik-letsencrypt-docker-compose.yml -p gitea up -d

Для доступа к панели управления Gitea необходимо с рабочей станции перейти по ссылке https://gitea.heyvaldemar.net, где gitea.heyvaldemar.net — доменное имя моего сервиса. Соответственно, вам необходимо указать свое доменное имя, которое указывает на IP-адрес вашего сервера с установленным сервисом Traefik, который перенаправит запрос к Gitea.
Обратите внимание, вам нужно указать доменное имя сервиса, заданное ранее в файле .env .
Нажимаем на кнопку “Sign In”.

Указываем имя пользователя и пароль, заданный ранее в файле .env , и нажимаем на кнопку “Sign In”.

Добро пожаловать в панель управления Gitea.

Для доступа к панели управления Traefik необходимо с рабочей станции перейти по ссылке https://traefik.gitea.heyvaldemar.net, где traefik.gitea.heyvaldemar.net — доменное имя моего сервиса. Соответственно, вам необходимо указать свое доменное имя, которое указывает на IP-адрес вашего сервера с установленным Traefik.
Обратите внимание, вам нужно указать доменное имя сервиса, заданное ранее в файле .env .
Указываем имя пользователя и пароль, заданный ранее в файле .env , и нажимаем на кнопку “OK”.

Добро пожаловать в панель управления Traefik.
Установка gitea на чистый сервер
Этот пост был опубликован мной более года назад. Информация, описанная ниже, уже могла потерять актуальность, но всё ещё может быть полезна.
Привет. Надеюсь, эта шпаргалка поможет тебе установить собственное “гитхаб”-лайк хранилище кода. Очень рекомендую это сделать, причём на отдельный сервер.
Делал я это, используя бинарник. Вкратце, шаги простые:
- подготовить ОС
- подготовить БД
- подготовить nginx
- скачать бинарник gitea
- разобраться с конфигами
- выполнить установку
- настроить демона
Далее будет список команд, которые я выполнял и сразу записывал. Но я допускаю, что в них могут быть плёвые ошибки, т. к. во время и после установки я их корректировал (я разворачивал гити впервые и допускал огрехи, которые фиксил на лету).
В конце будут примеры готовых конфигов.
Описанное ниже производилось мной на серверной Ubuntu 20.04 LTS в экосистеме Селектела.
Всё ставим
# обновляем систему, ставим софт apt update apt upgrade -y apt install -y apt-transport-https \ ca-certificates \ curl \ make \ dialog \ build-essential \ software-properties-common \ libaio1 \ libssl-dev \ libghc-zlib-dev \ libcurl4-gnutls-dev \ libexpat1-dev \ gettext \ unzip \ mc \ htop \ nano \ mariadb-server \ mariadb-client \ nginx # собираем свежайший git из исходников # это можно вообще переиспользовать отдельно wget https://github.com/git/git/archive/master.zip -O /usr/src/git.zip && \ unzip /usr/src/git.zip -d /usr/src/git && \ rm -f /usr/src/git.zip && \ cd /usr/src/git/git-master && \ make prefix=/usr/local all && \ make prefix=/usr/local install && \ cd ../.. && \ rm -rf git && \ git clone https://github.com/git/git.git --depth=1 /usr/src/git # качаем актуальный (на момент этого поста) релиз гити wget -O /home/gitea/gitea https://dl.gitea.io/gitea/1.15.6/gitea-1.15.6-linux-amd64 && \ chmod +x gitea && \ chown git: /home/git/gitea && \ ln -s /home/git/gitea /usr/local/bin/gitea # готовим пользователя, под которым будет работать гити # через него же будет работа с репами (clone, push, pull, etc.) adduser \ --system \ --shell /bin/bash \ --gecos 'Gitea user' \ --group \ --disabled-password \ --home /home/git \ git # запись конфига gitea (пример будет ниже) nano /etc/gitea/app.ini # готовим СУБД и БД mysql_secure_installation mysql -e 'CREATE DATABASE gitea;' mysql -e 'GRANT ALL ON gitea.* TO \'gitea\'@\'localhost\' IDENTIFIED BY \'MY_PASSWORD\';' mysql -e 'FLUSH PRIVILEGES;' # готовим nginx как reverse-proxy unlink /etc/nginx/sites-enabled/default # запись конфига прокси nginx (пример будет ниже) nano /etc/nginx/sites-available/gitea-proxy.conf ln -s /etc/nginx/sites-available/gitea-proxy.conf /etc/nginx/sites-enabled/gitea-proxy.conf # запись конфига службы gitea.service (пример будет ниже) nano /etc/systemd/system/gitea.service # первый (ручной) запуск для установки su - git GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini # после установки, если всё прошло удачно, # то Ctrl+C и ставим демона на автозапуск systemctl enable gitea --now
Конфиги
/etc/systemd/system/gitea.service
[Unit] Description=Gitea (Git with a cup of tea) After=syslog.target After=network.target Wants=mariadb.service After=mariadb.service=redis.service [Service] RestartSec=2s Type=simple User=git Group=git WorkingDirectory=/var/lib/gitea/ ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini Restart=always Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea [Install] WantedBy=multi-user.target
/etc/gitea/app.ini
Изучи внимательно и не копируй бездумно! Часть параметров записывается при установке. Часть параметров можно/нужно поставить самостоятельно.
APP_NAME = Gitea RUN_USER = git RUN_MODE = prod [security] # не трогать # . [database] # выставить корректные данные для подключения к БД DB_TYPE = mysql HOST = 127.0.0.1:3306 NAME = gitea USER = gitea PASSWD = MY_PASSWORD SCHEMA = SSL_MODE = disable CHARSET = utf8 PATH = /var/lib/gitea/data/gitea.db LOG_SQL = false [repository] ROOT = /var/lib/gitea/data/gitea-repositories [server] SSH_DOMAIN = localhost DOMAIN = localhost HTTP_PORT = 8080 ROOT_URL = # не трогать DISABLE_SSH = false SSH_PORT = 22 LFS_START_SERVER = true LFS_CONTENT_PATH = /var/lib/gitea/data/lfs LFS_JWT_SECRET = # не трогать OFFLINE_MODE = false [mailer] # выставить нужные значения для работы email #ENABLED = true MAILER_TYPE = smtp #HOST = smtp.yandex.ru:465 #USER = #PASSWD = #FROM = # остальное по желанию [service] REGISTER_EMAIL_CONFIRM = true ENABLE_NOTIFY_MAIL = true DISABLE_REGISTRATION = false ALLOW_ONLY_EXTERNAL_REGISTRATION = false ENABLE_CAPTCHA = true REQUIRE_SIGNIN_VIEW = false DEFAULT_KEEP_EMAIL_PRIVATE = false DEFAULT_ALLOW_CREATE_ORGANIZATION = true DEFAULT_ENABLE_TIMETRACKING = true NO_REPLY_ADDRESS = noreply.localhost [picture] DISABLE_GRAVATAR = false ENABLE_FEDERATED_AVATAR = true [openid] ENABLE_OPENID_SIGNIN = true ENABLE_OPENID_SIGNUP = false [session] PROVIDER = file [log] MODE = console LEVEL = info ROOT_PATH = /var/lib/gitea/log ROUTER = console
/etc/nginx/sites-available/gitea-proxy.conf
Здесь в server_name поставить привязываемый домен и в proxy_pass поставить локалхост с портом HTTP_PORT из app.ini
server < listen 80; listen [::]:80; server_name my.domain.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; >>
После первичного старта можно использовать certbot для установки ssl.
Использованные источники
- https://docs.gitea.io/en-us/install-from-binary
- https://docs.gitea.io/en-us/reverse-proxies/
- https://docs.gitea.io/en-us/linux-service/
- https://docs.gitea.io/en-us/config-cheat-sheet/
- https://www.scaleway.com/en/docs/tutorials/nginx-reverse-proxy/
- https://gist.github.com/MitchRatquest/dadc9484e07a627fa73b1c7bbcf609f4
Update 18.02.2022
В конфиг gitea-proxy.conf добавлен параметр
client_max_body_size 100M;
Лечит ошибку 413 при загрузке файлов, например, при оформлении релиза.