Docs: document Gmail SMTP setup for email
Build & Push Docker image / test (push) Successful in 49s
Build & Push Docker image / docker (push) Successful in 1m18s

Add a Gmail App Password walkthrough to the README and note in CLAUDE.md that
production email is configured, including the Unraid-template persistence caveat.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
Jim Basso
2026-06-11 17:02:33 -05:00
co-authored by Claude Opus 4.8
parent e1fc1f9a2b
commit bc025d901b
2 changed files with 31 additions and 0 deletions
+5
View File
@@ -45,6 +45,11 @@ Container defaults `WishNinja__DataPath=/data` and listens on `:8080`. Key vars:
email links), `WishNinja__Smtp__*` (optional; if unset, emails are logged and invite links show in email links), `WishNinja__Smtp__*` (optional; if unset, emails are logged and invite links show in
the admin UI). Full table in the README. the admin UI). Full table in the README.
**Production email is configured** via a Gmail **App Password** (`smtp.gmail.com:587` STARTTLS),
stored in the Unraid template (masked). Invites + password resets both use it. See the README
"Email (Gmail example)" section. Reminder: SMTP vars must live in the Unraid *template*, not just
the running container, or a Force Update wipes them.
## Deployment (production) ## Deployment (production)
- **Repo:** `https://git.basso.land/jim/WishNinja` (Gitea). Push to `main` → Gitea Actions runs - **Repo:** `https://git.basso.land/jim/WishNinja` (Gitea). Push to `main` → Gitea Actions runs
tests, builds the Docker image, pushes `git.basso.land/jim/wishninja:latest` + a SHA tag. tests, builds the Docker image, pushes `git.basso.land/jim/wishninja:latest` + a SHA tag.
+26
View File
@@ -54,6 +54,32 @@ All settings are environment variables (double-underscore maps to nested config)
The container listens on **port 8080** over plain HTTP — terminate TLS at your reverse proxy. The container listens on **port 8080** over plain HTTP — terminate TLS at your reverse proxy.
### Email (Gmail example)
Invites and password resets need SMTP. Gmail works via an **App Password** (not your account
password):
1. Enable **2-Step Verification** on the Google account, then create an App Password at
<https://myaccount.google.com/apppasswords>. You get a 16-character password — use it **without
spaces**.
2. Set the SMTP variables:
| Variable | Value |
|---|---|
| `WishNinja__Smtp__Host` | `smtp.gmail.com` |
| `WishNinja__Smtp__Port` | `587` |
| `WishNinja__Smtp__UseStartTls` | `true` |
| `WishNinja__Smtp__User` | your full Gmail address |
| `WishNinja__Smtp__Password` | the 16-char app password (no spaces) |
| `WishNinja__Smtp__FromAddress` | same Gmail address (Gmail requires From = authenticated user) |
| `WishNinja__Smtp__FromName` | e.g. `WishNinja` |
Other providers work the same way — just swap Host/Port/User/Password. Leave `Smtp__Host` empty to
disable email entirely (invite links still appear in the admin UI).
> **Unraid note:** set these as container variables via the template so they persist across
> *Force Update* redeploys — variables added only to a running container are lost on recreate.
## Running on Unraid ## Running on Unraid
1. **Build & publish the image.** Push to your Gitea repo; the included 1. **Build & publish the image.** Push to your Gitea repo; the included