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

Как установить Gitea с помощью Docker на Ubuntu 22.04


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

  1. Предпосылки
  2. Установка и настройка Docker
  3. Настройка среды развертывания Gitea
  4. Создание контейнерных сервисов Gitea
  5. Настройка Nginx в качестве обратного прокси-сервера для Gitea
  6. Начать настройку установки Gitea
  7. Заключение

Gitea — это бесплатный Git-сервис с открытым исходным кодом, такой же, как GitHub, BitBuacket и GitLab. Это форк сообщества Gogs git, написанный на Go с лицензией MIT. Gitea предоставляет функции для совместной разработки и командной работы, такие как отслеживание ошибок, вики и проверка кода. Gita — это кроссплатформенное приложение, которое можно установить в нескольких операционных системах, таких как Linux, macOS, Windows и ARM.

Основная цель Gitea — предоставить самый простой, быстрый и простой способ создания и развертывания службы Git на вашем сервере. Кроме того, Gitea поддерживает несколько методов аутентификации, таких как LDAP, PAM, SMTP и FreeIPA. Что касается событий репозитория веб-перехватчиков, Gitea поддерживает несколько веб-перехватчиков, таких как Slack, Discord, Microsoft Team, Telegram и т. д.

В этом руководстве вы узнаете, как установить и настроить собственный сервер Git с именем Gitea с Docker на последнем сервере Ubuntu 22.04. Это также касается установки и настройки веб-сервера Nginx в качестве обратного прокси-сервера для службы контейнеров Gitea.

Предпосылки

  • Сервер Ubuntu — в этом руководстве используется последний сервер Ubuntu 22.04.
  • Пользователь без полномочий root с привилегиями root — или вы также можете использовать пользователя root.

Установка и настройка Докера

Первый шаг, который вы сделаете, — это установите и настройте Docker на вашем компьютере с Ubuntu. В этом руководстве вы будете устанавливать Docker из официального репозитория Docker, поэтому вам нужно будет добавить в свою систему ключ и репозиторий Docker GPG.

Прежде чем приступить к работе, запустите приведенную ниже команду apt, чтобы установить основные зависимости пакетов, такие как gnupg2 и curl.

sudo apt install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

После завершения установки выполните приведенную ниже команду, чтобы загрузить и добавить ключ GPG в репозиторий Docker. Ключ GPG будет храниться в каталоге /etc/apt/keyrings.

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

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

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

После этого обновите и обновите свои репозитории Ubuntu, используя приведенную ниже команду.

sudo apt update

На приведенном ниже снимке экрана видно, что добавлен репозиторий Docker для Ubuntu 22.04.

Наконец, вы можете установить движок Docker в свою систему Ubuntu, используя следующую команду. Плагин пакета docker-compose является заменой Docker Compose, который теперь можно использовать как плагин для Docker.

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Введите Y, чтобы подтвердить установку, и нажмите ENTER, чтобы продолжить. Начнется установка Docker.

Теперь запустите команду docker ниже, чтобы проверить установку Docker.

sudo docker run hello-world

Если ваша установка Docker прошла успешно, вы увидите сообщение Hello World от Docker.

Настройка среды развертывания Gitea

После того, как вы успешно установили Docker, вы теперь будете настраивать среду установки Gitea. В этом примере служба контейнеров Gitea будет работать от имени пользователя без полномочий root, поэтому вам нужно будет создать нового пользователя в вашей системе и добавить пользователя в групповой докер, чтобы позволить пользователю выполнять и запускать контейнеры Docker.

Выполните приведенную ниже команду, чтобы добавить нового пользователя с именем gitea. Параметр -m здесь используется для автоматического создания нового домашнего каталога для пользователя gitea, а оболочка по умолчанию для нового пользователя — /bin/bash .

useradd -m -s /bin/bash gitea

Затем добавьте пользователя gitea в группу docker с помощью следующей команды. И теперь пользователь gitea сможет запускать контейнеры Docker.

usermod -aG docker gitea

Чтобы проверить, войдите в систему как пользователь gitea, используя следующую команду.

su - gitea

Теперь запустите приведенную ниже команду docker, чтобы запустить новый контейнер с образом \hello-world\.

docker run hello-world

Вы должны увидеть сообщение Hello-world от Docker, что означает, что вы готовы начать настройку нового проекта для установки Gitea.

Создание контейнерных служб Gitea

После добавления нового пользователя для запуска службы контейнеров Gitea вы теперь будете настраивать установку проекта Gitea. Все команды в этом разделе выполняются под новым пользователем gitea.

Сначала создайте новый каталог проекта с именем \myapp\ и измените на него рабочий каталог.

mkdir -p myapp; cd myapp/

Создайте новый файл docker-compose.yml с помощью редактора nano.

nano docker-compose.yml

Добавьте следующую конфигурацию в файл docker-compose.yml.

version: "2"

volumes:
  gitea-data:
    driver: local
  gitea-config:
    driver: local

services:
  server:
    image: gitea/gitea:1.16.8-rootless
    environment:
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=gitea
    restart: always
    volumes:
      - ./data:/var/lib/gitea
      - gitea-data:/var/lib/gitea
      - ./config:/etc/gitea
      - gitea-config:/etc/gitea
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:2222"
    depends_on:
      - db

  db:
    image: postgres:14
    restart: always
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=gitea
      - POSTGRES_DB=gitea
    volumes:
      - ./postgres:/var/lib/postgresql/data

Сохраните и закройте файл, когда закончите.

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

  • Два тома Docker gitea-data и gitea-config для хранения пользовательских данных и файлов конфигурации Gitea.
  • Две службы с именами \сервер\ и \база данных\.
  • Служба контейнеров Gitea будет работать с именем \сервер\ на основе образа Docker \gitea/gitea:1.16.8-rootless\ и экспортировать TCP-порты <3000 и 2222.
  • Служба контейнера Gitea будет работать со службой базы данных PostgreSQL с именем \db\.
  • Служба \db\ будет работать как база данных для службы Gitea с образом Docker по умолчанию PostgreSQL \postgres:14\. Вся служба \db\, связанная с данными, будет храниться локально в каталоге с именем postgres.

Затем выполните приведенную ниже команду docker, чтобы начать сборку и запуск сервисов контейнеров Gitea.

docker compose up -d

Ниже вы можете увидеть процесс загрузки образов Docker, необходимых для Gitea.

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

Теперь запустите команду docker ниже, чтобы проверить службы контейнеров gitea.

docker compose ps

На следующем снимке экрана вы можете видеть, что служба с именем \server\ и \db\ запущены, что означает, что развертывание контейнерных служб Gitea завершено и успешно.

Служба Gitea работает на локальном хосте с портом 3000. А порт 2222 можно использовать для соединений SSH.

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

Проверьте журналы всех контейнерных служб.

docker compose logs

Проверка журналов для каждого контейнера обслуживает БД и сервер.

docker compose logs db
docker compose logs server

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

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

В этом примере служба контейнеров Gitea будет работать с доменным именем git.hwdomain.io и включенным SSL Letsencrypt. Поэтому, прежде чем настраивать обратный прокси-сервер nginx, убедитесь, что у вас есть доменное имя и SSL Letsencrypted, сгенерированные для вашего доменного имени.

Теперь установите пакет Nginx с помощью приведенной ниже команды apt.

sudo apt install nginx

Введите Y, чтобы подтвердить установку, и нажмите ENTER, чтобы продолжить.

Затем создайте новую конфигурацию SSL /etc/nginx/snippets/ssl.conf с помощью редактора nano.

sudo nano /etc/nginx/snippets/ssl.conf

Добавьте следующую конфигурацию в файл. Кроме того, вам нужно будет изменить путь к SSL-сертификату.

ssl_certificate /etc/letsencrypt/live/git.hwdomain.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/git.hwdomain.io/privkey.pem;

# from https://cipherli.st/
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
#ssl_stapling on;
#ssl_stapling_verify on;
#resolver 8.8.8.8 8.8.4.4 valid=300s;
#resolver_timeout 5s;
# Disable preloading HSTS for now.  You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

Сохраните и закройте файл, когда закончите.

Затем создайте новую конфигурацию блоков сервера Nginx для обратного прокси-сервера Gitea /etc/nginx/sites-available/gitea.conf с помощью редактора nano.

sudo nano /etc/nginx/sites-available/gitea.conf

Добавьте в файл следующую конфигурацию и убедитесь, что имя домена git.hwdomain.io не изменено на ваш домен.

server {
    server_name git.hwdomain.io;
    listen 443 ssl http2;
    include snippets/ssl.conf;

    # Log files
    access_log /var/log/nginx/gitea.access.log;
    error_log /var/log/nginx/gitea.error.log;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $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;
    }
}

Сохраните и закройте файл, когда закончите.

Теперь выполните следующую команду, чтобы активировать конфигурацию серверных блоков gitea.conf и проверить конфигурации Nginx.

sudo ln -s /etc/nginx/sites-available/gitea.conf /etc/nginx/sites-enabled/
sudo nginx -t

Если ваша конфигурация верна, вы увидите выходное сообщение, такое как \синтаксис в порядке - проверка прошла успешно\.

Наконец, перезапустите службу nginx, чтобы применить новую конфигурацию блока сервера Nginx gitea.conf и конфигурацию SSL ssl.conf.

sudo systemctl restart nginx

Теперь вы завершили настройку Nginx в качестве обратного прокси-сервера для службы контейнеров Gitea, которая теперь работает на доменном имени https://git.hwdomain.io с включенным SSL поверх него.

Начните настройку установки Gitea

Чтобы начать установку и настройку Gitea, откройте веб-браузер и перейдите на доменное имя gitea для вашей установки (например, https://git.hwdomain.io). И теперь вы увидите страницу установки Gitea.

В разделе Исходная конфигурация оставьте значение по умолчанию, поскольку оно автоматически заполняется учетными данными базы данных PostgreSQL из файла docker-compose.yml.

Теперь измените «Домен сервера» Gitea и «Базовый URL-адрес Gitea» на установку вашего домена. В этом примере имя домена — https://git.hwdomain.io.

В разделе \Дополнительные настройки\ щелкните стрелку \Настройки учетной записи администратора\. Теперь введите новое имя пользователя, пароль и адрес электронной почты администратора для вашего сервера Gitea и нажмите кнопку «Установить Gitea».

После завершения процесса установки вы будете перенаправлены на домашнюю страницу Gitea и войдете в систему как новый пользователь, которого вы только что создали.

Установка и настройка Gitea с Docker на последней версии Ubuntu 22.04 успешно завершена.

Заключение

Поздравляем! Вы завершили установку собственного сервера git с именем Gitea с Docker на последний сервер Ubuntu 22.04. Также вы изучили базовую настройку docker-compose.yml для создания сервисов-контейнеров. Кроме того, вы узнали, как настроить Nginx в качестве обратного прокси-сервера для приложения-контейнера, в данном примере это служба контейнера Gitea.