В этом руководстве описаны все шаги, необходимые для установки Gogs self-hosted Git service на сервер Ubuntu. Проект Gogs, написанный на языке Go, нацелен на создание простого, стабильного и расширяемого сервиса Git на собственном хостинге с безболезненным процессом установки. Gogs распространяется как независимый бинарный дистрибутив и работает на всех платформах, которые поддерживает Go, включая Linux, macOS, Windows и ARM.
Gogs имеет отличную производительность и очень легкий. Он имеет очень минимальную загрузку оперативной памяти и процессора. Для начала использования сервиса достаточно VPS с 1 ядром процессора и 256 МБ оперативной памяти.
Особенности Gogs
Gogs self-hosted Git service имеет следующий набор возможностей (из Git)
- Временная шкала активности
- SMTP/LDAP/Reverse proxy аутентификация
- Управление учетной записью/организацией/репозиторием
- Git-хуки репозитория/ключи развертывания
- SSH и HTTP/HTTPS протоколы
- Обратный прокси с подпутями
- Добавление/удаление коллабораторов репозитория
- Веб-редактор для файлов репозитория и вики
- Миграция и зеркалирование репозитория и его вики
- Веб-крючки для репозитория/организации (включая Slack и Discord)
- Запросы на исправление проблем репозитория, вики и защищенные ветки
- Двухфакторная аутентификация
- Gravatar и Federated avatar с пользовательским источником
- Jupyter Notebook
- Панель администрирования
- Почтовый сервис
- Поддержка MySQL, PostgreSQL, SQLite3, MSSQL и TiDB (через протокол MySQL)
- Многоязыковая поддержка (29 языков)
Установка службы Gogs Git на Ubuntu
шаг 1: Установите сервер базы данных MariaDB
Для хранения данных Gogs требуется сервер MySQL.
1 2 | sudo apt update sudo apt install mysql-server mysql-client |
После установки сервера базы данных войдите в консоль MySQL под пользователем root
1 | mysql -u root -p |
Установите глобальные переменные ниже
1 | SET GLOBAL innodb_file_per_table = ON; |
Затем создайте базу данных gogs
1 2 | DROP DATABASE IF EXISTS gogs; CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; |
Создайте выделенного пользователя базы данных для управления базой данных gogs.
1 2 3 4 | CREATE USER 'gogs'@'localhost' IDENTIFIED BY 'StrongPassword'; GRANT ALL PRIVILEGES ON `gogs`.* TO 'gogs'@'localhost'; FLUSH PRIVILEGES; \q |
Шаг 2: Загрузите Gogs с Github
Проверьте страницу релизов Gogs https://github.com/gogs/gogs/releases на наличие последней версии.
1 | sudo apt install wget curl vim -y |
1 | curl -s https://api.github.com/repos/gogs/gogs/releases/latest | grep browser_download_url | grep '\linux_amd64.tar.gz' | cut -d '"' -f 4 | wget -i - |
Распакуйте загруженный файл
1 | tar xvf gogs_*_linux_amd64.tar.gz |
Шаг 3: Настройте самораспространяющийся Git-сервис Gogs
Создайте пользователя git для запуска службы gogs
1 | sudo adduser git |
1 2 | sudo mkdir /var/log/gogs sudo chown -R git:git /var/log/gogs/ |
Скопируйте служебный файл gogs systemd в каталог /etc/systemd/system
1 | sudo cp gogs/scripts/systemd/gogs.service /etc/systemd/system |
Вы можете отредактировать файл для настройки параметров:
1 | sudo nano /etc/systemd/system/gogs.service |
Если у вас есть другой сервис, использующий порт 3000, вы можете установить собственный порт
1 | ExecStart=/home/git/gogs web -port 3001 |
Переместите содержимое каталога gogs внутрь /home/git
1 | sudo mv gogs /home/git/ |
Смените права собственности на /home/git/ на user.git
1 | sudo chown -R git:git /home/git/ |
Перезагрузите systemd и запустите службу gogs
1 2 | sudo systemctl daemon-reload sudo systemctl start gogs |
Включите запуск службы при загрузке
1 | sudo systemctl enable gogs |
Вы можете проверить статус службы, выполнив команду
1 | systemctl status gogs |
Ввод команды gogs в терминале в качестве пользователя git должен вывести страницу справки.
1 2 3 | /home/git/gogs ./gogs |
Шаг 4: Настройка Gogs self-hosted Git service
Откройте URL http://serverip:3000/install, чтобы завершить установку Gogs.
Введенные имя пользователя и пароль должны совпадать с указанными в разделе конфигурации базы данных. Если сервер базы данных находится на другом хосте, укажите IP-адрес в разделе Host.
Укажите URL приложения, это может быть IP-адрес маршрутизируемого сервера или доменное имя, которое разрешается в IP. То же самое должно быть задано для SSH.
Вы можете отключить саморегистрацию пользователей в разделе "Настройки сервера и других служб". Это означает, что пользователь admin будет вручную создавать учетные записи пользователей.
Вы можете по желанию создать учетную запись пользователя admin. По умолчанию пользователь root будет получать администраторский доступ автоматически.
После завершения настройки нажмите кнопку "Установить Gogs", чтобы завершить установку. После успешной установки вы должны войти в консоль администрирования Gogs.
Если получаем ошибку
1 | Не удалось проверить 'git' команду: exec: "git": executable file not found in $PATH |
Устаналиваем GIT
1 | apt install git |
Шаг: 5 Протестируйте Git-сервис Gogs на собственном хостинге
Создайте новый репозиторий под названием test-repo
Попробуйте клонировать репозиторий
1 | git clone http://serverip:3000/user/test-repo.git |
Пример вывода
1 2 3 4 5 6 | Cloning into 'test-repo'... Warning: Permanently added 'serverip' (ECDSA) to the list of known hosts. remote: Counting objects: 4, done. remote: Compressing objects: 100% (3/3), done. remote: Total 4 (delta 0), reused 0 (delta 0) Receiving objects: 100% (4/4), done. |