Forgejo - это безболезненный Git-сервис, созданный самостоятельно и подобный GitHub, Bitbucket и Gitlab.
Главная цель Forgejo - предоставить самый быстрый, самый простой и самый безболезненный способ настройки сервиса Git для собственного размещения. Будучи написанным на Go, он распространяется в виде двоичного пакета, который работает на всех платформах и архитектурах, которые поддерживает Go.
Предпосылки
- Сервер с Ubuntu 22.04 в качестве ОС
- Права пользователя: пользователь root или обычный пользователь с привилегиями sudo
Обновите систему
Свежая установка Ubuntu 22.04 требует обновления пакетов до последних доступных версий.
sudo apt-get update -y && sudo apt-get upgrade -y
Установите Git
Установите Git.
sudo apt -y install git
Установите PostgreSQL
Установите пакет PostgreSQL вместе с пакетом -contrib, который добавляет некоторые дополнительные утилиты и функции:
sudo apt install postgresql postgresql-contrib
После установки запустите и включите службу PostgreSQL.
sudo systemctl enable postgresql.service && sudo systemctl start postgresql.service
Создание базы данных
Нам нужно создать базу данных для Forgejo для работы.
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.
sudo adduser \
--system \
--shell /bin/ \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
Создайте необходимую структуру каталогов.
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
, измените путь, где это необходимо, если вы хотите установить его в другом месте.
sudo wget -O /opt/forgejo https://codeberg.org/attachments/81b83949-c44b-44ec-a74b-ff9cead25dac
Сделайте файл forgejo исполняемый
sudo chmod +x /opt/forgejo
sudo setcap 'cap_net_bind_service=+ep' /opt/forgejo
sudo ln -s /opt/forgejo /usr/local/bin/forgejo
Убедитесь, что возможность добавлена:
getcap /opt/forgejo
/opt/forgejo = cap_net_bind_service+ep
Обратите внимание, что вам придется сделать эту операцию каждый раз, когда вы обновляете Forgejo.
Создайте служебный файл для автоматического запуска Forgejo
Создайте файл службы Linux.
sudo nano /etc/systemd/system/forgejo.service
Заполните файл следующим.
[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 при загрузке.
sudo systemctl daemon-reload
sudo systemctl start forgejo.service
sudo systemctl enable forgejo.service
Настройте Nginx в качестве обратного прокси
sudo apt -y install nginx
Создайте конфигурацию обратного прокси для forgejo.
sudo nano /etc/nginx/sites-available/forgejo.conf
Заполните файл следующей конфигурацией.
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.
sudo ln -s /etc/nginx/sites-available/forgejo.conf /etc/nginx/sites-enabled/forgejo.conf
Затем перезагрузите сервис Nginx.
sudo systemctl reload nginx.service
Затем откройте браузер и перейдите к имени хоста или IP-адресу сервера.
http://git.example.com/install
Следуйте инструкциям на экране для завершения настройки forgejo.
Когда вы закончите настройку, нажмите кнопку «Install forgejo», чтобы завершить установку. При успешной установке вы должны войти в консоль администрирования forgejo.
Вы успешно установили forgejo на сервер Ubuntu 22.04. Желаем вам приятного времяпрепровождения, обратитесь к документации forgejo за расширенными настройками и руководствами по использованию.
Настройка SMTP
Если вы хотите настроить базовый SMTP-сервер и не использовать сторонние сервисы SMTP, установите Mailutils.
sudo apt install mailutils
Чтобы включить уведомления по электронной почте, откройте файл конфигурации и отредактируйте следующие строки:
sudo nano /etc/forgejo/app.ini
[Почтовая программа]
ENABLED = true
HOST = SMTP_SERVER: SMTP_PORT
FROM = SENDER_EMAIL
USER = SMTP_USER
PASSWD = YOUR_SMTP_PASSWORD
Убедитесь, что вы указали правильную информацию о SMTP-сервере.
Перезапустите службу forgejo, чтобы изменения вступили в силу:
sudo systemctl restart forgejo.service
Чтобы проверить настройки и отправить тестовое электронное письмо, войдите в forgejo и перейдите по адресу: Администрирование сайта > Конфигурация > Конфигурация SMTP Mailer.
Обновление forgejo
Обновления до последней версии forgejo просто загрузите и замените двоичный файл.
Остановите службу forgejo:
sudo systemctl stop forgejo.service
Загрузите последнюю версию forgejo и переместите ее в /opt каталог:
sudo wget -O /opt/forgejo https://codeberg.org/attachments/81b83949-c44b-44ec-a74b-ff9cead25dac
Сделайте двоичный исполняемый файл:
sudo chmod +x /opt/forgejo
sudo setcap 'cap_net_bind_service=+ep' /opt/forgejo
sudo ln -s /opt/forgejo /usr/local/bin/forgejo
Запустите сервис forgejo:
sudo systemctl restart forgejo.service
Собственно на этом всё. Если вам понравился этот пост об установке Forgejo на Ubuntu 22.04, поделитесь им с друзьями в социальных сетях. Спасибо.