Установка gitea на чистый сервер

Привет. Надеюсь, эта шпаргалка поможет тебе установить собственное «гитхаб»-лайк хранилище кода. Очень рекомендую это сделать, причём на отдельный сервер.

Делал я это, используя бинарник. Вкратце, шаги простые:

  • подготовить ОС
  • подготовить БД
  • подготовить nginx
  • скачать бинарник gitea
  • разобраться с конфигами
  • выполнить установку
  • настроить демона

Далее будет список команд, которые я выполнял и сразу записывал. Но я допускаю, что в них могут быть плёвые ошибки, т. к. во время и после установки я их корректировал (я разворачилвал гити впервые и допускал огрехи, которые фиксил на лету).

В конце будут примеры готовых конфигов.

Описанное ниже производилось мной на серверной Ubuntu 20.04 LTS в экосистеме Селектела.

Всё ставим

# обновляем систему, ставим софт
apt update
apt upgrade -y
apt install -y apt-transport-https \
    ca-certificates \
    curl \
    make \
    dialog \
    build-essential \
    software-properties-common \
    libaio1 \
    libssl-dev \
    libghc-zlib-dev \
    libcurl4-gnutls-dev \
    libexpat1-dev \
    gettext \
    unzip \
    mc \
    htop \
    nano \
    mariadb-server \
    mariadb-client \
    nginx

# собираем свежайший git из исходников
# это можно вообще переиспользовать отдельно
wget https://github.com/git/git/archive/master.zip -O /usr/src/git.zip && \
    unzip /usr/src/git.zip -d /usr/src/git && \
    rm -f /usr/src/git.zip && \
    cd /usr/src/git/git-master && \
    make prefix=/usr/local all && \
    make prefix=/usr/local install && \
    cd ../.. && \
    rm -rf git && \
    git clone https://github.com/git/git.git --depth=1 /usr/src/git

# качаем актуальный (на момент этого поста) релиз гити
wget -O /home/gitea/gitea https://dl.gitea.io/gitea/1.15.6/gitea-1.15.6-linux-amd64 && \
    chmod +x gitea && \
    chown git: /home/git/gitea && \
    ln -s /home/git/gitea /usr/local/bin/gitea

# готовим пользователя, под которым будет работать гити
# через него же будет работа с репами (clone, push, pull, etc.)
adduser \
   --system \
   --shell /bin/bash \
   --gecos 'Gitea user' \
   --group \
   --disabled-password \
   --home /home/git \
   git

# запись конфига gitea (пример будет ниже)
nano /etc/gitea/app.ini

# готовим СУБД и БД
mysql_secure_installation
mysql -e 'CREATE DATABASE gitea;'
mysql -e 'GRANT ALL ON gitea.* TO \'gitea\'@\'localhost\' IDENTIFIED BY \'MY_PASSWORD\';'
mysql -e 'FLUSH PRIVILEGES;'

# готовим nginx как reverse-proxy
unlink /etc/nginx/sites-enabled/default
# запись конфига прокси nginx (пример будет ниже)
nano /etc/nginx/sites-available/gitea-proxy.conf
ln -s /etc/nginx/sites-available/gitea-proxy.conf /etc/nginx/sites-enabled/gitea-proxy.conf

# запись конфига службы gitea.service (пример будет ниже)
nano /etc/systemd/system/gitea.service

# первый (ручной) запуск для установки
su - git
GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini

# после установки, если всё прошло удачно,
# то Ctrl+C и ставим демона на автозапуск
systemctl enable gitea --now

Конфиги

/etc/systemd/system/gitea.service

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
Wants=mariadb.service
After=mariadb.service=redis.service
[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target

/etc/gitea/app.ini

Изучи внимательно и не копируй бездумно! Часть параметров записывается при установке. Часть параметров можно/нужно поставить самостоятельно.

APP_NAME = Gitea
RUN_USER = git
RUN_MODE = prod

[security]
# не трогать
# ...

[database]
# выставить корректные данные для подключения к БД
DB_TYPE  = mysql
HOST     = 127.0.0.1:3306
NAME     = gitea
USER     = gitea
PASSWD   = MY_PASSWORD
SCHEMA   = 
SSL_MODE = disable
CHARSET  = utf8
PATH     = /var/lib/gitea/data/gitea.db
LOG_SQL  = false

[repository]
ROOT = /var/lib/gitea/data/gitea-repositories

[server]
SSH_DOMAIN       = localhost
DOMAIN           = localhost
HTTP_PORT        = 8080
ROOT_URL         = # не трогать
DISABLE_SSH      = false
SSH_PORT         = 22
LFS_START_SERVER = true
LFS_CONTENT_PATH = /var/lib/gitea/data/lfs
LFS_JWT_SECRET   = # не трогать
OFFLINE_MODE     = false

[mailer]
# выставить нужные значения для работы email
#ENABLED     = true
MAILER_TYPE = smtp
#HOST        = smtp.yandex.ru:465
#USER        = 
#PASSWD      = 
#FROM        = 

# остальное по желанию

[service]
REGISTER_EMAIL_CONFIRM            = true
ENABLE_NOTIFY_MAIL                = true
DISABLE_REGISTRATION              = false
ALLOW_ONLY_EXTERNAL_REGISTRATION  = false
ENABLE_CAPTCHA                    = true
REQUIRE_SIGNIN_VIEW               = false
DEFAULT_KEEP_EMAIL_PRIVATE        = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING       = true
NO_REPLY_ADDRESS                  = noreply.localhost

[picture]
DISABLE_GRAVATAR        = false
ENABLE_FEDERATED_AVATAR = true

[openid]
ENABLE_OPENID_SIGNIN = true
ENABLE_OPENID_SIGNUP = false

[session]
PROVIDER = file

[log]
MODE      = console
LEVEL     = info
ROOT_PATH = /var/lib/gitea/log
ROUTER    = console

/etc/nginx/sites-available/gitea-proxy.conf

Здесь в server_name поставить привязываемый домен и в proxy_pass поставить локалхост с портом HTTP_PORT из app.ini

server {
    listen 80;
    listen [::]:80;
    
    server_name my.domain.com

    access_log /var/log/nginx/gitea-access.log;
    error_log /var/log/nginx/gitea-error.log;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

Использованные источники

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *