@Danp It wasnt a VM. I dedicated a whole PC to debian and XO. But I was completely clueless as to what I was doing. I am off and running now though. Thank you
Best posts made by raider600
-
RE: Starting XO error
Latest posts made by raider600
-
RE: New install - Login screen blank
@DustinB said in New install - Login screen blank:
@raider600 said in New install - Login screen blank:
@DustinB Ive restarted a few times though no dice. It's almost like something isnt unpacking or running.
In the URL does it show /v6 at the tail end?
Im just using the ip address. no https either. So no i dont think it has a v6 at the end. but im also not 100% sure i know what you mean. lol
-
RE: New install - Login screen blank
@DustinB Ive restarted a few times though no dice. It's almost like something isnt unpacking or running.
-
RE: New install - Login screen blank
@olivierlambert Thank you. I believe I found the server logs... I dont know where to find the build logs.
Node - v22.14.0
npm - 10.9.2#!/usr/bin/env node import appConf from 'app-conf'; import execPromise from 'exec-promise'; import get from 'lodash/get.js'; import highland from 'highland'; import levelup from 'level-party'; import ndjson from 'ndjson'; import parseArgs from 'minimist'; import sublevel from 'subleveldown'; import util from 'util'; import { forEach } from './utils.mjs'; import globMatcher from './glob-matcher.mjs'; const getLogs = (db, args) => { let stream = highland(db.createReadStream({ reverse: true })); if (args.since) { stream = stream.filter(({ value }) => value.time >= args.since); } if (args.until) { stream = stream.filter(({ value }) => value.time <= args.until); } const fields = Object.keys(args.matchers); if (fields.length > 0) { stream = stream.filter(({ value }) => { for (const field of fields) { const fieldValue = get(value, field); if (!args.matchers[field](fieldValue)) { return false; } } return true; }); } return stream.take(args.limit); }; const deleteLogs = (db, args) => new Promise(resolve => { let nDeleted = 0; let nRunning = 1; const cb = () => { if (--nRunning === 0) { console.log(nDeleted.toLocaleString(), 'deleted entries'); resolve(); } }; const deleteEntry = key => { ++nDeleted; ++nRunning; db.del(key, cb); }; getLogs(db, args).each(({ key }) => { deleteEntry(key); }).done(cb); }); const GC_KEEP = 2e4; const gc = (db, args) => new Promise((resolve, reject) => { let keep = GC_KEEP; let count = 1; const cb = () => { if (--count === 0) { resolve(); } }; const stream = db.createKeyStream({ reverse: true }); const deleteEntry = key => { ++count; db.del(key, cb); }; let onData = keep !== 0 ? () => { if (--keep === 0) { stream.removeListener('data', onData); onData = deleteEntry; stream.on('data', onData); } } : deleteEntry; const onEnd = () => { console.log('end'); removeListeners(); cb(); }; const onError = error => { console.log('error'); removeListeners(); reject(error); }; const removeListeners = () => { stream.removeListener('data', onData).removeListener('end', onEnd).removeListener('error', onError); }; stream.on('data', onData).on('end', onEnd).on('error', onError); }); async function printLogs(db, args) { let stream = getLogs(db, args); if (args.json) { stream = highland(stream.pipe(ndjson.stringify())).each(value => { process.stdout.write(value); }); } else { stream = stream.each(value => { console.log(util.inspect(value, { depth: null })); }); } return new Promise(resolve => { stream.done(resolve); }); } function helper() { console.error(` xo-server-logs --help, -h Display this help message. xo-server-logs [--json] [--limit=<limit>] [--since=<date>] [--until=<date>] [<pattern>...] Prints the logs. --json Display the results as new line delimited JSON for consumption by another program. --limit=<limit>, -n <limit> Limit the number of results to be displayed (default 100) --since=<date>, --until=<date> Start showing entries on or newer than the specified date, or on or older than the specified date. <date> should use the format \`YYYY-MM-DD\`. <pattern> Patterns can be used to filter the entries. Patterns have the following format \`<field>=<value>\`, \`<field>\` or \`!<field>\`. xo-server-logs --gc Remove all but the ${GC_KEEP}th most recent log entries. xo-server-logs --delete <predicate>... Delete all logs matching the passed predicates. For more information on predicates, see the print usage. xo-server-logs --repair Repair/compact the database. This is an advanced operation and should be used only when necessary and offline (xo-server should be stopped). `); } function getArgs() { const stringArgs = ['since', 'until', 'limit']; const args = parseArgs(process.argv.slice(2), { string: stringArgs, boolean: ['delete', 'help', 'json', 'gc', 'repair'], default: { limit: 100, json: false, help: false }, alias: { limit: 'n', help: 'h' } }); const patterns = {}; for (let value of args._) { value = String(value); const i = value.indexOf('='); if (i !== -1) { const field = value.slice(0, i); const pattern = value.slice(i + 1); const fieldPatterns = patterns[field]; if (fieldPatterns === undefined) { patterns[field] = [pattern]; } else if (Array.isArray(fieldPatterns)) { fieldPatterns.push(pattern); } else { throw new Error('cannot mix existence with equality patterns'); } } else { const negate = value[0] === '!'; if (negate) { value = value.slice(1); } if (patterns[value]) { throw new Error('cannot mix existence with equality patterns'); } patterns[value] = !negate; } } const mustExists = value => value !== undefined; const mustNotExists = value => value === undefined; args.matchers = {}; for (const field in patterns) { const values = patterns[field]; args.matchers[field] = values === true ? mustExists : values === false ? mustNotExists : globMatcher(values); } forEach(stringArgs, arg => { if (args[arg] instanceof Array) { throw new Error(`error: too many values for ${arg} argument`); } }); ['since', 'until'].forEach(arg => { if (args[arg] !== undefined) { args[arg] = Date.parse(args[arg]); if (isNaN(args[arg])) { throw new Error(`error: bad ${arg} timestamp format`); } } }); if (isNaN(args.limit = +args.limit)) { throw new Error('error: limit is not a valid number'); } return args; } execPromise(async function main() { const args = getArgs(); if (args.help) { helper(); return; } const config = await appConf.load('xo-server', { appDir: new URL('..', import.meta.url).pathname, ignoreUnknownFormats: true }); if (args.repair) { const require = (await import('module')).createRequire(import.meta.url); const { repair } = require(require.resolve('level', { paths: [require.resolve('level-party')] })); await new Promise((resolve, reject) => { repair(`${config.datadir}/leveldb`, error => { if (error) { reject(error); } else { resolve(); } }); }); return; } const db = sublevel(levelup(`${config.datadir}/leveldb`, { valueEncoding: 'json' }), 'logs', { valueEncoding: 'json' }); return args.delete ? deleteLogs(db, args) : args.gc ? gc(db) : printLogs(db, args); }); //# sourceMappingURL=logs-cli.mjs.map
-
New install - Login screen blank
Hello, I installed XO from source. My login page looks like this.
My terminal window stops here and never completes. I let it sit here all night hoping it was doing something. But nothing happened. I know there is more to the process after you start it.
I have tried many times
git pull --ff-only
yarn
yarn buildrm -rf node_modules
yarn
yarn buildI nuked the other VM after the first time this happened. So this is the second clean VM and I'm stuck. It's definitely not started all the way but I don't know how to troubleshoot it. Any ideas?
-
RE: Starting XO error
@Danp It wasnt a VM. I dedicated a whole PC to debian and XO. But I was completely clueless as to what I was doing. I am off and running now though. Thank you
-
RE: Starting XO error
@Danp Oh silly me. It does work. I was expecting it to bring me back to the prompt though.
-
Starting XO error
Fresh install from source. After Yarn Start I get this and it hangs until I kill it.
yarn run v1.22.22 $ node dist/cli.mjs 2025-02-05T19:45:02.109Z xo:main INFO Configuration loaded. 2025-02-05T19:45:02.111Z xo:main INFO Web server listening on http://[::]:80 2025-02-05T19:45:02.361Z xo:mixins:hooks WARN start failure { error: Error: spawn xenstore-read ENOENT at Process.ChildProcess._handle.onexit (node:internal/child_process:286:19) at onErrorNT (node:internal/child_process:484:16) at processTicksAndRejections (node:internal/process/task_queues:90:21) { errno: -2, code: 'ENOENT', syscall: 'spawn xenstore-read', path: 'xenstore-read', spawnargs: [ 'vm' ], cmd: 'xenstore-read vm' } } 2025-02-05T19:45:02.544Z xo:main INFO Setting up /robots.txt โ /root/xen-orchestra/packages/xo-server/robots.txt 2025-02-05T19:45:02.596Z xo:main INFO Setting up / โ /root/xen-orchestra/packages/xo-web/dist 2025-02-05T19:45:02.596Z xo:main INFO Setting up /v6 โ /root/xen-orchestra/@xen-orchestra/web/dist 2025-02-05T19:45:02.597Z xo:plugin INFO register audit 2025-02-05T19:45:02.597Z xo:plugin INFO register auth-github 2025-02-05T19:45:02.598Z xo:plugin INFO register auth-google 2025-02-05T19:45:02.598Z xo:plugin INFO register auth-ldap 2025-02-05T19:45:02.598Z xo:plugin INFO register auth-oidc 2025-02-05T19:45:02.598Z xo:plugin INFO register auth-saml 2025-02-05T19:45:02.598Z xo:plugin INFO register backup-reports 2025-02-05T19:45:02.598Z xo:plugin INFO register load-balancer 2025-02-05T19:45:02.599Z xo:plugin INFO register netbox 2025-02-05T19:45:02.599Z xo:plugin INFO register perf-alert 2025-02-05T19:45:02.599Z xo:plugin INFO register sdn-controller 2025-02-05T19:45:02.599Z xo:plugin INFO register test 2025-02-05T19:45:02.599Z xo:plugin INFO register test-plugin 2025-02-05T19:45:02.599Z xo:plugin INFO register transport-email 2025-02-05T19:45:02.600Z xo:plugin INFO register transport-icinga2 2025-02-05T19:45:02.600Z xo:plugin INFO register transport-nagios 2025-02-05T19:45:02.600Z xo:plugin INFO register transport-slack 2025-02-05T19:45:02.600Z xo:plugin INFO register transport-xmpp 2025-02-05T19:45:02.600Z xo:plugin INFO register usage-report 2025-02-05T19:45:02.600Z xo:plugin INFO register web-hooks foobar 2025-02-05T19:45:02.946Z xo:plugin INFO failed register test 2025-02-05T19:45:02.946Z xo:plugin INFO Cannot read properties of undefined (reading 'default') { error: TypeError: Cannot read properties of undefined (reading 'default') at Xo.registerPlugin (file:///root/xen-orchestra/packages/xo-server/src/index.mjs:369:18) } strict mode: required property "discoveryURL" is not defined at "#/anyOf/0" (strictRequired) strict mode: missing type "object" for keyword "required" at "#/anyOf/1/properties/advanced" (strictTypes) strict mode: required property "authorizationURL" is not defined at "#/anyOf/1/properties/advanced" (strictRequired) strict mode: required property "issuer" is not defined at "#/anyOf/1/properties/advanced" (strictRequired) strict mode: required property "userInfoURL" is not defined at "#/anyOf/1/properties/advanced" (strictRequired) strict mode: required property "tokenURL" is not defined at "#/anyOf/1/properties/advanced" (strictRequired) 2025-02-05T19:45:02.997Z xo:plugin INFO successfully register auth-oidc 2025-02-05T19:45:02.997Z xo:plugin INFO successfully register auth-google 2025-02-05T19:45:02.997Z xo:plugin INFO successfully register auth-github 2025-02-05T19:45:02.997Z xo:plugin INFO successfully register auth-ldap 2025-02-05T19:45:02.997Z xo:plugin INFO successfully register auth-saml 2025-02-05T19:45:02.997Z xo:plugin INFO successfully register netbox 2025-02-05T19:45:02.997Z xo:plugin INFO successfully register test-plugin 2025-02-05T19:45:02.997Z xo:plugin INFO successfully register transport-icinga2 2025-02-05T19:45:02.997Z xo:plugin INFO successfully register transport-email 2025-02-05T19:45:02.997Z xo:plugin INFO successfully register transport-nagios 2025-02-05T19:45:02.997Z xo:plugin INFO successfully register transport-slack 2025-02-05T19:45:02.997Z xo:plugin INFO successfully register transport-xmpp 2025-02-05T19:45:02.997Z xo:plugin INFO successfully register usage-report 2025-02-05T19:45:02.997Z xo:plugin INFO successfully register web-hooks 2025-02-05T19:45:02.998Z xo:plugin INFO successfully register load-balancer 2025-02-05T19:45:02.998Z xo:plugin INFO successfully register backup-reports 2025-02-05T19:45:03.000Z xo:plugin INFO successfully register audit 2025-02-05T19:45:03.000Z xo:plugin INFO successfully register perf-alert 2025-02-05T19:45:03.004Z xo:plugin INFO successfully register sdn-controller ^C2025-02-05T19:45:09.999Z xo:main INFO SIGINT caught, closingโฆ 2025-02-05T19:45:10.002Z xo:main INFO bye :-)
I Was poking around. But havent found much.