Use SMTP credentials instead of Gmail auth for Email
This commit is contained in:
@ -18,8 +18,11 @@ PRISMA_HIDE_UPDATE_MESSAGE=true
|
|||||||
FIRST_NAME=firstname
|
FIRST_NAME=firstname
|
||||||
LAST_NAME=lastname
|
LAST_NAME=lastname
|
||||||
|
|
||||||
GMAIL=example@gmail.com
|
SMTP_HOST=smtp.example.com
|
||||||
GMAIL_SMTP_PASSWORD=chan geme xyza bcde
|
SMTP_PORT=465
|
||||||
|
SMTP_SECURE=true
|
||||||
|
SMTP_USER=noreply@example.com
|
||||||
|
SMTP_PASSWORD=password
|
||||||
|
|
||||||
DOMAIN=example.com
|
DOMAIN=example.com
|
||||||
API_DOMAIN=api.example.com
|
API_DOMAIN=api.example.com
|
||||||
|
@ -6,8 +6,11 @@
|
|||||||
FIRST_NAME=firstname
|
FIRST_NAME=firstname
|
||||||
LAST_NAME=lastname
|
LAST_NAME=lastname
|
||||||
|
|
||||||
GMAIL=example@gmail.com
|
SMTP_HOST=smtp.example.com
|
||||||
GMAIL_SMTP_PASSWORD=chan geme xyza bcde
|
SMTP_PORT=465
|
||||||
|
SMTP_SECURE=true
|
||||||
|
SMTP_USER=noreply@example.com
|
||||||
|
SMTP_PASSWORD=password
|
||||||
|
|
||||||
DOMAIN=example.com
|
DOMAIN=example.com
|
||||||
API_DOMAIN=api.example.com
|
API_DOMAIN=api.example.com
|
||||||
|
@ -43,8 +43,11 @@ ARG ADDRESS_DEV
|
|||||||
ARG DOMAIN
|
ARG DOMAIN
|
||||||
ARG API_DOMAIN
|
ARG API_DOMAIN
|
||||||
ARG MAX_HTTP_CONNECTIONS_PER_MINUTE
|
ARG MAX_HTTP_CONNECTIONS_PER_MINUTE
|
||||||
ARG GMAIL
|
ARG SMTP_HOST
|
||||||
ARG GMAIL_SMTP_PASSWORD
|
ARG SMTP_PORT
|
||||||
|
ARG SMTP_SECURE
|
||||||
|
ARG SMTP_USER
|
||||||
|
ARG SMTP_PASSWORD
|
||||||
ARG FIRST_NAME
|
ARG FIRST_NAME
|
||||||
ARG LAST_NAME
|
ARG LAST_NAME
|
||||||
|
|
||||||
|
15
README.md
15
README.md
@ -6,10 +6,8 @@ Create two A records, one for the web side of the website and one for the api si
|
|||||||
- It doesn't matter what reverse proxy you use (Nginx, Apache, Traefik, Caddy, etc)
|
- It doesn't matter what reverse proxy you use (Nginx, Apache, Traefik, Caddy, etc)
|
||||||
1. Point the web domain to the web port (default: 8910)
|
1. Point the web domain to the web port (default: 8910)
|
||||||
2. Point the api domain to the api port (default: 8911)
|
2. Point the api domain to the api port (default: 8911)
|
||||||
### Gmail App Password
|
### SMTP
|
||||||
1. Go to your Google [account dashboard](https://myaccount.google.com)
|
You will need credentials to authorize sending Email, instructions vary depending on provider (Gmail, Hotmail, etc).
|
||||||
2. Go to Security > 2-Step Verification > App Passwords > Create a new app password
|
|
||||||
3. Copy the 16 character password
|
|
||||||
### [Docker Compose](./docker-compose.yml)
|
### [Docker Compose](./docker-compose.yml)
|
||||||
```yaml
|
```yaml
|
||||||
version: '3.8'
|
version: '3.8'
|
||||||
@ -26,8 +24,11 @@ services:
|
|||||||
- DATABASE_URL=postgresql://redwood:changeme@db:5432/portfolio
|
- DATABASE_URL=postgresql://redwood:changeme@db:5432/portfolio
|
||||||
- FIRST_NAME=first name # Your first name
|
- FIRST_NAME=first name # Your first name
|
||||||
- LAST_NAME=lastname # Your last name
|
- LAST_NAME=lastname # Your last name
|
||||||
- GMAIL=example@gmail.com # The Gmail address associated with the app password created earlier
|
- SMTP_HOST=smtp.example.com
|
||||||
- GMAIL_SMTP_PASSWORD=aaaa bbbb cccc dddd # The app password created earlier
|
- SMTP_PORT=465
|
||||||
|
- SMTP_SECURE=true
|
||||||
|
- SMTP_USER=noreply@example.com
|
||||||
|
- SMTP_PASSWORD=password
|
||||||
- DOMAIN=portfolio.example.com
|
- DOMAIN=portfolio.example.com
|
||||||
- API_DOMAIN=api.portfolio.example.com
|
- API_DOMAIN=api.portfolio.example.com
|
||||||
# Careful, addresses below must not end with a '/'
|
# Careful, addresses below must not end with a '/'
|
||||||
@ -77,4 +78,4 @@ sudo docker exec -u root portfolio chown -R node:node /home/node/app/api/files_p
|
|||||||
### Default Credentials
|
### Default Credentials
|
||||||
**Username:** `admin`
|
**Username:** `admin`
|
||||||
|
|
||||||
**Password:** [`GMAIL_SMTP_PASSWORD`](#gmail-app-password)
|
**Password:** [`SMTP_PASSWORD`](#smtp)
|
||||||
|
@ -8,16 +8,18 @@ interface Options {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const transporter = nodemailer.createTransport({
|
const transporter = nodemailer.createTransport({
|
||||||
service: 'gmail',
|
host: process.env.SMTP_HOST,
|
||||||
|
port: Number(process.env.SMTP_PORT),
|
||||||
|
secure: process.env.SMTP_SECURE === 'true',
|
||||||
auth: {
|
auth: {
|
||||||
user: process.env.GMAIL,
|
user: process.env.SMTP_USER,
|
||||||
pass: process.env.GMAIL_SMTP_PASSWORD,
|
pass: process.env.SMTP_PASSWORD,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
export const sendEmail = async ({ to, subject, text, html }: Options) =>
|
export const sendEmail = async ({ to, subject, text, html }: Options) =>
|
||||||
await transporter.sendMail({
|
await transporter.sendMail({
|
||||||
from: `"${process.env.FIRST_NAME} ${process.env.LAST_NAME} (noreply)" <${process.env.GMAIL}>`,
|
from: `${process.env.FIRST_NAME} ${process.env.LAST_NAME} <${process.env.GMAIL}>`,
|
||||||
to: Array.isArray(to) ? to : [to],
|
to: Array.isArray(to) ? to : [to],
|
||||||
subject,
|
subject,
|
||||||
text,
|
text,
|
||||||
|
@ -12,8 +12,11 @@ services:
|
|||||||
- DATABASE_URL=postgresql://redwood:changeme@db:5432/portfolio
|
- DATABASE_URL=postgresql://redwood:changeme@db:5432/portfolio
|
||||||
- FIRST_NAME=first name # Your first name
|
- FIRST_NAME=first name # Your first name
|
||||||
- LAST_NAME=lastname # Your last name
|
- LAST_NAME=lastname # Your last name
|
||||||
- GMAIL=example@gmail.com # The Gmail address associated with the app password created earlier
|
- SMTP_HOST=smtp.example.com
|
||||||
- GMAIL_SMTP_PASSWORD=aaaa bbbb cccc dddd # The app password created earlier
|
- SMTP_PORT=465
|
||||||
|
- SMTP_SECURE=true
|
||||||
|
- SMTP_USER=noreply@example.com
|
||||||
|
- SMTP_PASSWORD=password
|
||||||
- DOMAIN=portfolio.example.com
|
- DOMAIN=portfolio.example.com
|
||||||
- API_DOMAIN=api.portfolio.example.com
|
- API_DOMAIN=api.portfolio.example.com
|
||||||
# Careful, addresses below must not end with a '/'
|
# Careful, addresses below must not end with a '/'
|
||||||
|
@ -10,7 +10,7 @@ export default async () => {
|
|||||||
const admin = {
|
const admin = {
|
||||||
username: 'admin',
|
username: 'admin',
|
||||||
email: process.env.GMAIL,
|
email: process.env.GMAIL,
|
||||||
password: process.env.GMAIL_SMTP_PASSWORD,
|
password: process.env.SMTP_PASSWORD,
|
||||||
}
|
}
|
||||||
|
|
||||||
const [hashedPassword, salt] = hashPassword(admin.password)
|
const [hashedPassword, salt] = hashPassword(admin.password)
|
||||||
|
Reference in New Issue
Block a user