feat(prod): remove hardcoded credentials, clean environment config, and prepare for production deployment

This commit is contained in:
rafif committed 2026-07-29 15:05:56 +07:00
1 parent f0876face0
commit d7fa520030
98 files changed
+4317 -794

No files matched your search

+6 -3
View File
@@ -33,11 +33,14 @@ const LOCAL_ROOT = path.resolve(__dirname, '..');
// Files/dirs to upload (relative to LOCAL_ROOT)
// These are the minimum required for production deployment
const UPLOAD_MANIFEST = [
// Next.js standalone build output
{ local: '.next/standalone', remote: '.next/standalone', type: 'dir' },
// Next.js standalone server build output (entire .next folder with manifests and server files)
{ local: '.next/standalone/.next', remote: '.next/standalone/.next', type: 'dir' },
// Next.js static assets and chunks (CRITICAL to prevent 404 chunk errors)
{ local: '.next/static', remote: '.next/static', type: 'dir' },
// Public assets (images, icons)
{ local: 'public', remote: 'public', type: 'dir' },
{ local: 'public/api/uploads', remote: 'api/uploads', type: 'dir' },
// Backend API server
{ local: 'backend/server.js', remote: 'backend/server.js', type: 'file' },
+1 -1
View File
@@ -4,7 +4,7 @@ const { MongoClient } = require('mongodb');
const fs = require('fs');
const path = require('path');
const REMOTE_URI = 'mongodb://backone_user:SusuKudaLiar@103.80.237.29:27017/backone_dpi?authSource=backone_dpi';
const REMOTE_URI = process.env.MONGODB_URI || 'mongodb://127.0.0.1:27017/backone_dpi';
const DB_NAME = 'backone_dpi';
const DATA_DIR = __dirname;
+1 -1
View File
@@ -6,7 +6,7 @@ const { MongoClient } = require('mongodb');
const path = require('path');
const LOCAL_URI = 'mongodb://127.0.0.1:27017';
const REMOTE_URI = 'mongodb://backone_user:SusuKudaLiar@mongodb.prod.proit.id:27017/backone_dpi?authSource=backone_dpi';
const REMOTE_URI = process.env.MONGODB_URI || 'mongodb://127.0.0.1:27017/backone_dpi';
const DB_NAME = 'backone_dpi';
async function migrate() {
+36
View File
@@ -0,0 +1,36 @@
// scripts/prune-production-cumulative.js
const mongoose = require('mongoose');
const MONGODB_URI = process.env.MONGODB_URI || "mongodb://127.0.0.1:27017/backone_dpi";
async function run() {
console.log('Connecting to Production MongoDB...');
await mongoose.connect(MONGODB_URI);
console.log('Connected.');
const db = mongoose.connection.db;
// We want to delete summaries and telemetry documents created before today at 18:40 WIB (11:40 UTC)
const cutOffDate = new Date('2026-07-23T11:40:00.000Z');
console.log('Pruning data before:', cutOffDate);
const collections = ['summaries', 'appstats', 'protocolstats', 'devicestats'];
for (const collName of collections) {
const countBefore = await db.collection(collName).countDocuments({});
console.log(`[${collName}] Count before prune:`, countBefore);
const deleteRes = await db.collection(collName).deleteMany({
timestamp: { $lt: cutOffDate }
});
console.log(`[${collName}] Deleted:`, deleteRes.deletedCount);
const countAfter = await db.collection(collName).countDocuments({});
console.log(`[${collName}] Count after prune:`, countAfter);
}
await mongoose.disconnect();
console.log('✓ Pruning complete!');
}
run().catch(console.error);
+4 -4
View File
@@ -12,10 +12,10 @@ const https = require('https');
const http = require('http');
const CONFIG = {
host: '103.185.47.52',
port: 2222,
username: 'adminbackend',
password: 'htEo7x6LsBQiEHHH',
host: process.env.SSH_HOST || '127.0.0.1',
port: parseInt(process.env.SSH_PORT || '2222'),
username: process.env.SSH_USER || 'adminbackend',
password: process.env.SSH_PASSWORD || '',
};
const ROOT = '/home/adminbackend/web/demoplace.my.id/public_html';