Создаем собственный GitHub с помощью Gogs

Создаем собственный GitHub с помощью Gogs

Сегодня поговорим о том, как создать собственный 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».

gogs.io

В консоли переходим в нашу папку с сайтом:

с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 – ваш домен:

    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

Если есть желание, можно использовать поддомен, например 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 ваш_домен

источник

Related Posts
AllEscortAllEscort