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

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

Предпосылки

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

Конвенции

1
2
# - данные команды должны выполняться с правами root либо непосредственно от имени пользователя root, либо с помощью команды sudo.
$ - данные команды должны выполняться от имени обычного пользователя.

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

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

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

Установите 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 'strong_password';"
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/bash \
   --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, измените путь, где это необходимо, если вы хотите установить его в другом месте.

1
wget -O /tmp/forgejo https://codeberg.org/forgejo/forgejo/releases/download/v11.0.0/forgejo-11.0.0-linux-amd64

И переместите в /usr/local/bin/ каталог:

1
sudo mv forgejo /usr/local/bin/forgejo

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

1
2
sudo chmod +x /usr/local/bin/forgejo
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/forgejo

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

1
2
getcap /usr/local/bin/forgejo
/usr/local/bin/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 --config /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 25.04.

Обновление Forgejo

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

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

1
sudo systemctl stop forgejo.service

Загрузите последнюю версию Forgejo.

1
wget -O /tmp/forgejo https://codeberg.org/forgejo/forgejo/releases/download/v11.0.0/forgejo-11.0.0-linux-amd64

И переместите в /usr/local/bin/ каталог:

1
sudo mv forgejo /usr/local/bin/forgejo

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

1
2
sudo chmod +x /usr/local/bin/forgejo
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/forgejo

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

1
sudo systemctl start forgejo.service

Завершение

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