import { i18n } from './i18n' import { sdk } from './sdk' import { uiPort } from './utils' import { electrumPort, mainHostId } from 'fulcrum-startos/startos/utils' import { store } from './file-models/store.json' export const main = sdk.setupMain(async ({ effects }) => { console.info(i18n('Starting Munin Bitcoin!')) const fulcrumAddress = await sdk.host .getBridgeAddress(effects, { packageId: 'fulcrum', hostId: mainHostId, internalPort: electrumPort, ssl: false, }) .const() const credentials = await store.read().const(effects) return sdk.Daemons.of(effects).addDaemon('primary', { subcontainer: sdk.SubContainer.of( effects, { imageId: 'munin-bitcoin' }, sdk.Mounts.of().mountVolume({ volumeId: 'main', subpath: null, mountpoint: '/data', readonly: false, }), 'munin-bitcoin-sub', ), exec: { command: ['munin-bitcoin'], env: { ...(fulcrumAddress ? { MUNIN_FULCRUM_URL: `tcp://${fulcrumAddress}`, } : {}), ...(credentials?.adminPassword ? { MUNIN_ADMIN_PASSWORD: credentials.adminPassword, } : {}), }, }, ready: { display: i18n('Web Interface'), fn: () => sdk.healthCheck.checkPortListening(effects, uiPort, { successMessage: i18n('The web interface is ready'), errorMessage: i18n('The web interface is not ready'), }), }, requires: [], }) })