Загрузил мануал по поднятию Gitea
Signed-off-by: Reisber <admin@reisber.space>
This commit is contained in:
parent
4ee2c69568
commit
db3f91c87b
|
|
@ -0,0 +1,226 @@
|
|||
# В данном гайде я рассмотрю установку сервиса Gitea на собственном виртуальном сервере
|
||||
## Но для начала небольшой ликбез
|
||||
### Что такое и для чего нужна эта ваша Gitea
|
||||
### Если вам лень читать всё это полотно текста, то [перейдите к началу установки](#Начало-установки)
|
||||
Gitea — это лёгкая и доступная система управления версиями на основе Git, созданная для удобства и эффективности работы как индивидуальных пользователей, так и команд. Эта платформа распространяется с открытым исходным кодом, что делает её свободно доступной для использования и модификации. Основное преимущество Gitea заключается в том, что она может быть развернута на собственном сервере пользователя, что обеспечивает полный контроль над данными и конфигурацией.
|
||||
|
||||
Gitea предлагает все основные функции Git, такие как ветвление, слияние и тегирование, а также дополнительные удобства для управления проектами, включая систему отслеживания задач, вики-страницы и инструменты для код-ревью. Это делает её идеальным решением для команд разработчиков, которые хотят совместно работать над проектами в изолированной и безопасной среде.
|
||||
|
||||
По мере того как всё больше организаций и частных лиц признают важность цифровой безопасности и автономности, Gitea выделяется как надёжное и удобное решение для самостоятельного управления данными и проектами. Наличие активного сообщества и обширной документации дополнительно облегчает внедрение и использование этой системы в самых разных контекстах.
|
||||
|
||||
Системы управления версиями, традиционно ассоциируются с разработкой программного обеспечения, однако их потенциал применения значительно шире. Для непрограммистов они могут стать мощным инструментом для решения разнообразных задач управления данными и координации проектов.
|
||||
|
||||
Один из ярких примеров — использование Gitea для синхронизации заметок. Например, пользователи приложения для заметок, такого как Obsidian, могут использовать Gitea для версионирования своих записей. Это позволяет отслеживать изменения, возвращаться к предыдущим версиям и даже работать над заметками совместно с другими пользователями.
|
||||
|
||||
Другой распространенный сценарий — использование Gitea в качестве инструмента для синхронизации и версионирования паролей с помощью менеджера паролей, такого как Pass. Такой подход увеличивает безопасность управления паролями, предоставляя историю изменений, синхронизацию между устройствами и возможность восстановления предыдущих состояний.
|
||||
|
||||
Системные администраторы и энтузиасты Linux также найдут Gitea особенно полезной. Для них система может служить надежным хранилищем для конфигурационных файлов систем и приложений. В случае необходимости можно легко отследить изменения, внесенные в файлы конфигурации, и при необходимости вернуться к более ранней версии. Это особенно важно, когда изменения в конфигурации могут повлиять на стабильность системы.
|
||||
|
||||
Также Gitea может служить для управления контентом и документацией проектов. Например, организации могут использовать встроенные вики для создания и хранения технических руководств, инструкций и других документов, что особенно полезно в условиях частых изменений и необходимости обеспечения доступа к актуальной информации.
|
||||
|
||||
Gitea поддерживается активным сообществом разработчиков и пользователей, которые регулярно обновляют и дополняют документацию, делая систему доступной для новичков и профессионалов. Пользователи могут обратиться за помощью через GitHub, специализированные форумы и чаты, где можно задать вопросы, обменяться опытом или найти решения для специфических проблем. Это обеспечивает надёжную поддержку и постоянное развитие платформы.
|
||||
### Альтернативы и в каких случаях стоит выбирать Gitea
|
||||
Выбор подходящей системы управления версиями зависит от конкретных потребностей проекта или организации. Gitea выделяется среди подобных систем благодаря своей лёгкости и минимальным требованиям к ресурсам, что делает её идеальной для малых команд или индивидуальных разработчиков, которым нужен простой и эффективный инструмент без сложной инфраструктуры.
|
||||
|
||||
В отличие от GitHub, который является популярной коммерческой платформой, Gitea предоставляет возможность полного контроля над вашими данными, поскольку её можно развернуть в собственной инфраструктуре. Это может быть критически важно для организаций, требующих строгого соблюдения политик конфиденциальности и безопасности.
|
||||
|
||||
GitLab, хотя и предлагает обширные возможности для CI/CD, требует значительно больше ресурсов для своего функционирования и имеет сложную структуру, что может оказаться излишним для небольших проектов. Более того, не все функции GitLab доступны в бесплатной версии, что также может повлиять на выбор в пользу более доступных решений.
|
||||
|
||||
Таким образом, если ваша цель — обеспечить лёгкость управления, минимизировать затраты на инфраструктуру и удерживать полный контроль над системой и данными, Gitea представляет собой прекрасный выбор.
|
||||
|
||||
## Начнём установку <a name="Начало-установки"></a>
|
||||
В качестве тестового стенда я буду использовать виртуальную машину на базе Debian 12 с конфигурацией (1/2/30)
|
||||
Начинать установку будем с уже классических `apt update && apt upgrade -y `
|
||||
Далее установим MariaDB
|
||||
`apt install mariadb-server`
|
||||
### После установки запустим скрипт безопасной настройки
|
||||
` mysql_secure_installation `
|
||||
### Выполните установку следуя подсказкам на экране
|
||||
|
||||
После чего нужно войти в консоль MariaDB и создать пользователя и БД, которые будут использоваться системой
|
||||
```
|
||||
mysql -u root -p
|
||||
CREATE USER 'twgitea'@'%' IDENTIFIED BY 'secretpass'; (secretpass поменяйте на надёжный и безопасный пароль)
|
||||
CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
|
||||
GRANT ALL PRIVILEGES ON giteadb.* TO 'twgitea';
|
||||
FLUSH PRIVILEGES;
|
||||
```
|
||||
## Теперь установим саму Gitea
|
||||
```
|
||||
wget -O gitea https://dl.gitea.io/gitea/1.21.10/gitea-1.21.10-linux-amd64
|
||||
chmod +x gitea
|
||||
```
|
||||
### Так-же проверьте что на сервере установлен Git `git --version`
|
||||
### Создадим системного пользователя, под которым будет работать gitea
|
||||
```
|
||||
adduser \
|
||||
--system \
|
||||
--shell /bin/bash \
|
||||
--gecos 'Git Version Control' \
|
||||
--group \
|
||||
--disabled-password \
|
||||
--home /home/git \
|
||||
git
|
||||
```
|
||||
### Не забудем про директории для хранения данных, конфигураций и логов
|
||||
```
|
||||
mkdir -p /var/lib/gitea/{custom,data,log}
|
||||
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
|
||||
```
|
||||
### Установим переменную окружения для рабочей директории и скопируем исполняемый файл в системный каталог
|
||||
```
|
||||
export GITEA_WORK_DIR=/var/lib/gitea/
|
||||
cp gitea /usr/local/bin/gitea
|
||||
```
|
||||
### Создание и настройка сервиса для systemd
|
||||
```
|
||||
nano /etc/systemd/system/gitea.service
|
||||
И вставим туда
|
||||
|
||||
[Unit]
|
||||
Description=MyGitea
|
||||
After=network.target
|
||||
Wants=mariadb.service
|
||||
After=mariadb.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
|
||||
```
|
||||
### Затем включим и запустим сервис
|
||||
```
|
||||
systemctl enable gitea
|
||||
systemctl start gitea
|
||||
```
|
||||
### И не забудем проверить его статус
|
||||
`systemctl status gitea`
|
||||
|
||||
|
||||
### Завершим установку через web интерфейс ip:3000
|
||||
1. Настроим базу данных
|
||||
+ В поле Database Type выберите MySQL, что соответствует типу вашей базы данных.
|
||||
+ В поле Host значение по умолчанию
|
||||
+ Введите имя пользователя базы данных в поле Username — в вашем случае это twgitea, при условии что вы его не меняли.
|
||||
+ Введите пароль, который вы задали при создании пользователя базы данных, в поле Password.
|
||||
+ В поле Database Name укажите имя вашей базы данных, которое вы задали ранее, — giteadb.
|
||||
2. Настройка общих параметров
|
||||
+ В разделе General Settings вы можете оставить значения по умолчанию. Эти параметры включают настройки пути и базовых URL, которые можно будет изменить позже, если потребуется.
|
||||
3. Создание аккаунта администратора
|
||||
+ В разделе Administrator Account Settings необходимо создать аккаунт администратора, указав желаемое имя пользователя, пароль и контактный email. Этот аккаунт будет использоваться для входа в систему и управления Gitea.
|
||||
4. Завершение установки
|
||||
+ После заполнения всех необходимых данных нажмите на кнопку Install Gitea. Процесс установки начнется, и после его завершения вы сможете войти в систему с помощью созданного аккаунта администратора.
|
||||
|
||||
### Настройка Nginx и SSL для домена
|
||||
```
|
||||
apt install nginx
|
||||
nano /etc/nginx/sites-available/twgitea.test.ru (не забываем менять домен, на актуальный для вас)
|
||||
```
|
||||
### И вставляем следующую конфигурацию (**меняя домен на свой**)
|
||||
```
|
||||
server {
|
||||
listen 80;
|
||||
server_name twgitea.test.ru;
|
||||
|
||||
location / {
|
||||
client_max_body_size 512M;
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
|
||||
}
|
||||
}
|
||||
```
|
||||
### Активируем новую конфигурацию, создав символическую ссылку на неё в директории sites-enabled (меняя домен на свой):
|
||||
`ln -s /etc/nginx/sites-available/twgitea.test.ru /etc/nginx/sites-enabled/`
|
||||
|
||||
### Теперь установим SSL сертификат при помощи Certbot
|
||||
```
|
||||
apt install certbot python3-certbot-nginx
|
||||
certbot --non-interactive -m mail@example.com --agree-tos --no-eff-email --nginx -d twgitea.test.ru (меняем почту и домен на свои)
|
||||
systemctl restart nginx
|
||||
```
|
||||
### Теперь сервис будет доступен по безопасному https соединению
|
||||
Дополнительно вы можете отредактировать файл конфигурации /etc/gitea/app.ini, чтобы настроить домен и уровень доступа. В сегменте [server] файла конфигурации измените значения SSH_DOMAIN, DOMAIN и ROOT_URL, указав вместо IP-адреса ваш домен. Это позволит корректно отображать ссылки в вашей системе управления версиями.
|
||||
|
||||
В разделе [service] файла /etc/gitea/app.ini вы можете установить параметр DISABLE_REGISTRATION в значение true, чтобы запретить регистрацию новых пользователей. Это увеличит безопасность вашей системы, ограничив доступ только к выбранным пользователям.
|
||||
|
||||
Для применения изменений необходимо перезапустить сервис командой:
|
||||
`systemctl restart gitea`
|
||||
|
||||
### Быстренько настроим простейший FireWall
|
||||
```
|
||||
ufw reset
|
||||
ufw default deny incoming
|
||||
ufw default allow outgoing
|
||||
```
|
||||
### Разрешение доступа к стандартным веб-портам и SSH:
|
||||
```
|
||||
ufw allow 80
|
||||
ufw allow 443
|
||||
ufw allow 22
|
||||
```
|
||||
### Запретим доступ к нашему git-серверу по ip:3000 для внешних подключений:
|
||||
```
|
||||
ufw allow from 127.0.0.1 to any port 3000
|
||||
ufw deny 3000
|
||||
```
|
||||
### Активируем и проверим статус
|
||||
```
|
||||
ufw enable
|
||||
ufw status
|
||||
```
|
||||
|
||||
## Рассмотрим процес создания резервной копии
|
||||
Регулярное создание резервных копий — ключевой аспект поддержания данных в безопасности. Для Gitea процесс создания резервной копии может быть выполнен следующим образом:
|
||||
Переключитесь на пользователя, под которым работает Gitea:
|
||||
`su git`
|
||||
Перейдите в директорию, где будет создан бэкап (например, /home/git):
|
||||
`cd /home/git`
|
||||
Выполните команду для создания дампа данных:
|
||||
`/usr/local/bin/gitea dump -c /etc/gitea/app.ini`
|
||||
Эта команда создаст архив с резервной копией, который включает базу данных, конфигурационные файлы, репозитории и другие важные данные.
|
||||
Созданный архив будет содержать важные компоненты, такие как:
|
||||
+ app.ini — файл конфигурации (если он был вне стандартной папки custom/),
|
||||
+ custom/ — все настройки кастомных решений, если такие используются,
|
||||
+ data/ — данные приложения, включая вложения и аватары,
|
||||
+ repos/ — полная копия директории репозиториев,
|
||||
+ gitea-db.sql — дамп базы данных,
|
||||
+ log/ — различные логи, хотя они не обязательны для восстановления.
|
||||
|
||||
## Восстановление из резервной копии
|
||||
Для восстановления данных из резервной копии выполните следующие шаги:
|
||||
Распакуйте архив резервной копии:
|
||||
`unzip gitea-dump-id.zip`
|
||||
Перейдите в директорию с распакованными данными:
|
||||
`cd gitea-dump-id`
|
||||
Восстановите основные компоненты:
|
||||
Конфигурационные файлы:
|
||||
`mv app.ini /etc/gitea/conf/app.ini`
|
||||
Данные приложения:
|
||||
`mv data/* /var/lib/gitea/data/`
|
||||
Логи:
|
||||
`mv log/* /var/lib/gitea/log/`
|
||||
Репозитории:
|
||||
`mv repos/* /var/lib/gitea/gitea-repositories/`
|
||||
Обновите права доступа:
|
||||
`chown -R gitea:gitea /etc/gitea/conf/app.ini /var/lib/gitea`
|
||||
Импортируйте дамп базы данных в MySQL:
|
||||
`mysql --default-character-set=utf8mb4 -u$USER -p$PASS $DATABASE < gitea-db.sql`
|
||||
Замените $USER, $PASS, и $DATABASE на имя пользователя, пароль и имя базы данных соответственно.
|
||||
Эти шаги позволят вам восстановить всю необходимую информацию и данные на вашем сервере после сбоя или переноса на новый сервер.
|
||||
Loading…
Reference in New Issue