2fauth/2fauth

By 2fauth

•Updated 7 days ago

A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes

Image
17

1M+

2fauth/2fauth repository overview

⁠Docker

Build status

dockeri.co

You can run 2fauth in a single Docker container.

⁠Features

  • Latest size
  • Compatible with: amd64, 386, arm64, arm/v6 and arm/v7
  • Stores data in an Sqlite database file
  • Runs without root as user with id 1000 and group id 1000

⁠Setup

We assume your current directory is /yourpath.

  1. Create a directory on your host:

    mkdir 2fauth
    
  2. If your host is not Windows: since the container runs without root as user 1000:1000, you need to fix the ownership and permissions of that directory:

    chown 1000:1000 2fauth
    chmod 700 2fauth
    

    💁 if you feel like using another ID, you can build the image with build arguments⁠.

  3. Run the container interactively:

    docker run -it --rm -p 8000:8000/tcp \
    -v /yourpath/2fauth:/2fauth 2fauth/2fauth
    -e AUTHENTICATION_GUARD=web-guard #fix for issue #68
    
  4. Access it at http://localhost:8000⁠

You can stop it with CTRL+C.

  • You can also run it in the background by replacing -it --rm with -d.
  • You can set environment variables available (see the .env.example⁠) with -e, for example -e APP_NAME=2FAuth.
  • You can also use the docker-compose.yml⁠ with docker-compose and modify it as you wish.
⁠Use an existing SQLite file

If you already have an SQLite file, move it to /yourpath/2fauth/database.sqlite on your host before starting the container. Don't forget to fix its ownership and permissions if you run on *nix:

chown 1000:1000 /yourpath/2fauth/database.sqlite
chmod 700 /yourpath/2fauth/database.sqlite

The container will automagically pick it up.

⁠Update

⚠️ At the very least, backup your database.sqlite file to avoid bad surprises!

The Docker image 2fauth/2fauth is built on every commit pushed to the master branch.

You can therefore pull the image with docker pull 2fauth/2fauth and restart the container to update it.

You can also use tagged images, see Docker Hub tags⁠ which are produced on Github releases.

⁠Build the image

You can build the image from the master branch with docker and git using:

docker build -t 2fauth/2fauth https://github.com/Bubka/2FAuth.git
⁠Build the image for a specific release

You can build a specific release⁠ by appending the release tag with #<release-tag> to the command. For example:

docker build -t 2fauth/2fauth https://github.com/Bubka/2FAuth.git#v3.0.0
⁠Build the image for a specific commit

You can build a specific commit (see master's commits⁠) by appending the commit hash with #<commit-hash> to the command. For example:

docker build -t 2fauth/2fauth https://github.com/Bubka/2FAuth.git#fba9e29bd4e3bb697296bb0bde60ae869537528b
⁠Build the image with build arguments

There are the following build arguments you can use to customize the image using --build-arg key=value:

Build argumentDefaultDescription
UID1000The UID of the user to run the container as
GID1000The GID of the user to run the container as
DEBIAN_VERSIONbuster-slimThe Debian version to use
PHP_VERSION8.2-busterThe PHP version to use to get composer dependencies
COMPOSER_VERSION2.7The version of composer to use
SUPERVISORD_VERSIONv0.7.3The version of supervisord to use
VERSIONunknownThe version of the image
CREATEDan unknown dateThe date of the image build time
COMMITunknownThe commit hash of the Git commit used
⁠Mail settings

Refer your email provider documentation to configure your mail settings

Set a value for every available setting to avoid issue

Build argumentRecommendationDescription
MAIL_MAILERSMTPThe driver type
MAIL_HOSTsmtp.yourdomain.comThe SMTP hostname
MAIL_PORT587The corresponding SMTP port (587 with STARTTLS) or (465 with SSL recommended)
MAIL_USERNAME[email protected]The SMTP username
MAIL_PASSWORDpassword1234The SMTP password
MAIL_ENCRYPTIONTLSThe encrytion type (TLS -> STARTTLS) or SSL
MAIL_FROM_NAME2FAuthThe sender name
MAIL_FROM_ADDRESS[email protected]The sender adress

Example:

-e MAIL_MAILER=SMTP
-e MAIL_HOST=smtp.example.com
-e MAIL_PORT=587 # STARTTLS
-e [email protected]
-e MAIL_PASSWORD=password1234
-e MAIL_ENCRYPTION=TLS # STARTTLS
-e MAIL_FROM_NAME=2FAuth
-e [email protected]

⁠Implementation details

  • The final Docker image is based on alpine:3.14 with minimal packages installed
  • The container runs supervisord⁠ to handle both an Nginx server and a PHP-FPM server together
  • The /srv directory holds the repository data and PHP code.
  • The /2fauth directory is targeted for the container end users.
  • By default the container logs the Nginx logs and the PHP-FPM logs. The application logs (if any) can be found in /2fauth/storage/logs.

Tag summary

Content type

Image

Digest

sha256:fe799fdbf…

Size

39.2 MB

Last updated

7 days ago

docker pull 2fauth/2fauth