finish migration for db and add multiple fixes for deploy settings in server
This commit is contained in:
parent
1effb62498
commit
6787b3db50
50
.env
50
.env
|
|
@ -1,50 +0,0 @@
|
|||
# Archivo de variables de entorno para la configuración de Google Sheets
|
||||
GOOGLE_SERVICE_ACCOUNT_EMAIL=dbsheets@dbsheets-487314.iam.gserviceaccount.com
|
||||
GOOGLE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCi2DVTbgH5WzE4\nrsT4BLcjplwszwkiZmhUxcVma/xI/6G+LQpzWTmmETmPWGFBpPukcoEDJDIugSFF\nuiKM+cSJIJJTYYWb5sBGXC6bi36AiA3W/zuRYGoFdNP+34iqepWpXpjKY8T0bbJJ\njhIgjW/SN2fYZeVBZqLATEzRqCcPYXI5gs9fyb2bzTEjiB3kCklVCudl/JDoxAWm\nJ9vO/OOXEgt/t97v9cMoo9OZ4Y3txqiQB41UdS97btDvpezc59u+8K9s5FT+yljC\nMyfRiRM+4MpycCoJobiT8NnCaNblMTd8mkfuujrFvnT/k9O794gBOJ2sgF7AYej4\nzm9tXpknAgMBAAECggEAM50bqcngTkydGT4rqAC2m1ILPRiR6JlU0CmvG3t2hxyf\nA0v7V/wbzYsAF3MHwGquZ7zzLy+1yA+doCAS+2Pe6yeruUnbs0I8BxEIpLxd6Bc3\na8GR+833TKtu1gW7p20bKoeVHfDpaB+stquVC0RJAPQWsfv54fTJ+PE2F+2YE8Np\njhWvM4OkUNZVBPZxG+RF0gzylIx2tw3QpLN3DMSr9Z2wGfohp7yryP96qqC1RFGQ\nCsaHsPRfzv+UNinGmA0Yzv79Stuqgsg+J3V/01Pm4ANutHix/kP0YAYCyg29UtVZ\nIJZtPOAfHWICYw+hQMpcfSLWzbkUQpwTTG0Bk6xmwQKBgQDUNf226UzdAm/V2Pag\nc1YF4P6Bru1A5jiFTpyrAYPSN+Wk84Gkl8XtuDDb7zXL+MaVb8aIVXTKhM2b0RDw\nHtDayoCCXci8VfP4sDRzjEGB1O1OPOl/wPD6L94CmNB0QeepNs4Q5xD0HEsoNN6s\nZGafIkIbVVUBCkuZwNxoLVXSKQKBgQDEcnKkgE/ror9vXSj0XY9Rn0wU2W6DreUt\nMizWyH9R0wBbaSJQ/4Wd3F6co2H2DSuZgXxLJvsPlqffUivs/oZnlx8HhWi6vjLL\nvSiqNC1D+Bh5TT7PEonENU99lruKtZfKcMpRtVF6WycW5ZlYok4lRCEBBvbjtGgr\nIHnqc8WazwKBgD0oHilDjQI4fJBtiY3uD0F8ePxYtEk6z9kjMaVat2my8DycbKVJ\nlCIRLguEIcXZuSlB4D5UGmdu5G5eTvpUdy5Go8huTLZyMvBdn5AZQJuxCH6+sTA/\nI3OGrf2jmpeWkrPCdpqKbOlc6g/5RJ78BFMiJVkJO4kkNWtnGF3xisUZAoGAJ8VT\n2GHxzC7CuvUNWYunfErXyFDMwvPttdy2nzUwMYyaQedi/yr8Dh2TOfsJ1hqMfSNt\n2nkl0t4ZVmj4Y56T71z09zzXGxduiTjehrbRgzUzHzu4P4vtQD/au/5MMaTZ+i4j\nh69Bs5fIriYFiaAyWfEVDXQvf6IChNiqVgDiPJkCgYEAooIiW4HHVUNGMnIeB7UI\nBXv5gSs2heHYSmEK+Er7In5cfJQzkcJvwiOMfOPCNuwVPn+ow5IN8le1acDon5I2\n0OsXhWmgyg9zmgguj273mH3h6+o6XTg5GrEYgPVpU3m2dJkd05oWhQvzy7/OxHs8\nE4ZMz97uqmU2r8XJCo//tv8=\n-----END PRIVATE KEY-----\n"
|
||||
GOOGLE_SHEET_ID=12X6qeU0W4ZDw00vS4OreyC4nFjKBeBYo7rq3wyRsrNQ
|
||||
|
||||
# Archivo de variables de entorno para la configuración de envío de emails
|
||||
EMAIL_API_KEY=9UShpS8oh5Iun92TJSfevElI3Lp99TCv
|
||||
|
||||
# This was inserted by prisma init:
|
||||
# Environment variables declared in this file are NOT automatically loaded by Prisma.
|
||||
# Please add import "dotenv/config"; to your prisma.config.ts file, or use the Prisma CLI with Bun
|
||||
# to load environment variables from .env files: https://pris.ly/prisma-config-env-vars.
|
||||
|
||||
# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB.
|
||||
# See the documentation for all the connection string options: https://pris.ly/d/connection-strings
|
||||
|
||||
# The following prisma+postgres URL is similar to the URL produced by running a local Prisma Postgres
|
||||
# server with the prisma dev CLI command, when not choosing any non-default ports or settings. The API key, unlike the
|
||||
# one found in a remote Prisma Postgres URL, does not contain any sensitive information.
|
||||
|
||||
N8N_WEBHOOK_URL="https://flows2.carpa.com/webhook/news-summary"
|
||||
N8N_API_KEY="sk_live_JwjpTdZrLVvijCKuWylWZbUuhBm6zPDH"
|
||||
|
||||
# Cloudflare Email Sending
|
||||
CLOUDFLARE_API_TOKEN=cfut_8Y0Tcwiv3v0K1LDK9QSvc3BjlU1lZFs1zikACgTw33977b37
|
||||
CLOUDFLARE_ACCOUNT_ID=3e689750123db91e81d3542d2930a907
|
||||
|
||||
# Cloudflare Turnstile — public key (visible in frontend)
|
||||
TURNSTILE_SITE_KEY=0x4AAAAAAD9IYWC6HPflpneO
|
||||
|
||||
# Cloudflare Turnstile — secret key (server-side, keep safe!)
|
||||
# In production, set this as a Gitea Actions secret named TURNSTILE_SECRET_KEY
|
||||
TURNSTILE_SECRET_KEY=0x4AAAAAAD9IYXASjQSpmo2iS902SDoXnT4
|
||||
|
||||
# Supabase PostgreSQL
|
||||
# <<<<<<< Updated upstream
|
||||
# DATABASE_URL="postgresql://postgres:postgres@localhost:5432/postgres?schema=public"
|
||||
# DIRECT_URL="postgresql://postgres:postgres@localhost:5432/postgres?schema=public"
|
||||
# SUPABASE_URL="http://localhost:8000"
|
||||
# SUPABASE_ANON_KEY="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE"
|
||||
# SUPABASE_SERVICE_ROLE_KEY="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q"
|
||||
# POSTGRES_PASSWORD=postgres
|
||||
# =======
|
||||
DATABASE_URL="postgresql://postgres:13730fbbdb2e76c904b228bd93bedd7f@vps1.carpa.com:5432/postgres?schema=public"
|
||||
DIRECT_URL="postgresql://postgres:13730fbbdb2e76c904b228bd93bedd7f@vps1.carpa.com:5432/postgres?schema=public"
|
||||
SUPABASE_URL="http://vps1.carpa.com"
|
||||
SUPABASE_ANON_KEY="eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjNhMWFiMzE3LWJhOWQtNGVlMy1hY2Y4LTgzNjVmNmE5ZTBiNyJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlIiwiaWF0IjoxNzgyODU4MjA4LCJleHAiOjE5NDA1MzgyMDh9.53Jkizte60-Hos40tOz0Ld7ffHe6DAG6Nt033XDZHPCnanjYOpgaLfC2QlbY4mFWw9Z2hCd8bUgxWsGpwFNcPg"
|
||||
SUPABASE_SERVICE_ROLE_KEY="eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjNhMWFiMzE3LWJhOWQtNGVlMy1hY2Y4LTgzNjVmNmE5ZTBiNyJ9.eyJyb2xlIjoic2VydmljZV9yb2xlIiwiaXNzIjoic3VwYWJhc2UiLCJpYXQiOjE3ODI4NTgyMDgsImV4cCI6MTk0MDUzODIwOH0.f4ZWyQj0fGpEAKXWvL97b1w_4eaBfXRC13b5Mtac9UhJNbMFKIJJn1x_-8Kds-1PfIv590xlumN4sp_3X_tZeg"
|
||||
POSTGRES_PASSWORD=13730fbbdb2e76c904b228bd93bedd7f
|
||||
# >>>>>>> Stashed changes
|
||||
|
|
@ -53,9 +53,16 @@ jobs:
|
|||
npm install -g pnpm@11 2>&1
|
||||
cd ${{ env.TARGET_DIR }}
|
||||
pnpm install --prod 2>&1
|
||||
sed -i "s|TURNSTILE_SITE_KEY: \"\"|TURNSTILE_SITE_KEY: \"${{ secrets.TURNSTILE_SITE_KEY }}\"|g" ecosystem.config.cjs
|
||||
sed -i "s|TURNSTILE_SECRET_KEY: \"\"|TURNSTILE_SECRET_KEY: \"${{ secrets.TURNSTILE_SECRET_KEY }}\"|g" ecosystem.config.cjs
|
||||
sed -i "s|CLOUDFLARE_API_TOKEN: \"\"|CLOUDFLARE_API_TOKEN: \"${{ secrets.CLOUDFLARE_API_TOKEN }}\"|g" ecosystem.config.cjs
|
||||
sed -i "s|CLOUDFLARE_ACCOUNT_ID: \"\"|CLOUDFLARE_ACCOUNT_ID: \"${{ secrets.CLOUDFLARE_ACCOUNT_ID }}\"|g" ecosystem.config.cjs
|
||||
cat > .env <<'ENVEOF'
|
||||
DATABASE_URL="${{ secrets.DATABASE_URL }}"
|
||||
GOOGLE_SERVICE_ACCOUNT_EMAIL="${{ secrets.GOOGLE_SERVICE_ACCOUNT_EMAIL }}"
|
||||
GOOGLE_PRIVATE_KEY="${{ secrets.GOOGLE_PRIVATE_KEY }}"
|
||||
GOOGLE_SHEET_ID="${{ secrets.GOOGLE_SHEET_ID }}"
|
||||
EMAIL_API_KEY="${{ secrets.EMAIL_API_KEY }}"
|
||||
TURNSTILE_SITE_KEY="${{ secrets.TURNSTILE_SITE_KEY }}"
|
||||
TURNSTILE_SECRET_KEY="${{ secrets.TURNSTILE_SECRET_KEY }}"
|
||||
CLOUDFLARE_API_TOKEN="${{ secrets.CLOUDFLARE_API_TOKEN }}"
|
||||
CLOUDFLARE_ACCOUNT_ID="${{ secrets.CLOUDFLARE_ACCOUNT_ID }}"
|
||||
ENVEOF
|
||||
pm2 reload ecosystem.config.cjs --only ${{ env.APP_NAME }} --update-env || \
|
||||
pm2 start ecosystem.config.cjs --only ${{ env.APP_NAME }} --update-env
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ pnpm-debug.log*
|
|||
|
||||
|
||||
# environment variables
|
||||
.env
|
||||
.env.keys
|
||||
|
||||
# macOS-specific files
|
||||
|
|
|
|||
|
|
@ -2,26 +2,22 @@ module.exports = {
|
|||
apps: [
|
||||
{
|
||||
name: "cdrdpyj",
|
||||
cwd: __dirname,
|
||||
script: "dist/server/entry.mjs",
|
||||
interpreter_args: "--env-file=.env",
|
||||
env: {
|
||||
NODE_ENV: "staging",
|
||||
PORT: 3310,
|
||||
TURNSTILE_SITE_KEY: "",
|
||||
TURNSTILE_SECRET_KEY: "",
|
||||
CLOUDFLARE_API_TOKEN: "",
|
||||
CLOUDFLARE_ACCOUNT_ID: "",
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "cdrdpyj-live",
|
||||
cwd: __dirname,
|
||||
script: "dist/server/entry.mjs",
|
||||
interpreter_args: "--env-file=.env",
|
||||
env: {
|
||||
NODE_ENV: "production",
|
||||
PORT: 4321,
|
||||
TURNSTILE_SITE_KEY: "",
|
||||
TURNSTILE_SECRET_KEY: "",
|
||||
CLOUDFLARE_API_TOKEN: "",
|
||||
CLOUDFLARE_ACCOUNT_ID: "",
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ const tl = createTranslator(Astro.currentLocale);
|
|||
|
||||
const { locale, section } = Astro.params;
|
||||
const routeKey = getRouteKeyFromSlug(section);
|
||||
const turnstileSiteKey = process.env.TURNSTILE_SITE_KEY;
|
||||
|
||||
if (routeKey === "formulario") {
|
||||
if (!["es", "en", "pt"].includes(Astro.currentLocale)) {
|
||||
|
|
@ -62,7 +63,7 @@ if (routeKey === "formulario") {
|
|||
<h1 class="text-3xl lg:text-4xl font-bold font-secondary text-[#EBE6D2] text-center mb-4 md:mb-9">
|
||||
{tl("form.page_title")}
|
||||
</h1>
|
||||
<DynamicForm client:load locale={Astro.currentLocale} turnstileSiteKey={import.meta.env.TURNSTILE_SITE_KEY} />
|
||||
<DynamicForm client:load locale={Astro.currentLocale} turnstileSiteKey={turnstileSiteKey} />
|
||||
</div>
|
||||
</main>
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ export const POST: APIRoute = async ({ request }) => {
|
|||
}
|
||||
|
||||
const turnstileToken = body.turnstileToken || "";
|
||||
const turnstileSecret = import.meta.env.TURNSTILE_SECRET_KEY;
|
||||
const turnstileSecret = process.env.TURNSTILE_SECRET_KEY;
|
||||
if (turnstileSecret && turnstileToken) {
|
||||
const verify = await fetch(
|
||||
"https://challenges.cloudflare.com/turnstile/v0/siteverify",
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import Cloudflare from "cloudflare";
|
|||
type TypeEmailData = "CENTRO_DEL_REINO_PAZ_Y_JUSTICIA_INFO" | "CENTRO_DEL_REINO_PAZ_Y_JUSTICIA_POSTULACION";
|
||||
|
||||
export async function sendEmail(data: object, to: string, type: TypeEmailData) {
|
||||
const emailApiKey = import.meta.env.EMAIL_API_KEY;
|
||||
const emailApiKey = process.env.EMAIL_API_KEY;
|
||||
|
||||
const dataFinal = {
|
||||
...data,
|
||||
|
|
@ -77,8 +77,8 @@ function stripHtml(html: string): string {
|
|||
}
|
||||
|
||||
export async function sendEmailCf(data: Record<string, string>, to: string, type: TypeEmailData) {
|
||||
const apiToken = import.meta.env.CLOUDFLARE_API_TOKEN;
|
||||
const accountId = import.meta.env.CLOUDFLARE_ACCOUNT_ID;
|
||||
const apiToken = process.env.CLOUDFLARE_API_TOKEN;
|
||||
const accountId = process.env.CLOUDFLARE_ACCOUNT_ID;
|
||||
|
||||
try {
|
||||
const client = new Cloudflare({ apiToken });
|
||||
|
|
@ -122,7 +122,7 @@ export async function sendEmailCf(data: Record<string, string>, to: string, type
|
|||
// to: string,
|
||||
// type: TypeEmailData
|
||||
// ) {
|
||||
// const apiKey = import.meta.env.BREVO_API_KEY;
|
||||
// const apiKey = process.env.BREVO_API_KEY;
|
||||
// const { subject } = TEMPLATE_URLS[type];
|
||||
// const rawHtml = await fetchTemplate(type);
|
||||
// const html = renderTemplate(rawHtml, data);
|
||||
|
|
|
|||
|
|
@ -2,14 +2,14 @@ import { google } from 'googleapis';
|
|||
|
||||
const auth = new google.auth.GoogleAuth({
|
||||
credentials: {
|
||||
client_email: import.meta.env.GOOGLE_SERVICE_ACCOUNT_EMAIL,
|
||||
private_key: import.meta.env.GOOGLE_PRIVATE_KEY?.replace(/\\n/g, '\n'),
|
||||
client_email: process.env.GOOGLE_SERVICE_ACCOUNT_EMAIL,
|
||||
private_key: process.env.GOOGLE_PRIVATE_KEY?.replace(/\\n/g, '\n'),
|
||||
},
|
||||
scopes: ['https://www.googleapis.com/auth/spreadsheets'],
|
||||
});
|
||||
|
||||
const sheets = google.sheets({ version: 'v4', auth });
|
||||
const SPREADSHEET_ID = import.meta.env.GOOGLE_SHEET_ID;
|
||||
const SPREADSHEET_ID = process.env.GOOGLE_SHEET_ID;
|
||||
|
||||
export async function emailExists(email: string): Promise<boolean> {
|
||||
const formula = `=COUNTIF(G:G,"${email}")`;
|
||||
|
|
|
|||
Loading…
Reference in New Issue