# Two-Factor Authentication

![](https://972085701-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MhfoWNADLmnfzSLjYjS%2F-MiGHNyNtkHyHme-Eq_J%2F-MiGInyWhKsFNDFHPsnC%2FiWallet_google-authenticator.png?alt=media\&token=c526e161-4c98-4fa8-9dfb-a4db1e561883)

## 1. สร้าง Secret Key

ใช้คำสั่ง `googleauth-gen` โดยพิมพ์คำสั่ง Docker run ดังนี้

```bash
$ docker run --rm -v $PWD:/iwallet ghcr.io/jittagornp/iwallet googleauth-gen
```

ตัวอย่าง

```bash
$ docker run --rm -v $PWD:/iwallet ghcr.io/jittagornp/iwallet googleauth-gen

Generating QR code and config...
Output QR code file "google-authenticator/qr.png"
Output config file "google-authenticator/config.json"

$ cat google-authenticator/config.json
{
  "secretKey" : "ZGYLMHUQUN4ZWNKKTSSFARNCGNGJTJON",
  "account" : "iwallet",
  "issuer" : "iWallet",
  "barcode" : "otpauth://totp/iWallet%3Aiwallet?secret=ZGYLMHUQUN4ZWNKKTSSFARNCGNGJTJON&issuer=iWallet",
  "qrcodeFile" : "qr.png"
}
```

**หมายเหตุ**

* เวอร์ชัน Free เปลี่ยน Repository จาก  `ghcr.io/jittagornp/iwallet` เป็น `jittagornp/iwallet`

ระบบจะสร้างไฟล์ขึ้นมาให้ 2 ไฟล์ได้แก่

* QR Code (google-authenticator/qr.png)
* Config File (google-authenticator/config.json)

![](https://972085701-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MhfoWNADLmnfzSLjYjS%2F-MhmvfZ3uKnLKA3fJdfW%2F-Mhmz29GTm17HWAVC5Lh%2Fimage.png?alt=media\&token=ad9374b8-c355-4876-8866-74c83884b5dc)

## 2. Mobile

ในฝั่งของ Mobile ให้เปิดโปรแกรม Google Authenticator &#x20;

จากนั้นให้ทำการ Scan QR Code ที่เราได้สร้างไว้ในข้อ 1 ก็เป็นอันเสร็จเรียบร้อย&#x20;

![](https://972085701-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MhfoWNADLmnfzSLjYjS%2F-Mi-zzLtpq-NKW9mFTGE%2F-Mhn0sIla5JGQ6Ul7YIR%2Fgoogle-auth-1-1.png?alt=media\&token=e60eb024-ea83-461f-9db5-d4d0a24a125b)

ถ้าไม่สามารถ Scan QR Code ได้ ให้ใช้ Secret Key จากไฟล์ config.json ในข้อ 1 มากรอกเองดังนี้

![](https://972085701-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MhfoWNADLmnfzSLjYjS%2F-Mi-zzLtpq-NKW9mFTGE%2F-Mhn1945Nt3xhXqYnCCh%2Fgoogle-auth-2-1.png?alt=media\&token=aae8cc91-7227-43db-8f81-24004772a025)

## 3. การ Run Bot

ตอน Run bot ให้เพิ่ม Environment Variable `IWALLET_GOOGLEAUTH_SECRET_KEY` นี้เข้าไปด้วย&#x20;

```bash
$ docker run -d \
  -p 8080:8080 \
  -v $PWD:/iwallet \
  -e IWALLET_DATABASE_USERNAME="<YOUR_DATABASE_USERNAME>" \
  -e IWALLET_DATABASE_PASSWORD="<YOUR_DATABASE_PASSWORD>" \
  -e IWALLET_APP_SECRET="<YOUR_APP_SECRET>" \
  -e IWALLET_ALLOW_DOMAINS="<YOUR_DOMAIN_NAME>"
  -e IWALLET_GOOGLEAUTH_SECRET_KEY="<YOUR_GOOGLEAUTH_SECRET_KEY>" \
  --restart=always \
  --name iwallet ghcr.io/jittagornp/iwallet
```

`IWALLET_GOOGLEAUTH_SECRET_KEY` กำหนดค่าเป็น Secret Key ที่ได้จากข้อ 1
