Поиск по сайту:

Как установить Gitea на Ubuntu 22.04


Это руководство существует для этих версий ОС

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 18.04 (Bionic Beaver)

На этой странице

  1. Предпосылки
  2. Начало работы
  3. Установка и настройка MariaDB
  4. Установка и настройка Gitea
  5. Создать служебный файл Gitea Systemd
  6. Настройка Nginx в качестве обратного прокси-сервера для Gitea
  7. Защитите Gitea с помощью Lets Encrypt SSL
  8. Доступ к веб-интерфейсу Gitea
  9. Заключение

Gitea — это бесплатная служба Git с открытым исходным кодом и самостоятельным размещением. Он написан на языке GO и обеспечивает более простой способ размещения вашей собственной системы контроля версий в Интернете. Он прост, легок и может быть установлен на маломощных системах. Он очень похож на GitHub и GitLab и предлагает богатый набор функций, таких как редактор файлов репозитория, отслеживание проблем проекта, управление пользователями, уведомления, встроенная вики и многое другое. Он кроссплатформенный и может быть установлен на все основные операционные системы, включая Linux, macOS, Windows, архитектуры ARM и PowerPC.

В этом руководстве мы покажем вам, как установить службу Gitea Git с Nginx и Lets Encrypt SSL в Ubuntu 22.04.

Предпосылки

  • Сервер под управлением Ubuntu 22.04.
  • Действительное доменное имя, указанное с IP-адресом вашего сервера.
  • На вашем сервере настроен пароль root.

Начиная

Сначала обновите и обновите все системные пакеты до последней версии, выполнив следующую команду:

apt update -y
apt upgrade -y

Затем установите пакет Git, выполнив следующую команду:

apt-get install git -y

После установки пакета Git вы можете перейти к следующему шагу.

Установить и настроить MariaDB

Gitea использует MariaDB в качестве серверной части базы данных. Поэтому вам нужно будет установить его на свой сервер. Вы можете установить его, выполнив следующую команду:

apt install mariadb-server -y

После установки. Итак, вам нужно будет защитить MariaDB и установить пароль root. Вы можете защитить его, запустив скрипт mysql_secure_installation:

mysql_secure_installation

Этот скрипт установит пароль root, удалит анонимных пользователей, запретит удаленный вход root и удалит тестовую базу данных, как показано ниже:

Enter current password for root (enter for none):
Set root password? [Y/n]: Y
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]:  Y
Reload privilege tables now? [Y/n]:  Y

Как только MariaDB будет защищена, войдите в оболочку MariaDB с помощью следующей команды:

mysql -u root -p

Введите пароль root при появлении запроса. Затем измените GLOBAL innodeb_file_per_table на On:

MariaDB [(none)]>SET GLOBAL innodb_file_per_table = ON;

Затем создайте базу данных и пользователя для Gitea с помощью следующей команды:

MariaDB [(none)]>CREATE DATABASE gitea;
MariaDB [(none)]>CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'password';

Затем предоставьте все привилегии базе данных giteadb:

MariaDB [(none)]>GRANT ALL ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Затем обновите набор символов базы данных с помощью следующей команды:

MariaDB [(none)]>ALTER DATABASE gitea CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci;

Наконец, сбросьте привилегии и выйдите из оболочки MariaDB с помощью следующей команды:

MariaDB [(none)]>FLUSH PRIVILEGES;
MariaDB [(none)]>EXIT;

Далее вам нужно будет отредактировать файл конфигурации MariaDB по умолчанию и добавить параметры InnoDB:

nano /etc/mysql/mariadb.conf.d/50-server.cnf

Добавьте следующие строки в раздел [mysqld]:

innodb_file_format = Barracuda
innodb_large_prefix = 1
innodb_default_row_format = dynamic

Сохраните и закройте файл. Затем перезапустите службу MariaDB, чтобы применить изменения:

systemctl restart mariadb

На этом этапе ваша база данных MariaDB настроена. Теперь вы можете перейти к следующему шагу.

Установите и настройте Gitea

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

wget https://dl.gitea.io/gitea/1.17.1/gitea-1.17.1-linux-amd64

После завершения загрузки скопируйте загруженный файл в каталог /usr/bin/ и дайте права на выполнение:

cp gitea-1.17.1-linux-amd64 /usr/bin/gitea
chmod 755 /usr/bin/gitea

Затем создайте системного пользователя для Gitea с помощью следующей команды:

adduser --system --shell /bin/bash --group --disabled-password --home /home/git git

Затем создайте структуру каталогов для Gitea с помощью следующей команды:

mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
chown git:git /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
chmod 750 /var/lib/gitea/{data,indexers,log}
chmod 770 /etc/gitea

Как только вы закончите, вы можете перейти к следующему шагу.

Создать служебный файл Gitea Systemd

Далее вам нужно будет создать файл службы systemd для управления службой Gitea с помощью systemd. Вы можете создать его с помощью следующей команды:

nano /etc/systemd/system/gitea.service

Добавьте следующие строки:

[Unit]
Description=Gitea
After=syslog.target
After=network.target
After=mysql.service

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

[Install]
WantedBy=multi-user.target

Сохраните и закройте файл. Затем перезагрузите демон systemd и запустите службу Gitea с помощью следующей команды:

systemctl daemon-reload
systemctl start gitea

Вы можете проверить статус службы Gitea с помощью следующей команды:

systemctl status gitea

Вы должны увидеть следующий вывод:

? gitea.service - Gitea
     Loaded: loaded (/etc/systemd/system/gitea.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-08-21 12:19:23 UTC; 8s ago
   Main PID: 24766 (gitea)
      Tasks: 6 (limit: 2242)
     Memory: 121.2M
        CPU: 800ms
     CGroup: /system.slice/gitea.service
             ??24766 /usr/bin/gitea web -c /etc/gitea/app.ini

Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:21:PreloadSettings() [I] AppPath: /usr/bin/gitea
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:22:PreloadSettings() [I] AppWorkPath: /var/lib/gitea
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:23:PreloadSettings() [I] Custom path: /var/lib/gitea/cus>
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:24:PreloadSettings() [I] Log path: /var/lib/gitea/log
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:25:PreloadSettings() [I] Configuration file: /etc/gitea/>
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:26:PreloadSettings() [I] Prepare to run install page
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:29:PreloadSettings() [I] SQLite3 is supported
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 cmd/web.go:217:listen() [I] [630222cb-6] Listen: http://0.0.0.0:3000
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 cmd/web.go:221:listen() [I] [630222cb-6] AppURL(ROOT_URL): http://localhost:3000/
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/graceful/server.go:61:NewServer() [I] [630222cb-6] Starting new Web server:>

Затем включите службу Gitea для запуска при перезагрузке системы с помощью следующей команды:

systemctl enable gitea

На этом этапе Gitea запущена и прослушивает порт 3000. Теперь вы можете перейти к следующему шагу.

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

По умолчанию Gitea прослушивает порт 3000. Поэтому вам нужно будет настроить Nginx в качестве обратного прокси-сервера для доступа к Gitea без указания порта.

Сначала установите веб-сервер Nginx, выполнив следующую команду:

apt-get install nginx -y

После установки создайте новый файл конфигурации виртуального хоста Nginx для Gitea:

nano /etc/nginx/sites-available/gitea

Добавьте следующие строки:

upstream gitea {
    server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name git.example.com;
    root /var/lib/gitea/public;
    access_log off;
    error_log off;

    location / {
      try_files maintain.html $uri $uri/index.html @node;
    }

    location @node {
      client_max_body_size 0;
      proxy_pass http://localhost:3000;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_max_temp_file_size 0;
      proxy_redirect off;
      proxy_read_timeout 120;
    }
}

Сохраните и закройте файл. Затем включите файл конфигурации виртуального хоста Nginx с помощью следующей команды:

ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/

Наконец, перезапустите службу Nginx и проверьте состояние службы Nginx с помощью следующей команды:

systemctl restart nginx
systemctl status nginx

Вы должны получить следующий результат:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-08-21 12:21:23 UTC; 5s ago
       Docs: man:nginx(8)
    Process: 24799 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 24800 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 24801 (nginx)
      Tasks: 2 (limit: 2242)
     Memory: 4.5M
        CPU: 44ms
     CGroup: /system.slice/nginx.service
             ??24801 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??24802 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Aug 21 12:21:23 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server...
Aug 21 12:21:23 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.

На данный момент Nginx настроен для обслуживания Gitea. Теперь вы можете перейти к следующему шагу.

Защитите Gitea с помощью Lets Encrypt SSL

Во-первых, вам нужно будет установить клиент Certbot для установки и управления Lets Encrypt SSL в вашей системе. Вы можете установить его, выполнив следующую команду:

apt-get install certbot python3-certbot-nginx -y

После установки Certbot выполните следующую команду, чтобы загрузить и установить Lets Encrypt SSL для веб-сайта Gitea.

certbot --nginx -d gitea.linuxbuz.com

Укажите свой адрес электронной почты и примите условия обслуживания, как показано ниже:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for gitea.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/gitea

Затем выберите, следует ли перенаправлять HTTP-трафик на HTTPS, как показано ниже:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Введите 2 и нажмите Enter, чтобы установить сертификат, как показано ниже:

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/gitea

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://gitea.linuxbuz.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=gitea.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/gitea.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/gitea.linuxbuz.com/privkey.pem
   Your cert will expire on 2022-11-21. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Теперь ваш сайт Gitea защищен с помощью Lets Encrypt SSL. Теперь вы можете перейти к следующему шагу.

Доступ к веб-интерфейсу Gitea

Теперь откройте веб-браузер и введите URL-адрес https://git.example.com/. Вы будете перенаправлены на следующую страницу:

Укажите имя базы данных Gitea, имя пользователя, пароль, путь к репозиторию, запуск от имени пользователя, порт прослушивания, базовый URL-адрес Gitea, путь журнала, имя пользователя администратора Gitea, пароль и нажмите кнопку «Установить Gitea». После завершения установки вы должны увидеть панель управления Gitea на следующем экране:

Заключение

Поздравляем! вы успешно установили Gitea с Nginx и Lets Encrypt SSL на сервере Ubuntu 22.04. Теперь вы можете развернуть Gitea в своей организации и приступить к созданию своего первого репозитория с помощью Gitea. Для получения дополнительной информации посетите документацию Gitea.