Привет. Надеюсь, эта шпаргалка поможет тебе установить собственное «гитхаб»-лайк хранилище кода. Очень рекомендую это сделать, причём на отдельный сервер.
Делал я это, используя бинарник. Вкратце, шаги простые:
- подготовить ОС
- подготовить БД
- подготовить nginx
- скачать бинарник gitea
- разобраться с конфигами
- выполнить установку
- настроить демона
Далее будет список команд, которые я выполнял и сразу записывал. Но я допускаю, что в них могут быть плёвые ошибки, т. к. во время и после установки я их корректировал (я разворачивал гити впервые и допускал огрехи, которые фиксил на лету).
В конце будут примеры готовых конфигов.
Описанное ниже производилось мной на серверной Ubuntu 20.04 LTS в экосистеме Селектела.
Всё ставим
# обновляем систему, ставим софт
apt update
apt upgrade -y
apt install -y apt-transport-https \
ca-certificates \
curl \
make \
dialog \
certbot \
python3-certbot-nginx \
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
# готовим пользователя, под которым будет работать гити
# через него же будет работа с репами (clone, push, pull, etc.)
adduser \
--system \
--shell /bin/bash \
--gecos 'Gitea user' \
--group \
--disabled-password \
--home /home/git \
git
# качаем актуальный (на момент этого поста) релиз гити
wget -O /home/git/gitea https://dl.gitea.io/gitea/1.22.1/gitea-1.22.1-linux-amd64 && \
chmod +x gitea && \
chown git: /home/git/gitea && \
ln -s /home/git/gitea /usr/local/bin/gitea
# запись конфига 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
WORK_PATH = /var/lib/gitea/
[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 = my.domain.com
DOMAIN = my.domain.com
HTTP_PORT = 8080
ROOT_URL = http://my.domain.com/
DISABLE_SSH = false
SSH_PORT = 22
LFS_START_SERVER = false
LFS_CONTENT_PATH = /var/lib/gitea/data/lfs
LFS_JWT_SECRET = # не трогать
OFFLINE_MODE = false
[mailer]
# выставить нужные значения для работы email
#ENABLED = true
PROTOCOL = smtps
#SMTP_ADDR = smtp.yandex.ru
#SMTP_PORT = 465
#USER =
#PASSWD =
#FROM = noreply@my.domain.com
# остальное по желанию
[service]
REGISTER_EMAIL_CONFIRM = true
ENABLE_NOTIFY_MAIL = true
ACTIVE_CODE_LIVE_MINUTES = 180
RESET_PASSWD_CODE_LIVE_MINUTES = 180
DISABLE_REGISTRATION = false
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
REQUIRE_SIGNIN_VIEW = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply@my.domain.com
# настоятельно рекомендую рекапчу для публичного сервиса, иначе завалят спамеры
ENABLE_CAPTCHA = true
#CAPTCHA_TYPE = recaptcha
#RECAPTCHA_SECRET =
#RECAPTCHA_SITEKEY =
[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;
client_max_body_size 100M;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
После первичного старта можно использовать certbot для установки ssl.
Использованные источники
- https://docs.gitea.io/en-us/install-from-binary
- https://docs.gitea.io/en-us/reverse-proxies/
- https://docs.gitea.io/en-us/linux-service/
- https://docs.gitea.io/en-us/config-cheat-sheet/
- https://www.scaleway.com/en/docs/tutorials/nginx-reverse-proxy/
- https://gist.github.com/MitchRatquest/dadc9484e07a627fa73b1c7bbcf609f4
Update 18.02.2022
В конфиг gitea-proxy.conf добавлен параметр
client_max_body_size 100M;
Лечит ошибку 413 при загрузке файлов, например, при оформлении релиза.
Update 02.09.2024
Точечно актуализировал некоторые настройки и команды для свежих версий gitea.