Forgejo - это безболезненный Git-сервис, созданный самостоятельно и подобный GitHub, Bitbucket и Gitlab.

Главная цель Forgejo - предоставить самый быстрый, самый простой и самый безболезненный способ настройки сервиса Git для собственного размещения. Будучи написанным на Go, он распространяется в виде двоичного пакета, который работает на всех платформах и архитектурах, которые поддерживает Go.

Предпосылки

  • Сервер с Ubuntu 22.04 в качестве ОС
  • Права пользователя: пользователь root или обычный пользователь с привилегиями sudo

Обновите систему

Свежая установка Ubuntu 22.04 требует обновления пакетов до последних доступных версий.

1
sudo apt-get update -y && sudo apt-get upgrade -y

Установите Git

Установите Git.

1
sudo apt -y install git

Установите PostgreSQL

Установите пакет PostgreSQL вместе с пакетом -contrib, который добавляет некоторые дополнительные утилиты и функции:

1
sudo apt install postgresql postgresql-contrib

После установки запустите и включите службу PostgreSQL.

1
sudo systemctl enable postgresql.service && sudo systemctl start postgresql.service

Создание базы данных

Нам нужно создать базу данных для Forgejo для работы.

1
2
3
sudo -u postgres psql -c "CREATE USER forgejo WITH PASSWORD 'yourpassword';"
sudo -u postgres psql -c "CREATE DATABASE forgejo_db OWNER forgejo;"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE forgejo_db TO forgejo;"

Подготовьте среду forgejo

Создайте пользователя для запуска forgejo.

1
2
3
4
5
6
7
8
sudo adduser \
   --system \
   --shell /bin/ \
   --gecos 'Git Version Control' \
   --group \
   --disabled-password \
   --home /home/git \
   git

Создайте необходимую структуру каталогов.

1
2
3
4
5
6
sudo mkdir -p /var/lib/forgejo/{custom,data,indexers,public,log}
sudo chown git:git /var/lib/forgejo/{data,indexers,log}
sudo chmod 750 /var/lib/forgejo/{data,indexers,log}
sudo mkdir /etc/forgejo
sudo chown root:git /etc/forgejo
sudo chmod 770 /etc/forgejo

Структура каталогов, приведенная выше, рекомендована официальной документацией forgejo.

Разрешения для каталога /etc/forgejo установлены на 770, чтобы мастер установки мог создать файл конфигурации.

Установите Forgejo

Мы установим forgejo в /opt, измените путь, где это необходимо, если вы хотите установить его в другом месте.

1
sudo wget -O /opt/forgejo https://codeberg.org/attachments/81b83949-c44b-44ec-a74b-ff9cead25dac

Сделайте файл forgejo исполняемый

1
2
3
sudo chmod +x /opt/forgejo
sudo setcap 'cap_net_bind_service=+ep' /opt/forgejo
sudo ln -s /opt/forgejo /usr/local/bin/forgejo

Убедитесь, что возможность добавлена:

1
2
getcap /opt/forgejo
/opt/forgejo = cap_net_bind_service+ep

Обратите внимание, что вам придется сделать эту операцию каждый раз, когда вы обновляете Forgejo.

Создайте служебный файл для автоматического запуска Forgejo

Создайте файл службы Linux.

1
sudo nano /etc/systemd/system/forgejo.service

Заполните файл следующим.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
[Unit]
Description=Forgejo
After=syslog.target
After=network.target
After=postgresql.service

[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/forgejo/
ExecStart=/usr/local/bin/forgejo web -c /etc/forgejo/app.ini
Restart=always
Environment=USER=git HOME=/home/git forgejo_WORK_DIR=/var/lib/forgejo

[Install]
WantedBy=multi-user.target

Включите и запустите forgejo при загрузке.

1
2
3
sudo systemctl daemon-reload
sudo systemctl start forgejo.service
sudo systemctl enable forgejo.service

Настройте Nginx в качестве обратного прокси

1
sudo apt -y install nginx

Создайте конфигурацию обратного прокси для forgejo.

1
sudo nano /etc/nginx/sites-available/forgejo.conf

Заполните файл следующей конфигурацией.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
server {
    listen 80;
    index index.php index.html index.htm;

    server_name git.example.com;
                
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $http_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;
    }
}

Включите конфигурацию обратного прокси-сервера forgejo Nginx.

1
sudo ln -s /etc/nginx/sites-available/forgejo.conf /etc/nginx/sites-enabled/forgejo.conf

Затем перезагрузите сервис Nginx.

1
sudo systemctl reload nginx.service

Затем откройте браузер и перейдите к имени хоста или IP-адресу сервера.

http://git.example.com/install

Следуйте инструкциям на экране для завершения настройки forgejo.

Когда вы закончите настройку, нажмите кнопку «Install forgejo», чтобы завершить установку. При успешной установке вы должны войти в консоль администрирования forgejo.

Вы успешно установили forgejo на сервер Ubuntu 22.04. Желаем вам приятного времяпрепровождения, обратитесь к документации forgejo за расширенными настройками и руководствами по использованию.

Настройка SMTP

Если вы хотите настроить базовый SMTP-сервер и не использовать сторонние сервисы SMTP, установите Mailutils.

1
sudo apt install mailutils

Чтобы включить уведомления по электронной почте, откройте файл конфигурации и отредактируйте следующие строки:

1
sudo nano /etc/forgejo/app.ini
1
2
3
4
5
6
[Почтовая программа]
ENABLED = true
HOST = SMTP_SERVER: SMTP_PORT
FROM = SENDER_EMAIL
USER = SMTP_USER
PASSWD = YOUR_SMTP_PASSWORD

Убедитесь, что вы указали правильную информацию о SMTP-сервере.

Перезапустите службу forgejo, чтобы изменения вступили в силу:

1
sudo systemctl restart forgejo.service

Чтобы проверить настройки и отправить тестовое электронное письмо, войдите в forgejo и перейдите по адресу: Администрирование сайта > Конфигурация > Конфигурация SMTP Mailer.

Обновление forgejo

Обновления до последней версии forgejo просто загрузите и замените двоичный файл.

Остановите службу forgejo:

1
sudo systemctl stop forgejo.service

Загрузите последнюю версию forgejo и переместите ее в /opt каталог:

1
sudo wget -O /opt/forgejo https://codeberg.org/attachments/81b83949-c44b-44ec-a74b-ff9cead25dac

Сделайте двоичный исполняемый файл:

1
2
3
sudo chmod +x /opt/forgejo
sudo setcap 'cap_net_bind_service=+ep' /opt/forgejo
sudo ln -s /opt/forgejo /usr/local/bin/forgejo

Запустите сервис forgejo:

1
sudo systemctl restart forgejo.service

Собственно на этом всё. Если вам понравился этот пост об установке Forgejo на Ubuntu 22.04, поделитесь им с друзьями в социальных сетях. Спасибо.