Вопрос или проблема
Я мигрирую различные свои веб-сервисы на Caddy и очень доволен этим. На данный момент у меня осталась лишь одна веб-служба, которая всё еще использует Apache — это доступ на чтение и запись к моим репозиториям Subversion — и я хотел бы также мигрировать её, чтобы больше не запускать Apache вовсе.
К сожалению, я не смог найти ничего, что поддерживало бы это. Полагаю, что Subversion сейчас (увы) настолько узкоспециализирован, что он просто не на радарах тех, кто мог бы разработать модуль Caddy для него, но я хотел бы уточнить, не упускаю ли я что-то.
К репозиторию Subversion можно получить доступ напрямую через файловую систему по URL file://
, а стандартной частью установки Subversion является небольшой сервер под названием svnserve
, который можно использовать для доступа к репозиторию по сети через svn://
. Однако в большинстве “реальных” случаев доступ осуществляется через https://
, используя Apache и специальный модуль mod_dav_svn
(который, в свою очередь, использует mod_dav
, чтобы действительно получить доступ к репозиторию).
Мой текущий план — настроить обратный прокси от Caddy к Apache, но я надеюсь найти более прямое решение на базе Caddy (чтобы, как я уже говорил, полностью избавиться от Apache).
Обратите внимание, что я уже имею доступ только для чтения через Caddy, используя ViewVC. Я конкретно ищу доступ на чтение и запись.
Заранее спасибо.
Ответ или решение
К сожалению, на данный момент Caddy не поддерживает нативно работу с Subversion для обеспечения доступа к репозиториям через HTTPS. Тем не менее, существует несколько возможностей, которые могут помочь вам обойти это ограничение, и обеспечить доступ к репозиториям Subversion без использования Apache.
Подходы к решению задачи
-
Использование
svnserve
с туннелированием через SSH:
Вы можете настроитьsvnserve
для работы на вашем сервере и затем использовать SSH для безопасного доступа к репозиторию. Пример команды для доступа к репозиторию через SSH будет выглядеть следующим образом:svn checkout svn+ssh://user@your-server/path/to/repo
Это, конечно, не обеспечивает доступ через HTTPS, но это может быть временным решением до тех пор, пока вы не найдете более подходящий способ.
-
Настройка Caddy в качестве обратного прокси:
Если вам нужно продолжать использование HTTPS, то настройка Caddy для работы как обратного прокси кsvnserve
– это рабочий вариант. Как это сделать:- Убедитесь, что
svnserve
работает на вашем сервере. Вы можете запустить его следующим образом:svnserve -d -r /path/to/repos
- Настройте Caddy, чтобы он проксировал запросы на
svnserve
. Добавьте следующую конфигурацию в ваш файлCaddyfile
:your-domain.com { reverse_proxy /svn/* localhost:3690 # Конфигурация SSL автоматическая, так что вам не нужно беспокоиться об этом }
Обратите внимание, что при использовании
svnserve
через прокси, вам может потребоваться допустить доступ к определённым путям или методам, чтобы обеспечить полноценный доступ к функционалу Subversion. - Убедитесь, что
-
Использование других решений для управления версиями:
Если вам не критично использовать именно Subversion, стоит рассмотреть переход на другие системы управления версиями (например, Git). Git поддерживается более широким спектром инструментов и серверных решений, включая Caddy.
Заключение
Хотя на данный момент не существует простого решения для обеспечения полноценного доступа к Subversion через Caddy без использования Apache, вы можете использовать приведённые выше подходы для достижения своей цели. Наилучшим вариантом может стать использование svnserve
, настроенного на работу с Caddy в качестве обратного прокси. Если же вы решитесь на переход к другой системе версионирования, таких как Git, это может значительно облегчить вашу задачу в будущем.