Files
linumiq-invoice/deploy/.env.dev.example
T
Gerhard Scheikl 01b4734477 security hardening
2026-05-31 09:35:31 +02:00

40 lines
1.7 KiB
Bash

# DEV environment for linumiq-invoice (custom app installed on linumiq-dev.myshopify.com).
# Copy to `.env.dev` on the server (in /docker/linumiq-invoice/dev/) and fill in real values.
# NEVER commit the real file.
# --- Shopify app credentials ---
# Partner Dashboard → Apps → linumiq-invoice-dev → API credentials.
SHOPIFY_API_KEY=fbc263e6cc28e8de031878d2a0f17444
SHOPIFY_API_SECRET=REPLACE_ME
# Public URL Shopify uses for OAuth, webhooks and admin embedding. Must match shopify.app.dev.toml.
SHOPIFY_APP_URL=https://invoice-app-dev.linumiq.com
# Single-merchant lock-in: only this myshopify domain may install the app.
ALLOWED_SHOP=linumiq-dev.myshopify.com
# Must match `scopes` in shopify.app.dev.toml.
SCOPES=read_orders,write_orders,read_all_orders,read_customers,read_companies,read_files,write_files
# --- Secrets at rest ---
# Field-level encryption key for secrets stored in the DB (SMTP password,
# Shopify session access/refresh tokens). Must be base64 of exactly 32 bytes.
# Generate with: node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
DATA_ENCRYPTION_KEY=REPLACE_ME_BASE64_32_BYTES
# Dedicated HMAC key for signing public GiroCode URLs. base64 of 32 bytes.
# If unset, the app falls back to SHOPIFY_API_SECRET (kept for backward compat).
# Generate with: node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
GIROCODE_SIGNING_KEY=REPLACE_ME_BASE64_32_BYTES
# --- Runtime ---
NODE_ENV=production
PORT=3000
# DATABASE_URL is set in docker-compose.dev.yml (file:/data/prod.sqlite on the bind mount).
# --- Email (optional) ---
# Archival BCC for every invoice email. Off by default for privacy/GDPR.
# Set to a single address or a comma-separated list to opt in.
# INVOICE_BCC=archive@example.com