Документація · гайд

Підключення
за 5 хвилин

Від нульового акаунта до першого запиту через захист. Вважаємо, що у вас уже є домен і доступ до його DNS-зони. Якщо немає - купіть домен у будь-якого реєстратора (наприклад, Namecheap) і повертайтеся.

КРОК 01

Зареєструватися

Відкрийте https://anycast.ac/register. Потрібні e-mail, handle і пароль. Handle - короткий нікнейм, який показується в панелі та в аудит-лозі. Пароль зберігається у вигляді bcrypt-хеша (cost=12), plain-text не зберігається ніде.

Після реєстрації вас автоматично перекине на dash.anycast.ac. Це той самий акаунт, просто інша точка входу. Cookie живе на всьому домені .anycast.ac - тому логін на маркетингу автоматично дає доступ до дашборду.

КРОК 02

Створити сайт

У дашборді натисніть + New site. Відкриється форма. Що заповнити:

  • Domain - Ім’я вашого сайту (наприклад, example.com). Без протоколу і шляху.
  • Origin URL - Де насправді крутиться ваш сервер. Формат http://1.2.3.4:8080 або https://server.example.net. Ми завжди конектимося на цю адресу з нашого edge (DE1 · Франкфурт).
  • TLS mode - acme (за замовчуванням) - автоматичний Let's Encrypt на нашому боці. Або byo - якщо ви заливаєте fullchain+key самі через API.
  • Preset - Швидке пресет-налаштування правил: easy для форумів, normal за замовчуванням, strict для API, paranoid при активній атаці. Можна змінити пізніше в Rules.

Сайт створюється у стані pending - це означає, що cert-worker поставив вас у чергу на випуск Let's Encrypt-сертифіката. Щойно DNS покаже на нас (наступний крок) і TLS випуститься, стан зміниться на active.

КРОК 03

Налаштувати DNS

Додайте CNAME-запис у DNS-зоні вашого домену:

shell
Name        Type     Value
────────────────────────────────────────────────────────
example.com   CNAME    cname.anycast.ac
www           CNAME    cname.anycast.ac

cname.anycast.ac резолвиться в наш edge у Німеччині (DE1 · Франкфурт) через BGP anycast.

Якщо ваш реєстратор не підтримує CNAME на apex-домен, використайте ALIAS або ANAME, або змініть реєстратора. Cloudflare як безкоштовний DNS не підходить - у них увімкнена проксувальна оранжева хмара, доведеться її вимкнути (сіра хмара).

КРОК 04

Дочекатися сертифіката

Cert-worker кожні 30 секунд перевіряє DNS вашого домену. Щойно бачить, що CNAME вказує на наш anycast, він:

  1. Запитує Let's Encrypt через ACME HTTP-01.
  2. Отримує fullchain.pem + privkey.pem.
  3. Копіює їх на всі edges через SCP.
  4. Перезавантажує nginx-вкладки і робить push-refresh сайтового реєстру.
  5. Переводить сайт у стан active в Postgres.

Весь процес займає 30–90 секунд. Якщо через 5 хвилин ваш сайт усе ще pending - дивіться в § «Що пішло не так» нижче.

КРОК 05

Перевірити, що працює

shell
$ curl -I https://example.com
HTTP/2 200
server: fg-edge-se1
x-fg-route: ok
...

Заголовки server: fg-edge-* і x-fg-route підтверджують, що трафік іде через нас. Якщо бачите заголовки вашого origin-сервера напряму (наприклад server: nginx/1.25) - отже DNS ще не поширився.

Перевірте також що HTTP автоматично редиректиться на HTTPS: curl -I http://example.com має повернути 301 Location: https://...

КРОК 06

Налаштувати правила (Rules)

Dashboard → Sites → ваш сайт → Edit rules. Що тут є:

Rate per IP0–100 000

Максимум запитів з одного IP за хвилину. 0 = без ліміту. Рекомендовані значення: 120 для форумів, 600 для API, 60 для біолінк-сайтів.

Burst per IP0–200 000

Одноразовий стрибок, допустимий поверх rate. Зазвичай 2–3× від rate.

Proto ban threshold0–50

Скільки разів IP може порушити HTTP-протокол до автоматичного kernel-бана на 60 секунд. Рекомендуємо 2.

Auto ban threshold0–10 000

Скільки «м’яких» порушень (rate-overshoot, порожній UA) до повного годинного бана. Зазвичай 50–100.

Deny CIDRs / Allow CIDRsвільний текст

Список CIDR-блоків через перенос рядка. Allow має пріоритет над Deny. Приклади: 10.0.0.0/8, 2a02::/16.

Block empty UAтумблер

Увімкнено за замовчуванням. Ріже запити без User-Agent заголовка - це ~90% усіх ботів, які впевнено відсіюються без ризику зачепити людей.

Allowed methodsCSV

Дозволені HTTP-методи через кому. За замовчуванням - GET,POST,HEAD,OPTIONS. Для API додайте PUT,DELETE,PATCH.

Max body KB0–100 000

Максимум тіла POST-запиту в кілобайтах. 0 = без ліміту. Для звичайного сайту 2048 (2 МБ) - більш ніж достатньо.

Challenge suspectsтумблер

Підозрілим IP (скори за ASN, User-Agent, rate) показується JS-challenge - прозорий для людей, непроходимий для curl-ботів.

Under Attack Mode (UAM)тумблер

ПЛАТИНОВИЙ режим. Кожному новому IP показується interstitial-challenge (~1 секунда на клієнті) перш ніж дати доступ до сайту. Увімкніть коли реально ллють - вимкніть щойно стихло. Trust-cookie на 30 хвилин, після - повтор.

КРОК 07

Читати графіки

На картці сайту - три бар-чарти: Requests, Blocked, Allowed. Діапазони:

  • 60 sec - 6 стовпчиків по 10 секунд. Для спостереження в реальному часі.
  • 5 min - 10 стовпчиків по 30 секунд. «Що відбувалося прямо зараз».
  • 1 hour - 60 стовпчиків по хвилині. Півгодини-година історії.
  • 1 day - 144 стовпчики по 10 хвилин. Цілу добу.
  • All time · by day - 30 стовпчиків, по одному на день. Загальна картина за місяць.

Семпли пише окремий воркер кожні 10 секунд напряму з лічильників edges - графік заповнюється відразу після створення сайту, навіть якщо трафіку ще немає (0 - теж валідна точка).

КРОК 08

Що пішло не так

Сайт висить у "pending" більше 5 хвилин

Найчастіша причина - DNS ще не поширився. Перевірте через зовнішній резолвер:

shell
$ dig +short example.com @8.8.8.8
cname.anycast.ac.
1.2.3.4

Якщо бачите IP вашого сервера замість cname.anycast.ac - правка DNS ще не розлетілася. Почекайте TTL попереднього запису (зазвичай 5–60 хвилин).

Chrome відкриває, Firefox пише «Не захищено»

Для нового домену на нашому проксі репутація в Google Safe Browsing нульова - Chrome до цього спокійний, Firefox показує попередження. Через кілька годин репутація зростає автоматично, або можна вручну запросити перегляд у Google Search Console та Mozilla Site Security Report.

Помилка "host not served here"

Edge отримав запит на Host, якого немає в його реєстрі сайтів. Причини:

  1. Cert-worker ще не закінчив - почекайте до active стану.
  2. Push-refresh не долетів - через 30 секунд edge все одно підтягне новий реєстр poll-ом.
  3. Ви ходите на www.example.com, а зареєстрували лише apex example.com. Додайте другий сайт із www.

HSTS залочився на неправильному сертифікаті

Якщо браузер устиг отримати HSTS-заголовок до випуску Let's Encrypt-сертифіката, він може скаржитися на невалідний cert навіть після його появи. Очистіть HSTS локально:

shell
# Chrome / Chromium / Edge
chrome://net-internals/#hsts
→ Delete domain security policies: example.com

# Firefox
about:support → HSTS/HPKP clear site data

Ми тримаємо HSTS на наших клієнтських сайтах на 5 хвилин, щоб ця проблема сама розсмоктувалася швидко. Якщо ви хочете повний річний HSTS - напишіть у support@, ми увімкнемо вручну після перевірки конфігурації.

UAM викидає мене самого з сайту

Це поведінка by-design: UAM вмикає challenge для кожного нового IP, у тому числі для вашого. Рішень два:

  1. Один раз пройдіть challenge - отримаєте trust-cookie на 30 хвилин.
  2. Додайте свій IP в Allow CIDRs у Rules - для вас UAM взагалі не спрацює.
КРОК 09

Далі

Ознайомтеся з політикою та правилами, перш ніж хостити серйозне навантаження. Питання - на support@anycast.ac. Там відповідають люди, а не автовідповідач.