Files
munin-bitcoin/startos/main.ts
T

59 lines
1.5 KiB
TypeScript

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: [],
})
})