В данной статье расскажу как можно установить Gitea. Gitea - это аналог github который можно установить на выделенный сервер или локальный сервер.

Установить Gitea можно несколькими способами: например из исходников, также для некоторых дистрибутивов доступны пакеты в дистрибутиве (в убунту сделать это можно при помощи snap), при помощи docker, kubernetes. Также Gitea доступен для предустановки на некоторых облачных провайдерах например таких как DigitalOcean - в таком случае сервер будет доступен сразу с установленным Gitea.

Перейду к установке. Для Gitea потребуется база данных: подойдут pog SQL mysql Mar TP SQL Lite и Microsoft SQL. Я же буду устанавливать MySQL. Для этого открою терминал и для начала устанавлю git следующей командой:

sudo apt install git

Установка MySQL в Ubuntu 22.04

Перейду к установке сервера базы данных MySQL. Устанавливается она следующей командой:

sudo apt install mysql-server

Далее запущу команду которая позволит безопасно настроить mysql:

sudo mysql_secure_installation

Команда запрашивает установить ли компонент валидации пароля:

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

Так как это учебное видео я выберу низкий уровень. Но желательно выбирать сложный - то есть цифра два.

Далее соглашаюсь на удаление анонимных пользователей, включаю возможность авторизации под Root удалённо, удаляю тестовые базы данных и доступ к ним, и перезагружаю права к таблицам.

Настройка MySQL для Gitea

После этого захожу в mysql от пользователя Root при помощи следующей команды:

sudo mysql

И следующей командой создаю пользователя gitea, где в конце команды указывается пароль от данного пользователя:

CREATE USER 'gitea'@'%' IDENTIFIED BY 'gitea';

Далее создам базу данных giteadb и в качестве кодировки укажу utf8 mb4:

CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';

Далее предоставлю все привилегии пользователю gitea по отношению к базе данных giteadb:

GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea';

И следующий командой обновлю привилегии:

FLUSH PRIVILEGES;

Выйду из mysql:

exit;

И войду пользователем при помощи пароля:

mysql -u gitea -p

Выведу список баз данных:

show databases;

База данных giteadb отображается и её можно выбрать:

use giteadb;

И вывести список таблиц, который на данный момент пуст:

show tables;

Установка Gitea в Ubuntu 22.04

Подготовка баз данных завершена, поэтому перейду к установке gitea.

Следующей командой скачаю gitea:

wget -O gitea https://dl.gitea.com/gitea/1.20.5/gitea-1.20.5-linux-amd64

Где 1.20.5 - это версия gitea.

И предоставлю ей права на выполнение:

chmod +x gitea

После этого надпись gitea стала зелёной и слева в строчке везде появилась X:

Далее загружу gpg ключ:

gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2

И скачаю asc файл для верификации:

wget -O gitea.asc https://dl.gitea.com/gitea/1.20.5/gitea-1.20.5-linux-amd64.asc

Теперь запущу верификацию:

gpg --verify gitea.asc gitea

И должна выйти строчка хорошая подпись несмотря на предупреждение:

В данном случае файл подлинный и его можно использовать.

Далее создам необходимые папки:

mkdir -p /var/lib/gitea/{custom,data,log}

Создам нового пользователя git:

sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git

И назначу права на папки:

chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea

Для того, чтобы установка прошла успешно, устанавливаются полные права на файлы, которые после установки желательно понизить:

chmod 770 /etc/gitea

Далее копирую gitea в глобальный путь:

sudo cp gitea /usr/local/bin/gitea

Включаю автозаполнение создав данную настройку:

sudo nano /usr/share/bash-completion/completions/gitea

С содержимым из данного файла

И теперь необходимо создать сервис gitea. Для этого необходимо создать файл:

sudo nano /etc/systemd/system/gitea.service

Со следующим содержимым

В котором раскомментировать строчки напротив используемой базы данных, в моём случае это mysql

Включаю сервис gitea для того, чтобы он запускался во время запуска системы:

sudo systemctl enable gitea

И запускаю его:

sudo systemctl start gitea

Здесь я подумал то, что всё зависло, и спустя какое-то время команда выдаёт ошибку timeout:

Но на самом деле нужно было открыть браузер и перейти по пути http://localhost:3000/.

Здесь необходимо указать пароль и поменять имя баз данных на giteadb:

После этого пролистать вниз и нажать установить Gitea.

Далее зарегистрирую новый аккаунт:

И создам новый репозиторий нажав на плюс в правом верхнем углу

Соответственно создам папку для этого репозитория:

mkdir first

Перейду в данную папку:

cd first

И создам файл README:

touch README.md

Далее запущу команду:

git init

Выберу главную ветку:

git checkout -b main

Добавлю файл README:

git add README.md

И попробую сделать первый комит:

git commit -m "first commit"

Здесь git предлагает ввести email и имя:

Соответсвенно необходимо выполнить команду git config с указанием вашего email и имени пользователя.

Снова запускаю команду создания комита:

git commit -m "first commit"

Ввыбираю удалённый репозиторий:

git remote add origin http://localohst:3000/kodprog/first.git

Где kodrog - это имя пользователя, а first - это название репозитория.

И загружаю данные в репозитории:

git push -u origin main

Ввожу имя пользователя и пароль:

Обновляю страницу и можно увидеть файл readme:

А также первый комит:

Обновление версии Gitea

Для того, чтобы обновить gitea необходимо скопировать новую версию по данному пути:

sudo cp gitea /usr/local/bin/gitea

И после этого перезапустить Gitea.

Для того, чтобы перезапустить соответственно воспользоваться командой restart:

sudo systemctl restart gitea

А для вывода текущего состояния командой status:

sudo systemctl status gitea