Установка сервера Git с веб-интерфейсом Gitea

Установка MariaDB на Centos 8

Установка Git:

# yum install git

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

# useradd --system --shell /bin/bash --comment 'Git Version Control' --create-home --home-dir /home/git git

Создать структуру папок

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

Установить MySQL базу (если нет), описано здесь

Создать пользователя и базу для Gitea: gitea

Загрузить Gitea (в примере версия 1.12.2, последнюю версию можно посмотреть перейдя по ссылке):

# wget https://github.com/go-gitea/gitea/releases/download/v1.12.2/gitea-1.12.2-linux-amd64

назначить права на выполнения и переместить к приложениям

# chmod +x gitea-1.12.2-linux-amd64
# mv gitea-1.12.2-linux-amd64 /usr/local/bin/gitea

проверка версии

# gitea --version
Gitea version 1.12.2 built with GNU Make 4.1, go1.14.4 : bindata, sqlite, sqlite_unlock_notify

создать сервис

# nano /etc/systemd/system/gitea.service

заполнить:

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mariadb.service

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
# If you want to bind Gitea to a port below 1024 uncomment
# the two values below
###
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

перезагрузить демон, запустить Gitea и добавить в автозапуск

# systemctl daemon-reload
# systemctl restart gitea
# systemctl enable gitea

для веб-сервера проксирование нужно настроить на: http://localhost:3000

Пример настройки для NGINX

файл: /etc/nginx/conf.d/gitea.conf

без SSL:

server {
    listen 80;
    server_name git.example.com;

    location / {
        proxy_pass http://localhost:3000;
    }
}

с SSL:

server {
	listen 80;
        server_name  git.example.com;
	location / {
        	rewrite     ^ https://git.example.com$request_uri? permanent;
    }
}

server {
        listen       443 ssl;
	ssl_certificate /etc/letsencrypt/live/git.example.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem;
        server_name git.example.com;

        location / {
            proxy_pass http://localhost:3000;
        }
}

 

Пример настройки для Apache

<VirtualHost *:443>
	ServerName git.example.com
	
	SSLEngine on
	SSLProtocol all -SSLv2
	SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
	SSLCertificateFile /etc/letsencrypt/live/git.example.com/certificate.crt
	SSLCertificateKeyFile /etc/letsencrypt/live/git.example.com/private.key
	SSLCertificateChainFile /etc/letsencrypt/live/git.example.com/ca_bundle.crt
	
	<Location />
		ProxyPass http://localhost:3000/
		Order allow,deny
		Allow from all
	</Location>
</VirtualHost>