Сегодня поговорим о том, как создать собственный Git-сервер с помощью Gogs.
В первую очередь нужно заказать VPS/VDS-сервер с Debian 10/11 на борту у Timeweb Cloud. Далее установить и настроить систему управления базами данных и создать таблицу в ней.
Установка Gogs
Заходим в консоль сервера по SSH.
Устанавливаем apache2:
sudo apt install apache2
Далее установим git:
sudo apt-get install git
Переходим на сайт Gogs: https://gogs.io/docs/installation/install_from_binary. Листаем вниз и ищем заголовок «Downloads». В таблице находим «linux amd64», копируем ссылку под названием «TAR.GZ».
В консоли переходим в нашу папку с сайтом:
сd /var/www/
И скачиваем Gogs:
wget ссылка, которую скопировали раннее
С помощью команды ls посмотрим содержимое папки.
Скопируйте файл с именем «gogs_0.12.4_linux_amd64.tar.gz», имя может отличаться в зависимости от версии.
Далее нам нужно разархивировать загруженный файл на сервере:
tar xzvf название файла
Настройка виртуального хоста
Gogs слушает 3000 порт, поэтому нам нужно создать хост, который будет отзываться на этом порту, с помощью данной команды:
sudo cp /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-available/site1.ru.conf
Мы копируем стандартный конфиг виртуального хоста. Теперь нам нужно отредактировать недавно созданный конфиг:
nano /etc/apache2/sites-available/gods.conf
В конце файла скопируйте приведенный ниже код, где ServerName – ваш домен:
<VirtualHost *:80> ServerName ваш домен ProxyPreserveHost On ProxyRequests off ProxyPass / http://127.0.0.1:3000/ ProxyPassReverse / http://127.0.0.1:3000/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>\
Если есть желание, можно использовать поддомен, например git.site.com. Сохраняем наш файл, далее в консоли пишем:
sudo a2ensite gogs
Затем перезапустим Apache:
sudo systemctl restart apache2
Активируем модули apache2, они необходимы для работы с прокси:
sudo a2enmod proxy sudo a2enmod proxy_http
Перезапускаем apache2:
systemctl reload apache2
Переходим в папку Gogs:
cd /var/www/gogs/
Запускаем Gogs:
./gogs web .
Если в окне консоли нет никаких ошибок, идем дальше.
Gogs по умолчанию слушает хост по следующему адресу: http://0.0.0.1. Нам нужно его заменить на локальный хост apache2. Для этого в консоли переходим в папку Gogs:
cd /var/www/gogs/
Создаем новую папку и переходим в нее:
mkdir custom cd custom
В этой папке создаем еще одну папку и переходим в нее:
mkdir conf cd conf
Создаем файл и открываем его для редактирования:
nano app.ini
В начала файла добавляем приведенный ниже код:
[server] HTTP_ADDR = 127.0.0.1
Сохраняем и открываем сайт по адресу, который вы указали в ServerName. Если все хорошо, откроется окно установки.
База данных, настройка службы запуска и SSL
Теперь создаем базу данных. Я рекомендую создать отдельного пользователя базы данных, который сможет управлять только таблицей, необходимой для работы Gogs.
Чтобы не запускать каждый раз Gogs вручную, необходимо создать службу:
nano /etc/systemd/system/gogs.service
И вставить в нее следующее:
[Unit] Description=Gogs After=syslog.target After=network.target After=mariadb.service mysqld.service postgresql.service memcached.service redis.service [Service] Type=simple User=root Group=sudo WorkingDirectory=/var/www/gogs ExecStart=/var/www/gogs/gogs web Restart=always Environment=USER=root HOME=/home ProtectSystem=full PrivateDevices=yes PrivateTmp=yes NoNewPrivileges=true [Install] WantedBy=multi-user.target
Добавить службу:
systemctl enable gogs.service
Включить ее:
systemctl start gogs.service
Кроме того, желательно наличие SSL-сертификата. Если у вашего домена его нет, сертификат можно получить бесплатно. Для этого вводим команду в консоль:
apt install python3-certbot-apache sudo certbot --apache -d ваш_домен
Комментарии