Как установить Gitea с помощью Docker на Ubuntu 22.04
На этой странице
- Предпосылки
- Установка и настройка Docker
- Настройка среды развертывания Gitea
- Создание контейнерных сервисов Gitea
- Настройка Nginx в качестве обратного прокси-сервера для Gitea
- Начать настройку установки Gitea
- Заключение
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.