Skip to content

Codeberg Pages

https://codeberg.org/Codeberg/pages-server

https://docs.altlinux.space/

Установка

bash
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 }}: Причина ошибки

Контакты: bystrovno@basealt.ru