/etc/apt/auth.conf.d/deb.griffo.io.conf, и apt отправляет их по HTTPS при каждой загрузке. Нет личного кабинета, нет токенов для ротации, нет лицензионного файла и нет ограничения на число машин с одними и теми же данными.
🧾 1. Что происходит при оплате
- Вы завершаете оплату в Stripe. Данные карты уходят в Stripe и никогда не попадают на этот сервер.
- Stripe подтверждает платёж и уведомляет репозиторий. Именно в этот момент создаётся доступ — не когда закрывается страница оплаты, поэтому платёж, ещё проходящий авторизацию, занимает чуть больше времени.
- Создаётся ваша учётная запись, и для неё на сервере случайным образом генерируется пароль.
- На адрес, указанный в Stripe, уходит письмо с логином, паролем и командами настройки. Это единственный раз, когда пароль вообще передаётся.
Если письма нет в течение нескольких минут, сначала проверьте спам, а затем спросите в Discord — это самый быстрый путь, а учётную запись легко найти по почте, с которой была оплата.
🔐 2. Что представляют собой учётные данные
| Поле | Значение |
|---|---|
| Логин | Адрес почты, использованный при оплате — ничего не нужно выбирать и запоминать |
| Пароль | 24 случайных символа, генерируется на сервере, вы его не выбираете |
| Хранится как | bcrypt-хеш. Открытый текст не сохраняется — его нельзя посмотреть позже ни мне, ни кому-либо ещё |
| Срок действия | Нет. Пароль не ротируется и не истекает; доступ определяется только подпиской за ним |
| Машины | Без ограничений. Нет счётчика мест, активации и регистрации устройств |
Поскольку хранится только хеш, потерянный пароль восстановить нельзя — но по запросу можно выдать новый. Ответьте на приветственное письмо или напишите в Discord, и вы получите новые данные; старый пароль перестаёт работать в момент выдачи нового. Сохраните приветственное письмо, а лучше положите пароль в менеджер паролей.
🖥️ 3. Как аутентифицируется apt
Обычная HTTP Basic-аутентификация поверх HTTPS — механизм, который apt поддерживает штатно уже много лет: без плагинов, без вспомогательных программ и без дополнительных пакетов. Учётные данные кладутся в /etc/apt/auth.conf.d/ и никогда — в строку sources.list, где их прочитал бы любой пользователь машины, а apt показал бы их в сообщениях об ошибках:
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo install -m 600 /dev/null /etc/apt/auth.conf.d/deb.griffo.io.conf
sudo tee /etc/apt/auth.conf.d/deb.griffo.io.conf > /dev/null <<'EOF'
machine deb.griffo.io
login your-email@example.com
password your-subscription-password
EOF
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
install -m 600 /dev/null /etc/apt/auth.conf.d/deb.griffo.io.conf
tee /etc/apt/auth.conf.d/deb.griffo.io.conf > /dev/null <<'EOF'
machine deb.griffo.io
login your-email@example.com
password your-subscription-password
EOF
apt updatesudo apt install extrepo
sudo extrepo enable griffo
sudo install -m 600 /dev/null /etc/apt/auth.conf.d/deb.griffo.io.conf
sudo tee /etc/apt/auth.conf.d/deb.griffo.io.conf > /dev/null <<'EOF'
machine deb.griffo.io
login your-email@example.com
password your-subscription-password
EOF
sudo apt update🧩 О варианте extrepo. extrepo — штатный инструмент Debian для внешних репозиториев: он создаёт файл sources и устанавливает ключ подписи, предварительно сверив его с подписанными метаданными. Этот репозиторий зарегистрирован в нём как griffo, а бесплатное навсегда зеркало — как griffo-free, поэтому в Debian (bookworm, trixie, forky и sid) команды выше и есть вся настройка.
extrepo настраивает только файл sources и ключ — учётные данные подписки по-прежнему прописываются в /etc/apt/auth.conf.d/deb.griffo.io.conf. Ubuntu не поддерживается, так как extrepo публикует метаданные только для выпусков Debian: там используйте команды с sudo или от root.
Это вся интеграция. Важны три детали, и именно на них обычно спотыкаются: в строке machine указывается только хост — deb.griffo.io, без https://, без слеша в конце и без пути /apt; имя файла оканчивается на .conf, потому что любое другое расширение apt молча игнорирует; файл принадлежит root и имеет режим 600, потому что apt отказывается читать учётные данные, доступные другим пользователям — поэтому выше файл создаётся пустым с режимом 600 ещё до того, как в него записывается пароль. Если apt отвечает 401 — здесь полный список проверок →
Каждый запрос проверяется по базе в момент обращения: логин, хеш пароля и наличие активной подписки за этой учётной записью. Ничего не кешируется и ничего не выдаётся на вашу машину — поэтому продление, отмена или новый пароль действуют сразу, без каких-либо действий с вашей стороны.
🏗️ 4. Серверы, контейнеры и CI
Одного набора учётных данных хватает на все ваши машины — рабочую станцию, ноутбуки, серверы, сборочные агенты. Положите тот же файл auth.conf.d на каждую или смонтируйте его секретом в CI. Чего делать не стоит — вшивать его в образ контейнера, который уходит в публичный реестр: это пароль в файле, и он путешествует вместе со всем, куда его скопировали. Для образов лучше использовать сборочный секрет либо ставить .deb из публичного релиза на GitHub, где учётные данные не нужны вовсе.
🔄 5. Годовая подписка — полный цикл
| Что происходит | Что с доступом |
|---|---|
| Продление, раз в год | Молча. Stripe списывает с карты, период продлевается, учётные данные не меняются — ничего делать и перезапускать не нужно |
| Вы отменяете | По ссылке отмены из приветственного письма. Доступ сохраняется до конца уже оплаченного периода, затем прекращается |
| Платёж не прошёл | Доступ прекращается. Исправить карту и оплатить — доступ вернётся; если застряли, спросите в Discord |
| Вы подписываетесь снова позже | Реактивируются та же учётная запись и тот же пароль. Новое письмо не приходит, потому что ничего не изменилось |
| Вы просите возврат | Доступ отзывается сразу при оформлении возврата |
| Доступ закончился | Вам приходит письмо об этом, а apt install начинает возвращать 401. Уже установленные пакеты не затрагиваются |
♾️ 6. Lifetime — в чём отличие
Lifetime — это разовый платёж, а не подписка. Нечего продлевать и нечего отменять, нет привязанной карты, которая истечёт, и изменения цен вас не касаются. Учётные данные работают точно так же — тот же логин, тот же файл auth.conf.d, всё то же самое. Если у вас была годовая подписка и вы перешли, вы сохраняете имеющиеся данные: приходит подтверждение, а не новый пароль. Единственное, что прекращает пожизненный доступ, — возврат средств.
🚦 7. Что работает вообще без подписки
| Команда | Нужны учётные данные? |
|---|---|
apt update | Нет — индексы остаются открытыми для всех |
apt policy / apt-cache | Нет |
| Просмотр /apt/dists/ | Нет |
apt install / apt upgrade | Да |
| Уже установленные пакеты | Нет — они не истекают и не проверяют лицензию |
| deb-free.griffo.io | Нет — бесплатно всегда, без учётной записи |
Файлы .deb на GitHub | Нет — бесплатно всегда |
То есть вы можете подключить репозиторий, выполнить apt update и увидеть, какие именно версии предлагаются, ещё до оплаты. Как устроено бесплатное зеркало →
🗃️ 8. Что о вас хранится
Ваш адрес почты, идентификатор клиента в Stripe, bcrypt-хеш пароля и даты подписки. Это вся запись. Платёжные данные обрабатывает Stripe, до этого сервера они не доходят. Отправляются только письма, без которых сервис не работает: учётные данные, подтверждение активации пожизненного доступа и уведомление о прекращении доступа. Никакого маркетинга и рассылок. Условия использования →
❓ Остались сомнения?
Спрашивайте до оплаты — Discord это самый быстрый способ со мной связаться, и вопросы о том, как всё это работает, приветствуются. Если вы поддерживали проект на Buy Me a Coffee, скажите об этом там: вы получите бесплатную пожизненную подписку.