Skip to main content

Deploy Metaverse

Deploy the Metaverse desktop to production.

Local Build

# Build production version
npm run build

# Package Electron app
npm run package:win # Windows
npm run package:mac # macOS
npm run package:linux # Linux

Production Configuration

// packages/main/src/config.ts

export const config = {
isDev: process.env.NODE_ENV !== 'production',
dbPath: process.env.DB_PATH || path.join(app.getPath('userData'), 'opentree.db'),
apiPort: 3210,
metaversePort: 5174,
autoUpdate: true,
telemetry: false,
}

Auto Launch

import { app } from 'electron'
import AutoLaunch from 'auto-launch'

const launcher = new AutoLaunch({ name: 'OpenTree' })

if (config.autoStart) {
launcher.enable()
}

Auto Update

import { autoUpdater } from 'electron-updater'

autoUpdater.checkForUpdatesAndNotify()

autoUpdater.on('update-available', () => {
// Notify user of new version
})

autoUpdater.on('update-downloaded', () => {
// Prompt user to restart and install
})

Data Backup

// Periodic backup
import { schedule } from 'node-cron'
import { copyFileSync } from 'fs'

schedule('0 3 * * *', () => {
const backupPath = path.join(backupDir, `opentree-${Date.now()}.db`)
copyFileSync(config.dbPath, backupPath)
// Clean up backups older than 7 days
})