Менеджер личных Go пакетов
  • Go 71.6%
  • templ 24.6%
  • CSS 2.6%
  • Dockerfile 1.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-29 15:46:22 +03:00
.forgejo/workflows fix(ci): проверка dockerd с явным -H; триггер workflow_dispatch 2026-08-29 15:46:22 +03:00
cmd/gopkg feature: автопоиск пакетов в Forgejo и надёжный хот-релоад конфига 2026-08-29 11:53:53 +03:00
internal feature: автопоиск пакетов в Forgejo и надёжный хот-релоад конфига 2026-08-29 11:53:53 +03:00
.gitignore Инициальный коммит 2025-12-27 18:50:43 +03:00
.golangci.yml Инициальный коммит 2025-12-27 18:50:43 +03:00
config.yaml.dist feature: автопоиск пакетов в Forgejo и надёжный хот-релоад конфига 2026-08-29 11:53:53 +03:00
Dockerfile feature: автопоиск пакетов в Forgejo и надёжный хот-релоад конфига 2026-08-29 11:53:53 +03:00
go.mod Инициальный коммит 2025-12-27 18:50:43 +03:00
go.sum Инициальный коммит 2025-12-27 18:50:43 +03:00
LICENSE Инициальный коммит 2025-12-27 18:50:43 +03:00
README.md feature: автопоиск пакетов в Forgejo и надёжный хот-релоад конфига 2026-08-29 11:53:53 +03:00

GoPkg

GoPkg — это веб-сервис для хостинга Go-модулей, который предоставляет удобный интерфейс для просмотра и документирования Go-пакетов. Проект разработан на языке Go с использованием фреймворка Echo для веб-сервера и шаблонизатора templ для генерации HTML.

Основные возможности

  • Веб-интерфейс для просмотра доступных Go-модулей
  • Автоматическая генерация ссылок на документацию, исходный код и лицензию
  • Поддержка динамической перезагрузки конфигурации
  • Адаптивный дизайн с использованием Bootstrap
  • Поддержка Go vanity import server (сервер ванильных импортов)

Архитектура проекта

Проект структурирован по модульному принципу:

  • cmd/gopkg/ — точка входа в приложение
  • internal/config/ — конфигурация приложения с использованием Viper
  • internal/model/ — бизнес-модели и структуры данных
  • internal/server/ — логика веб-сервера на основе Echo
  • internal/view/ — шаблоны интерфейса с использованием templ
  • internal/view/assets/ — статические файлы (CSS, JS)

Зависимости

Конфигурация

Сервис использует файл конфигурации в формате YAML. Пример конфигурации можно найти в файле config.yaml.dist.

Основные параметры конфигурации:

  • logger.level — уровень логирования
  • common.addr — адрес и порт для запуска сервера
  • common.url — базовый URL сервиса
  • common.base — базовое имя для импорта модулей
  • packages — список доступных Go-модулей с их описанием

Автопоиск пакетов в Forgejo

Вместо ручного ведения списка packages сервис может сам находить модули в ваших репозиториях Forgejo (совместимо с Gitea API). Раскомментируйте секцию forgejo в конфиге:

forgejo:
  addr: https://gitrepo.ru
  owner: NeonXP
  token: ""       # можно не указывать для публичных репозиториев,
                  # либо задать через переменную окружения FORGEJO_TOKEN
  interval: 5m    # период опроса API

Репозиторий попадает в список, если в его корне лежит go.mod с путём модуля {common.base}/{имя репозитория} — только такой путь работает через vanity-редирект. Записи из packages имеют приоритет над найденными: ими можно переопределить title, desc и другие поля. Найденные пакеты хранятся в памяти и не записываются в конфиг.

Лицензия

Проект распространяется под лицензией GNU General Public License версии 3 (GPLv3). Полный текст лицензии доступен в файле LICENSE.

Модуль и репозиторий

  • Модуль: go.neonxp.ru/gopkg
  • Репозиторий: https://gitrepo.ru/NeonXP/gopkg.git

Установка и запуск

Локальная сборка

  1. Склонируйте репозиторий:
git clone https://gitrepo.ru/NeonXP/gopkg.git
  1. Установите зависимости:
go mod download
  1. Настройте конфигурацию:
cp config.yaml.dist config.yaml
# Отредактируйте config.yaml при необходимости
  1. Запустите сервер:
go run ./cmd/gopkg

Запуск через Docker

Сервис можно запустить с использованием Docker-образа:

# Запуск контейнера с монтированием конфигурации
docker run -d \
  -p 8000:8000 \
  -v $(pwd)/config.yaml:/srv/config.yaml \
  --name gopkg \
  gitrepo.ru/neonxp/gopkg:latest

Docker-образ доступен по адресу: gitrepo.ru/neonxp/gopkg:latest

Сервис будет доступен по адресу http://localhost:8000.