Gitea
Обновлено 30 сентября 2020
Введение
Gitea - сервис собственного хостинга репозиториев Git, форк системы совместной разработки Gogs. Представляет собой легковесную систему для организации совместной работы с репозиториями Git, написан на языке Go и имеет достаточно низкие требования к ресурсам.
Подготовка LXC-контейнера
Мы рекомендуем выполнить установку Gitea в отдельном контейнере, настроив его согласно инструкции.
Установка и настройка PostgreSQL
Установите и настройте PostgreSQL согласно руководству. Вместо базы данных dbtest из примера создайте базу gitea, а вместо пользователя test создайте gitea.
Установка программного обеспечения Gitea
Установите Gitea:
emerge -a www-apps/gitea
Настройка Gitea
Выполните настройку Gitea для gitea.example.org, для IP 1.2.3.4
... [server] ; The protocol the server listens on. One of 'http', 'https', 'unix' or 'fcgi'. PROTOCOL = http DOMAIN = gitea.example.org ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/ ; when STATIC_URL_PREFIX is empty it will follow ROOT_URL STATIC_URL_PREFIX = ; The address to listen on. Either a IPv4/IPv6 address or the path to a unix socket. HTTP_ADDR = 1.2.3.4 ; The port to listen on. Leave empty when using a unix socket. HTTP_PORT = 80 ... [database] ; Database to use. Either "mysql", "postgres", "mssql" or "sqlite3". DB_TYPE = postgres HOST = 127.0.0.1:5432 NAME = gitea USER = gitea ; Use PASSWD = `your password` for quoting if you use special characters in the password. PASSWD = `secret` ... ; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!! SECRET_KEY = `newsecret` ; The minimum password length for new Users MIN_PASSWORD_LENGTH = 8
Настройка HTTPS
Получение сертификата Let's Encrypt
Получите сертификат домена gitea.example.org согласно руководству и разместите ключ и сертификат в файлах /etc/ssl/gitea/key.pem и /etc/ssl/gitea/cert.pem соответственно.
Укажите параметры HTTPS
Выполните настройку HTTPS Gitea для gitea.example.org.
... [server] PROTOCOL = https DOMAIN = gitea.example.org ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/ ; when STATIC_URL_PREFIX is empty it will follow ROOT_URL STATIC_URL_PREFIX = ; The address to listen on. Either a IPv4/IPv6 address or the path to a unix socket. HTTP_ADDR = 1.2.3.4 ; The port to listen on. Leave empty when using a unix socket. HTTP_PORT = 443 ; If REDIRECT_OTHER_PORT is true, and PROTOCOL is set to https an http server ; will be started on PORT_TO_REDIRECT and it will redirect plain, non-secure http requests to the main ; ROOT_URL. Defaults are false for REDIRECT_OTHER_PORT and 80 for ; PORT_TO_REDIRECT. REDIRECT_OTHER_PORT = true PORT_TO_REDIRECT = 80 ; Generate steps: ; $ ./gitea cert -ca=true -duration=8760h0m0s -host=myhost.example.com ; ; Or from a .pfx file exported from the Windows certificate store (do ; not forget to export the private key): ; $ openssl pkcs12 -in cert.pfx -out cert.pem -nokeys ; $ openssl pkcs12 -in cert.pfx -out key.pem -nocerts -nodes ; Paths are relative to CUSTOM_PATH CERT_FILE = /etc/ssl/gitea/cert.pem KEY_FILE = /etc/ssl/gitea/key.pem
Запуск Gitea
Запустите сервис Gitea:
/etc/init.d/gitea start
Добавьте сервис Gitea в автозагрузку:
rc-update add gitea
Откройте в браузере сайт http://gitea.example.org/install и выполните заключительную настройку Gitea.
Настройка доступа к публичным репозиториям через Git протокол
Укажите для Git daemon каталог с репозиториями Gitea /var/lib/gitea/gitea-repositories:
# conf.d file for git-daemon # # Please check man 1 git-daemon for more information about the options # git-daemon accepts. You MUST edit this to include your repositories you wish # to serve. # # Some of the meaningful options are: # --syslog --- Enables syslog logging # --verbose --- Enables verbose logging # --export-all --- Exports all repositories # --port=XXXX --- Starts in port XXXX instead of 9418 # GITDAEMON_OPTS="--syslog --base-path=/var/lib/gitea/gitea-repositories" # To run an anonymous git safely, the following user should be able to only # read your Git repositories. It should not be able to write to anywhere on # your system, esp. not the repositories. GIT_USER="git" GIT_GROUP="git"
Запустите сервис Git dameon:
/etc/init.d/gitea start
Добавьте сервис Git daemon в автозагрузку:
rc-update add gitea
Git daemon экспортирует только репозитории, содержащие файл-метку git-daemon-export-ok
, которые Gitea автоматически создает для всех публичных репозиториев.
Предупреждение
Учтите, что при выставлении флага --export-all
, через протокол Git будут доступны все репозитории: и закрытые, и публичные.
Установка Memcached
Установите Memcached:
emerge -a net-misc/memcached
Настройте Memcached на использование loopback интерфейса и увеличьте размер до 512Mb:
# memcached config file MEMCACHED_BINARY="/usr/bin/memcached" # Specify memory usage in megabytes (do not use letters) # 64MB is default MEMUSAGE="512" # User to run as MEMCACHED_RUNAS="memcached" # Specify maximum number of concurrent connections # 1024 is default MAXCONN="1024" # Listen for connections on what address? # If this is empty, memcached will listen on 0.0.0.0 # be sure you have a firewall in place! LISTENON="127.0.0.1" # Listen for connections on what port? PORT="11211"
Запустите сервис Memcached:
/etc/init.d/memcached start
Добавьте сервис Memcached в автозагрузку:
rc-update add memcached
Добавьте использование Memcached в Gitea:
[cache] ; if the cache enabled ENABLED = true ; Either "memory", "redis", or "memcache", default is "memory" ADAPTER = memcache ; For "memory" only, GC interval in seconds, default is 60 INTERVAL = 60 ; For "redis" and "memcache", connection host address ; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180 ; memcache: `127.0.0.1:11211` HOST = `127.0.0.1:11211` ; Time to keep items in cache if not used, default is 16 hours. ; Setting it to 0 disables caching ITEM_TTL = 16h
Перезапустит сервис Gitea:
/etc/init.d/gitea restart
Обновление
Обновите пакет Gitea:
emerge -u www-apps/gitea
Перезапустите сервис Gitea:
/etc/init.d/gitea restart