Gitea
Я уже писал ранее про бекапы Github репозиториев: Github Backup . Но в результате решил пойти другим путем, и не просто создавать бекапы данных, а создавать полноценные зеркала репозиториев на своем сервере (raspberry pi).
Выбирать ПО для сервера долго не пришлось, у меня уже был опыт работы с Gitea . Легковесный и очень удобный сервер.
Установка
Сначала необходимо создать пользователя, под которым будет работать приложение:
Переключаемся на нового пользователя и создаем директории для gitea:
Теперь идем на страницу https://dl.gitea.io/gitea/ и выбираем последнюю версию для малинки, загружаем ее в созданную директорию под именем gitea:
Настройка сервиса
Сначала необходимо задать права доступа для запуска, после чего выходим из нового пользователя:
И теперь создаем сервис для автоматического запуска сервера в системе:
Копируем содержимое в файл:
И теперь активируем и запускаем новый сервис:
Теперь переходим по адресу нашего сервера по порту 3000 и завершаем настройку Gitea. Здесь я выбрал базу данных sqlite, и все остальные параметры оставил без изменения. Добавил только имя домена, на котором планировал видеть Gitea.
Reverse proxy
В качестве веб-сервера (или реверсивного прокси) я использую Caddy . Сейчас не буду останавливаться на вопросе установки и настройки Caddy, приведу лишь файл конфигурации, что используется у меня:
Первый блок используется для настройки https, второй блок задает основные заголовки, что будут использоваться при передаче всех файлов с сервера и последний блок задает параметры домена и прокси.
Для получения доступа к малинке из любой точки мира используется Cloudflare туннель. Об этом я так же писал: Хостинг сайтов с помощью Cloudflare tunnel . В конфигурации указываем следующий блок:
После чего перезапускаем сервис cloudflare и меняем настройки DNS, чтобы домен git.example.com указывал на запись CNAME с именем <uuid>.cfargotunnel.com
Собственно все, если теперь мы переходим по нашему домену, видим интерфейс gitea:
На снимке экрана приведен пример с уже созданными зеркалами. Но на данном этапе нам еще предстоит создать все эти зеркала. Я провел импорт всех репозиториев вручную, но есть способы создания через скрипты (один из примеров ).
Сначала создаем токен для своего пользователя в Github, который имеет права для работы с репозиториями. Затем в Gitea создаем новую миграцию, и выбираем Github из списка. Указываем, что этот репозиторий будет зеркалом и завершаем миграцию. Обратите внимание на то, что адрес репозитория следуем указывать в https-формате.
После чего в параметрах репозитория можно будет указать, как часто обращаться к Github за изменениями, по умолчанию Gitea ходит раз в 8 часов.
Собственно на этом все. Я провел настройку зеркалирования моих репозиториев с Github. И теперь у меня есть полноценная рабочая копия всех моих репозиториев.
Ещё один блог сисадмина
Я собираю приложение на Debian Stretch, в котором имеется компилятор go версии 1.7. Для сборки приложения Gitea версии 1.8.1 потребуется компилятор версии 1.9 или выше. Если попытаться собрать приложение компилятором версии 1.7, то сборка завершится такой ошибкой:
Для установки компилятора подходящей версии воспользуемся репозиториями с бэкпортами Debian. На момент написания статьи в репозитории имеется компилятор версии 1.11. Пропишем в файл /etc/apt/sources.list репозиторий с бэкпортами для Stretch:
Обновим список пакетов, доступных через репозитории:
Установим свежую версию компилятора языка go из репозитория с бэкпортами:
Если в системе ещё не установлен пакет git, то установим его:
Создадим каталог для сборки приложения и перейдём в него:
Скачиваем исходные тексты приложения в созданный каталог:
Перейдём в git-репозиторий со скачанными исходными текстами:
И переключимся на исходные тексты gitea версии 1.8.1:
Полный список доступных веток и меток релизов можно посмотреть при помощи команд:
Перед тем, как запустить сборку, исправим ошибку в файле Makefile. В этом файле такую строчку:
Нужно заменить на вот такую:
Если этого не сделать, то сборка прервётся с таким вот сообщением об ошибке:
Собираем приложение:
Тег bindata включает сборку единого двоичного файла, включающего в себя все необходимые зависимости и файлы. Теги sqlite и sqlite_unlock_notify включают поддержку базы данных SQLite3. Описание всех тегов можно найти на странице Installation from source, в разделе Build.
В результате сборки в каталоге
/gitea/src/code.gitea.io/gitea должен появиться файл с именем gitea.
Установка и настройка запуска приложения
Настройка проксирования через nginx
Настройка приложения
Переходим по ссылке https://stupin.su/git/install и задаём настройки:
После сохранения этих настроек файл /opt/gitea/custom/conf/app.ini примет следующий вид:
Теперь для пущей безопасности, чтобы никто не подсмотрел в файле пароль почтового ящика mailbox_password и ключи xxx, которыми шифруются сеансовые данные, поменяем права доступа к файлу конфигурации:
Пример страницы обзора списка репозиториев:
Русские Блоги
Используйте Gitea для быстрого создания частного сервиса контроля версий Git
Справочник статей
1. Введение
Распределенный инструмент контроля версий Git уже является одним из предпочтительных решений для современного контроля версий исходного кода программного обеспечения. общественногоGit Поставщики услуг, известные за рубежомGitHub Высокая латентность внутренней сети,Gitlab Не рекомендуется для дискриминации против Китая.
ВнутренниеGitee、Coding Экология не плохая. Но исходный код обычной компании не будет размещен в открытом доступе, если проект с открытым исходным кодомGit Обслуживание. Таким образом, нам нужен собственный хостинг, который прост в установке, прост в использовании и имеет низкие требования к оборудованию.Git Сервисная программа. Конечно, было бы лучше, если бы это было бесплатно. Сегодня я рекомендую инструмент, который отвечает вышеуказанным требованиям ————Gitea。
2. Gitea
Gitea Является ли решение для облегченного хостинга кода с открытым исходным кодом, адаптированное для сообществаGo Написать, принятьMIT лицензия. Он работает на другом сервисном решении Git с открытым исходным кодом.Gogs Бифуркация ( fork ) Вот. В сравнении Gogs С точки зрения большего количества функций, сообщество более активно, и скорость итерации версии высока. Если вы простая командаGogs Это также хороший выбор.
Если ваша команда может иметь больший масштабGitea Может быть более подходящим для вас.
3. Особенности Gitea
- Открытый исходный код Весь исходный код с открытым исходным кодом, вы можетеGitHub Найди это. Те, у кого есть способность к развитию, могут проводить вторичное развитие.
- Прост в установке Несколько вариантов установки. Бинарная установка или использованиеDocker, VagrantИ установочный пакет.
- Кросс-платформенная Может работать на любомGo Компилируемые платформы:Windows, macOS, Linux, ARM Подождите, выберите то, что вам нравится!
- облегченный Очень низкие системные требования, даже Raspberry Pi может работать, экономя ресурсы машины! В отличие отGitlab Возьмите очень большие ресурсы.
На самом деле, этот документ более дружелюбен к китайцам.Китайская документация Это также относительно завершено.
4. Установите Gitea под Windows
Далее мы покажем, как установить под WindowsGitea , Для других платформ, пожалуйста, обратитесь к китайскому документу выше для установки.
4.1 Скачать
Мы изСкачать вход Выберите нужную платформу и версию, здесь мы выбираем Windows 1.95 Версия .exe Установочный пакет.
4.2 Установка
предостерегают:Если вы хотите установить по определенному пути, скопируйте загруженный установочный пакет по этому пути и дважды щелкните для установки. Помните!
Поставь установочный пакет gitea-1.9.5-windows-4.0-386.exe Скопируйте на путь, который я собираюсь установить C:\gitea Затем, после двойного щелчка на установочном пакете, появляется следующий интерфейс:
Подскажите нам, чтобы отслеживать путь http://0.0.0.0:3000 , Браузер открывается http://localhost:3000/ Появится следующий интерфейс:
Нажимаем на правый верхний угол зарегистрированный Кнопка для входа на страницу начальной конфигурации. Здесь мы обращаем внимание на настройки базы данных.Gitea НужноMySQL、PostgreSQL、MSSQL ИлиSQLite3。База данных не входит в установочный пакет!, Поэтому вам нужно заранее сконфигурировать среду базы данных, а затем заполнить конфигурацию. Другие конфигурации основаны на ваших личных потребностях, выберите строку для заполнения и отправьте. После отправки требуется немного времени для инициализации базы данных и завершения инициализации, прежде чем войти на домашнюю страницу:
Здесь установка завершена, с общественностьюGit Использование сервиса практически одинаковое, все являются интерфейсными операциями.
4.3 Запуск в качестве службы Windows
Способ установки выше, каждый раз cmd Закрыть будет закрытоGitea служба. Проходить каждый раз gitea-1.9.5-windows-4.0-386.exe Начать очень неудобно. Зарегистрируйтесь какWindows Сервис намного удобнее.
Чтобы зарегистрироваться в качестве службы Windows, сначалаAdministrator Идентичность запускаcmdИ затем выполните следующую команду:
Не забудь C:\gitea Замени на твойGitea инструкция по установке.
Затем откройте в панели управленияWindows Services,ищи gitea , Щелкните правой кнопкой мыши, чтобы выбрать Run , Открыть в браузере http://localhost:3000 Вы можете посетить. (Если вы измените порт, пожалуйста, посетите соответствующий порт, 3000 Порт по умолчанию). Вы также можете установить его при загрузке.
Запустить от имени администратораcmd, А затем выполните следующую команду изWindows Удалить из сервисаGitea:
5. Резюме
Сегодня кратко представил, как использоватьGitea Построить частныйGit служба. Более сложные операции можно узнать из официальных документов. Для сравнения используйтеGitea Стоимость еще ниже, и это очень хороший выбор.
Обратите внимание на общественный номер: Felordcn для получения дополнительной информации
Gitea + Drone + Nginx + Portainer. Пошаговое руководство по деплою аналога github на своём железе
В данном туториале я расскажу вам как можно задеплоить gitea на своём железе с использованием docker-compose подключить drone , для возможности автоматизации тестирования и доставки собственных приложений, настроить reverse-proxy через nginx для доступа через сеть и включить portainer для мониторинга запущенных контейнеров.
Шаг 1 — проверяем наличие необходимых программ
Для запуска полного стека нам будет необходим следующий софт:
docker — стоит v20.10.21, хотя версии больше 18 должны подойти;
docker-compose — главное что бы поддерживался compose v3, у меня стоит 2.12.2;
go — golang v1.19.3+ будет использоваться для получения сертификатов через lego, тем кто не планирует размещение сайта данный пункт можно пропустить.
Инструкций по установке в зависимости от системы более чем достаточно, установка не должна быть сложной. Для проверки, что всё в норме можно запустить данный скрипт:
go version;docker version;docker compose version
Скрипт должен показать установленные версии программ.
Шаг 2 — запускаем локальный инстанс gitea
Минимальный compose для запуска локального инстанса выглядит следующим образом:
Создаем рабочую директорию, в ней файл docker-compose.yml и добавляем туда следующее содержимое. После запускаем команду docker compose up.
После мы можем перейти в браузере по адресу localhost , порт можно не указывать, и мы должны увидеть окно настройки gitea :
Параметры менять не обязательно, можно оставить всё как есть и запустить локальную копию. После небольшого ожидания мы должны увидеть локальную версию gitea, уже готовую к использованию.
У gitea очень большой набор настроек, и список различных модификаций, далее постараюсь подсветить список самого интересного для первого запуска:
DEFAULT_USER_IS_RESTRICTED (service) — позволяет ограничить в правах новых пользователей (не могут просматривать контент и выполнять никакие действия), подойдет для закрытых команд;
MAX_CREATION_LIMIT (repository) — пользователи могут просматривать репозитории и создавать issue, но ограниченны определенным количеством в создании собственных;
PROTOCOL (server) — будет ли использоваться http или https , если планируется выносить сайт в сеть, то строго рекомендуется использовать https или настроить https после через nginx ;
DOMAIN (server) — название домена сервера, которое в случае использование поддомена должно так же включать и его sub.example.pw ;
ROOT_URL (server) — должен совпадать с используемой ссылкой и включать http:// или https:// .
Полный список настроек есть на официальном сайте.
Так же есть много различных опций по настройке тем, плагинов и других плюшек.
Шаг 3 — подключаем drone-ci
Далее можно подключить к gitea дрона, что бы автоматизировать процесс тестирования и анализа кода:
Дрон подключается к gitea как сторонее приложение и требует предоставления ему соответствующих прав, через графу настройки -> приложения:
Там нужно указать название приложения и его адрес для перехода по ссылке в формате:
И после создать кнопку создать приложение, сохраненные secret / client_id сохранить для compose . Далее необходимо сгенерировать токен в этой же вкладке, опять же для compose .
Теперь добавим дрон в сам с полученными параметрами docker-compose :
Полученный токен идет в env DRONE_USER_CREATE, после token. Запускаем compose и подключаем drone.
Если запутались в процессе настройки, то тут официальная дока.
Авторизуем приложение и можем настроить дрон. В данный момент drone может начать выдавать ошибку:
invalid character ‘<‘ looking for beginning of value
Не стоит из-за этого сильно переживать, тк после настройки nginx данная проблема быстро решается.
Шаг 4 — перенаправляем трафик на наш ip адрес, при необходимости настраиваем маршрутизатор.
Сейчас наша задача — перенаправить весь входящий трафик на нашу железку, что бы при переходе по ссылке можно было всегда попадать в одно место.
Как правило данное действие состоит из двух этапов, во-первых — перенаправляем DNS записи у предоставителя нашего домена (на fozzy это выглядит так, сильных отличий в других местах быть не должно, интерфейс будет однообразен):
Для каждого поддомена рекомендуется создать отдельную запись.
Далее необходимо перенаправить трафик в роутере в локальной сети (в случае с использованием виртуалки достаточно просто открыть порты).
На моём роутере это выглядит примерно так:
Шаг 5 — настраиваем nginx
Теперь когда у нас уже есть gitea и drone, можно приступить к настройке nginx:
Добавляем следующие строки в уже написанный docker-compose . Так мы добавим nginx к существующим сервисам, но сначала нам нужно прописать конфиг для nginx.
Я буду писать его в файле — nginx/nginx.conf (и потом маунтить его в докер).
Он будет включать 2 пункта — в зависимости от поддомена (которые вы можете задать как хотите) будет перенаправлять трафик на запущенные контейнеры:
Теперь мы установим cli-утилиту которая называется lego и получим бесплатные сертификаты запустив данный скрипт в нашей директории с docker-compose.yml файлом.
при этом певая строка — установка сертбота, последняя — предоставление доступа к сертам всем пользователям на устройстве (замените имя на своего пользователя).
Далее мы можем запускать nginx вместе с остальными контейнерами.
Шаг 6 — Подключаем portainer
Теперь мы можем опционально подключить портейнер (не всем это нужно, даже без него у нас есть рабочая конфигурация).
Далее этого добавим в compose еще 1 сервис:
И выполним похожие действия по настройке домена/серта/nginx-a.
Настроенный портейнер позволит мониторить состояние остальных сервисов:
Данный сетап позволяет полностью уйти от использования внешних систем контроля версий (в моём случае — github ) и оставлять все свои данные на собственных носителях. Настройка требует времени, но появляются следующие плюшки:
Полностью open-source + self-hosted стек.
Полный контроль за всеми данными в системе, отсутствие облаков и третьих лиц.
Удобный drone-ci для автоматизации операций с контейнерами.
Возможность моментальной автоматической выкладки в сеть верифицированного контента.
При наличии свободной железки (старый ноут или raspberry), система будет обходится примерно в 200Р в месяц в зависимости от стоимости домена/статического ip адреса у провайдера.
Мой собственный инстанс после настройки тем и других докрутов выглядит примерно так: