Codeberg Pages
https://codeberg.org/Codeberg/pages-server
Установка
apt-get install pages-server
Быстрый старт
Привязка пользовательских доменов больше не является статической, но может осуществляться с помощью DNS:
Добавьте текстовый файл .domains
в репозиторий, содержащий список разрешённых доменов, разделённый новыми строками. Первая строка будет каноническим доменом/URL; все остальные вхождения будут перенаправляться на него.
Добавьте запись CNAME
в свой домен, указывающую на [[{branch}.]{repo}.]{owner}.codeberg.page
(repo
по умолчанию — «pages»
, «branch»
по умолчанию — на ветку по умолчанию, если «repo»
— «pages»
, или на «pages»
, если «repo»
— что-то другое). Если имя ветки содержит символы слеша, необходимо заменить «/»
в имени ветки на «~»
: www.example.org. IN CNAME main.pages.example.codeberg.page.
Если для «www.example.org»
задана запись CNAME
, вы можете перенаправить туда трафик с чистого домена, добавив запись ALIAS
для «example.org»
(если ваш провайдер допускает использование записей ALIAS
или аналогичных записей, в противном случае используйте A/AAAA
) вместе с записью TXT
, указывающей на ваш репозиторий (точно так же, как запись CNAME
): example.org IN ALIAS codeberg.page. example.org IN TXT main.pages.example.codeberg.page.
Сертификаты генерируются, обновляются и очищаются автоматически с помощью Let's Encrypt через TLS-запрос.
Развертывание
Внимание: есть некоторые оговорки
В настоящее время для развёртывания требуются определённые навыки системного администрирования, а также понимание и разработка кода, чтобы со временем вы могли редактировать ненастраиваемые и специфичные для Codeberg параметры. В будущем мы постараемся сократить их количество и сделать хостинг Codeberg Pages таким же простым, как настройка Gitea.
Самое сложное — добавить поддержку пользовательского домена, если вы собираетесь её использовать. SSL-сертификаты (запрос и продление) автоматически обрабатываются сервером Pages, но если вы хотите запустить его на общем IP-адресе (а не на отдельном), вам потребуется настроить обратный прокси-сервер так, чтобы он не разрывал TLS-подключения, а перенаправлял запросы на уровне IP на сервер Pages.
Переменные среды
ACME_ACCEPT_TERMS
(по умолчанию:использовать самоподписанный сертификат
): Установите значение«true»
, чтобы принять Условия обслуживания вашего поставщика ACME.ACME_API
(по умолчанию:https://acme-v02.api.letsencrypt.org/directory
): установите значениеhttps://acme.mock.directory
, чтобы использовать недействительные сертификаты без проверки (отлично подходит для отладки). ZeroSSL может оказаться лучше в будущем, поскольку у него нет ограничений по скорости и он не конфликтует с официальными сертификатами Codeberg (которые используют Let's Encrypt), но мне пока не удалось его заставить работать.ACME_EAB_KID
&ACME_EAB_HMAC
(по умолчанию:не использовать EAB
): учетные данные EAB, например для ZeroSSL.ACME_EMAIL
(по умолчанию:noreply@example.email
): настройте электронную почту, отправляемую на сервер API ACME, например, для получения напоминаний о продлении.ACME_USE_RATE_LIMITS
(по умолчанию:true
): Установите значение false, чтобы отключить ограничения скорости, например, с помощью ZeroSSL.DNS_PROVIDER
(по умолчанию:использовать самоподписанный сертификат
): Код DNS-провайдера ACME для основного подстановочного знака домена. Доступные значения и дополнительные переменные среды см. на страницеhttps://go-acme.github.io/lego/dns/
.ENABLE_HTTP_SERVER
(по умолчанию:false
): Установите значениеtrue
, чтобы включить проверку HTTP-01 и перенаправить все остальные HTTP-запросы на HTTPS. В настоящее время работает только с портом 80.GITEA_API_TOKEN
(по умолчанию:пусто
): токен API для экземпляра Gitea для доступа к непубличным (например, ограниченным) репозиториям.GITEA_ROOT
(по умолчанию:https://codeberg.org
): корень вышестоящего экземпляра Gitea.HOST& PORT
(по умолчанию:[::]
&443
): адрес прослушивания.LOG_LEVEL
(по умолчанию:warn
): установите этот параметр, чтобы указать уровень ведения журнала.NO_DNS_01
(по умолчанию:false
): отключить использование ACME DNS. Это означает, что wildcard-сертификат будет самоподписанным, и все домены и поддомены будут иметь отдельный сертификат. Поскольку это может привести к ограничению скорости со стороны провайдера ACME, этот параметр не рекомендуется для экземпляров Gitea/Forgejo с открытыми регистрациями или большим количеством пользователей/организаций.PAGES_DOMAIN
(по умолчанию:codeberg.page
): основной домен для страниц.RAW_DOMAIN
(по умолчанию:raw.codeberg.page
): домен для необработанных ресурсов (должен быть поддоменомPAGES_DOMAIN
).
Пользовательская страница ошибок
Пользовательский шаблон страницы с ошибкой можно создать, создав custom/error.html
. Доступные для шаблона данные включают:
- {{ .StatusCode }}: Код статуса HTTP (например, 404)
- {{ .StatusText }}: Текстовое имя, связанное с кодом статуса (например, «Не найдено»).
- {{ .Message }}: Причина ошибки