Статичный веб‑сервис генерации паролей: настройки длины и набора символов, список паролей с копированием и выгрузкой в .txt. Все вычисления выполняются в браузере, отдельного бэкенда нет.
Репозиторий: github.com/tetanizer/passmaker
- Длина пароля (8–64), количество строк (до 500), чекбоксы наборов: прописные, строчные, цифры, спецсимволы.
- Базовые исключения неоднозначных символов: O, 0, I, l, 1.
- Опция «Исключение неоднозначных символов» — дополнительный набор похожих символов (S/5, B/8, G/6, Z/2,
|, кавычки, дефисы,_в спецсимволах и т.д.). - Сохранение настроек в
localStorage, автогенерация при открытии страницы (значения по умолчанию можно задать в разметке/логике). - Шрифты Roboto и Roboto Mono подключены локально (каталог
fonts/), без запросов к CDN. - Сборка Docker (nginx alpine) и публикация образа в GitHub Container Registry через GitHub Actions.
docker compose up --build -dОткройте в браузере: http://localhost:8080 (порт по умолчанию задан в docker-compose.yml).
docker build -t passmaker .
docker run --rm -p 8080:80 passmakerСнова: http://localhost:8080.
Достаточно открыть index.html через локальный HTTP‑сервер (копирование в буфер и некоторые API надёжнее работают не с file://). Например:
npx --yes serve -p 3000 .| Скрипт | Назначение |
|---|---|
docker-build.sh / docker-build.ps1 |
Локальная сборка образа (IMAGE / тег по умолчанию см. в файлах). |
ghcr-publish.sh / ghcr-publish.ps1 |
Сборка и docker push в ghcr.io; нужны IMAGE=ghcr.io/владелец/репозиторий и docker login ghcr.io. |
На Linux/macOS при необходимости: chmod +x scripts/*.sh.
Файл .github/workflows/docker-ghcr.yml:
- при push в ветки
main/masterи при тегахv*— сборка и отправка образа в GHCR; - для pull request — только сборка, без push;
- имя образа:
ghcr.io/<владелец>/<репозиторий>(нижний регистр), теги формируетdocker/metadata-action; - после успешной отправки образа создаётся или обновляется черновик релиза на GitHub с блоком «Образ в GHCR» (реестр, примеры
docker pull, список тегов) и ссылкой на CHANGELOG.md; для теговv*в текст подставляется фрагмент секции## [vX.Y.Z]из CHANGELOG, если она есть; - для веток main/master используется тег
continuous-draft(перезаписывается при каждом push) — один «живой» черновик; при включённой защите веток может понадобиться разрешить Actions создавать/обновлять этот тег.
После первого успешного запуска пакет появится в разделе Packages организации или пользователя. При необходимости сделайте пакет Public, чтобы docker pull работал без авторизации.
Пример docker-compose с образом из GHCR (вместо build: .):
image: ghcr.io/tetanizer/passmaker:main(подставьте свой владелец/репозиторий и тег с учётом ветки или semver.)
├── app.js # логика генерации, UI, localStorage
├── index.html
├── style.css
├── fonts.css # @font-face для Roboto / Roboto Mono
├── fonts/ # файлы .woff2 (подмножества Unicode)
├── Dockerfile
├── docker-compose.yml
├── scripts/ # локальная сборка и push в GHCR
├── CHANGELOG.md
└── .github/workflows/ # CI → GHCR и черновики релизов
Шрифты Roboto и Roboto Mono распространяются по SIL Open Font License 1.1 (файлы в fonts/).