2FAuth — мой личный генератор кодов, который всегда под рукой
Google Authenticator на вашем сервере — и никакого телефона
Привет, параноики и любители контроля!
Двухфакторная аутентификация — это святое. Но есть у неё фатальный недостаток: нужно каждый раз лезть в телефон. Телефон разрядился? Упал между диваном? Остался в машине? А вы уже сидите за компом и хотите зайти в админку сервера.
Встречайте: 2FAuth — ваш собственный, защищенный и очень симпатичный менеджер 2FA-кодов, который всегда под рукой.
🤔 Что это и зачем нужно в Homelab?
2FAuth — это веб‑приложение, которое заменяет Google Authenticator, Authy и прочие мобильные приложения. Вы устанавливаете его на свой домен (например, 2fa.ваш-сайт.ru), заходите туда через браузер и видите все свои коды двухфакторки. Больше никаких «где телефон?».
Проект родился из личной боли автора, когда он потерял телефон со всеми 2FA‑ключами внутри Google Authenticator. Он решил: «Хватит! Нужен свой сервис, который можно легко бэкапить».
✅ Чем меня зацепило (плюсы)
Никакого телефона
Сидите за компьютером — открываете вкладку с 2FAuth и копируете код. На работе — открываете браузер, логинитесь на свой домен и получаете код. Даже если это чужой компьютер (но потом не забудьте выйти и почистить кэш).Полный контроль над данными
Все секретные ключи хранятся в вашей собственной базе данных (SQLite, MySQL или PostgreSQL) на вашем сервере. Никаких облаков, никаких «а вдруг Google меня забанит?». Вы сами делаете бэкапы — и спите спокойно.Безопасность — на уровне
- Шифрование данных в базе (включите в настройках — крайне рекомендую).
- WebAuthn — можно залогиниться с помощью YubiKey или Titan Key, вообще отключив обычный пароль.
- Автоматический выход после бездействия.
- Логирование всех попыток входа.
Импорт из других приложений
Боитесь, что переносить все аккаунты будет муторно? 2FAuth умеет импортировать из:- Google Auth (через QR‑код)
- Aegis Auth (JSON, plain text)
- 2FAS Auth (JSON)
- и других 2FAuth (JSON)
Группировка
Раскладываем коды по папкам: «Работа», «Крипта», «HomeLab».Есть REST API и браузерные расширения
Хотите автоматизировать получение кодов? Пожалуйста, OpenAPI‑совместимый REST API. А для Chrome и Firefox есть расширения, которые вставляют код прямо в поле ввода на нужном сайте.
⚠️ Минусы и риски
Ты сам отвечаешь за безопасность сервера
Да, 2FAuth защищает коды паролем и WebAuthn, но и сам сервер нужно защищать: ставить HTTPS, обновлять PHP и веб‑сервер, следить за логами. Если ваш сервер взломают — хакер получит доступ ко всем вашим 2FA‑кодам.Зависимость от вашего сервера
Отключили свет или интернет — нет и кодов.Не все провайдеры поддерживают стандартные TOTP
Некоторые сервисы (например, некоторые банки или корпоративные системы) используют проприетарные протоколы или push‑уведомления. Для них 2FAuth не подойдёт — придётся держать родное приложение.
🛠️ Установка на свой веб‑сервер
Я подниму свой менеджер кодов 2FA на классическом стеке (PHP + Nginx). Это надежно, как швейцарские часы, и полностью под вашим контролем.
📋 Требования
- Веб‑сервер - Nginx (или Apache, но мы возьмем Nginx — он шустрее)
- PHP 8.4 или новее
- Расширения PHP:
bcmath,Ctype,DOM,fileinfo,gd,json,mbstring,openssl,pdo,session,tokenizer,xml - Composer (менеджер пакетов PHP)
- База данных: SQLite (самый простой вариант для базы данных, чтобы не плодить лишние сущности вроде MySQL)
📦 Установка: Шаг за шагом
Ставим зависимости
Заходим в консоль нашего контейнера и обновляем всё:apt update && apt upgrade -y apt install -y nginx php-fpm php-sqlite3 php-bcmath php-gd php-intl php-curl php-mbstring php-zip php-xml curl unzipСкачиваем последнюю версию с GitHub‑релиза
Идем в директорию веб-сервера и качаем последнею версию:cd /var/www wget https://github.com/Bubka/2FAuth/archive/refs/tags/v6.1.3.zip unzip 2FAuth-6.1.3.zipНастраиваем окружение
Идем в директорию и копируем пример конфига:cd /var/www/2fauth cp .env.example .envТеперь установим Composer (если его еще нет):
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composerУстанавливаем зависимости PHP:
composer install --prefer-dist --no-scripts --no-devГенерируем секретный ключ:
php artisan key:generateНастраиваем права
Чтобы Nginx мог работать с файлами, отдаем ему права:chown -R www-data:www-data /var/www/2fauth chmod -R 755 /var/www/2fauthНастройка Nginx
Создаем конфигnano /etc/nginx/sites-available/2fauth:server { listen 80; server_name 2fa.ваш-домен.ru; # Ваш домен или IP root /var/www/2fauth/public; index index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.4-fpm.sock; # Проверьте версию PHP fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } }Активируем конфиг (
ln -s /etc/nginx/sites-available/2fauth /etc/nginx/sites-enabled/) и перезапускаем Nginx:systemctl restart nginx.Настраиваем базу данных (я использую SQLite — проще всего)
cd /var/www/2fauth touch ./database/database.sqlite chown www-data:www-data ./database/database.sqlite chmod 700 ./database/database.sqliteЗапускаем установку и отвечаем на вопросы
php artisan 2fauth:installТеперь откройте в браузере
http://2fa.ваш-домен.ru— вас встретит форма регистрации. Первый зарегистрированный пользователь станет администратором.Важно
Обязательно! Настройте HTTPS
🔄 Как обновлять приложение (без потери данных)
Обновление ручное, но не сложное.
Скачайте новую версию и распакуйте в отдельную папку
cd /var/www wget https://github.com/Bubka/2FAuth/releases/download/vX.X.X/2FAuth-vX.X.X.zip unzip 2FAuth-vX.X.X.zip -d /var/www/2fauth-newСкопируйте важные файлы из старой установки
.env(ваши настройки)database/database.sqlite(если используете SQLite)storage/(папка с логами и кэшем)
Замените старую папку на новую
mv /var/www/2fauth /var/www/2fauth-old mv /var/www/2fauth-new /var/www/2fauthОбновите зависимости
composer installЗатем запустите мастер установки
cd /var/www/2fauth php artisan 2fauth:installМастер автоматически выполняет следующие команды:
php artisan cache:clear php artisan config:clear php artisan migrate php artisan passport:install php artisan config:cache php artisan route:cacheПроверьте права доступа
chown -R www-data:www-data /var/www/2fauth chmod -R 755 /var/www/2fauth
Готово. Все ваши ключи и настройки сохранятся.
🧾 Вердикт
2FAuth — это маст-хэв для тех, кто строит свой «цифровой суверенитет». В наших реалиях, когда доступ к зарубежным сервисам может измениться в любой момент, иметь свои 2FA-коды на своем же сервере — это не паранойя, а здравый смысл.
Совет
Не забудьте настроить бэкап базы данных куда-нибудь подальше от основного сервера. Свобода — это круто, но ответственность за нее теперь на вас!
🔗 Ссылки
- GitHub проекта: github.com/Bubka/2FAuth
- Документация: docs.2fauth.app
- Демо‑стенд: demo.2fauth.app (логин:
demo@2fauth.app, пароль:demo)
А вы доверяете свои 2FA‑секреты облачным провайдерам или предпочитаете держать всё под контролем на своём сервере? Лично я сплю спокойнее, когда знаю, что мои коды никуда не утекают. 😉