I'm working on docker images for easy deployment and could use some advice

Was surprised to see that this hasn’t been discussed before in this community. I think installation will be a lot easier for people if it can be run in docker containers, so I’m exploring a few base images that this can be built on. I have made some progress so far. In the meantime, I just wanted to ask if the installation guide is up-to-date?

Few things I needed clarity on:

  1. It says “Caution: there was a bug with debian/ubuntu higher than apache 2.4.54”. Is this still the case? I did not find any information about what the bug actually is. So, is 2.4.54 the recommended version at the moment?
  2. It says “If you wish to use the real time notification capability or any CTI integration, you will need NodeJS”. Which version of NodeJS is recommended? Is the latest LTS version (v20.18.0) fine? Is there anything else to do after building the application and running npm serve?
  3. From Apache, is there any URL that needs to reverse proxy to the frontend?

Any advice is appreciated.

  1. Bug Apache should not longer be a problem but you never know.
    Installation guide is up-to-date
  2. Yes, Node latest LTS 20.18.0 will do. But you will need the spicert application which is only available with SpiceCRM more edition
  3. no
1 Like

Few more questions:

I installed SpiceCRM sucessfully using Apache 2.4.54, PHP 8.2.25, MySQL 8.0.40, ElasticSearch 8.15.3. Post installation, I am getting some errors when trying to install the core package.

{"error":{"message":"Failed to load packages core","errorCode":"packageLoadFailed","details":[{"scope":"dictionary","name":"Shop","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"SpiceImport","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"SpiceImportTemplate","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"SpiceText","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"AccountBankAccount","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"SchedulerJobTask","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"AccountCCDetail","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"AccountKPI","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"Account","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"Task","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"SystemHolidayCalendarDay","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"SystemHolidayCalendar","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"AccountVATID","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"Address","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"UserAbsence","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"Agreement","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"CallAttempt","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"spiceurls","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"UserQuota","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"Call","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"ContactCCDetail","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"ContactsOnlineProfile","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"DashboardSet","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"CompanyCode","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"CompanyFiscalPeriod","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"Contact","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"accounts_contacts","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"CostCenter","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"DashboardComponent","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"Dashboard","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"sysgdprretentions","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"PersonalActivity","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"spicenotes","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"syscategorytreenodes","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"Folder","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"Letter","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"ServiceCalendar","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"MediaCategory","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"MediaFile","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"Meeting","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"Note","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"OrgChart","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"OrgUnit","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"OutputTemplate","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"ServiceCalendarTime","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"Resource","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"},{"scope":"dictionary","name":"SchedulerJob","mismatch":null,"message":"DomainDefinition for id 3035d8dc-4d9e-9160-6a00-4eca67d06ba6 no found"}],"line":299,"file":"\/var\/www\/html\/api\/include\/SpiceUI\/SpiceUIConfLoader.php","trace":"#0 \/var\/www\/html\/api\/include\/SpiceUI\/SpiceUIConfLoader.php(214): SpiceCRM\\includes\\SpiceUI\\SpiceUIConfLoader->loadDefaultConf('config\/core\/*', Array, false)\n#1 \/var\/www\/html\/api\/modules\/Administration\/api\/controllers\/PackageController.php(104): SpiceCRM\\includes\\SpiceUI\\SpiceUIConfLoader->loadPackage('core', '*')\n#2 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/Handlers\/Strategies\/RequestResponse.php(38): SpiceCRM\\modules\\Administration\\api\\controllers\\PackageController->loadPackage(Object(Slim\\Psr7\\Request), Object(SpiceCRM\\includes\\SpiceSlim\\SpiceResponse), Array)\n#3 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/Routing\/Route.php(358): Slim\\Handlers\\Strategies\\RequestResponse->__invoke(Array, Object(Slim\\Psr7\\Request), Object(SpiceCRM\\includes\\SpiceSlim\\SpiceResponse), Array)\n#4 \/var\/www\/html\/api\/include\/Middleware\/AdminOnlyAccessMiddleware.php(15): Slim\\Routing\\Route->handle(Object(Slim\\Psr7\\Request))\n#5 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/MiddlewareDispatcher.php(168): SpiceCRM\\includes\\Middleware\\AdminOnlyAccessMiddleware->__invoke(Object(Slim\\Psr7\\Request), Object(Slim\\Routing\\Route))\n#6 \/var\/www\/html\/api\/include\/Middleware\/ValidationMiddleware.php(72): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle(Object(Slim\\Psr7\\Request))\n#7 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/MiddlewareDispatcher.php(168): SpiceCRM\\includes\\Middleware\\ValidationMiddleware->__invoke(Object(Slim\\Psr7\\Request), Object(Psr\\Http\\Server\\RequestHandlerInterface@anonymous))\n#8 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/MiddlewareDispatcher.php(65): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle(Object(Slim\\Psr7\\Request))\n#9 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/MiddlewareDispatcher.php(65): Slim\\MiddlewareDispatcher->handle(Object(Slim\\Psr7\\Request))\n#10 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/Routing\/Route.php(315): Slim\\MiddlewareDispatcher->handle(Object(Slim\\Psr7\\Request))\n#11 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/Routing\/RouteRunner.php(68): Slim\\Routing\\Route->run(Object(Slim\\Psr7\\Request))\n#12 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/Middleware\/BodyParsingMiddleware.php(64): Slim\\Routing\\RouteRunner->handle(Object(Slim\\Psr7\\Request))\n#13 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/MiddlewareDispatcher.php(121): Slim\\Middleware\\BodyParsingMiddleware->process(Object(Slim\\Psr7\\Request), Object(Slim\\Routing\\RouteRunner))\n#14 \/var\/www\/html\/api\/include\/Middleware\/DeveloperMiddleware.php(20): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle(Object(Slim\\Psr7\\Request))\n#15 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/MiddlewareDispatcher.php(168): SpiceCRM\\includes\\Middleware\\DeveloperMiddleware->__invoke(Object(Slim\\Psr7\\Request), Object(Psr\\Http\\Server\\RequestHandlerInterface@anonymous))\n#16 \/var\/www\/html\/api\/include\/Middleware\/TransactionMiddleware.php(22): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle(Object(Slim\\Psr7\\Request))\n#17 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/MiddlewareDispatcher.php(168): SpiceCRM\\includes\\Middleware\\TransactionMiddleware->__invoke(Object(Slim\\Psr7\\Request), Object(Psr\\Http\\Server\\RequestHandlerInterface@anonymous))\n#18 \/var\/www\/html\/api\/include\/RESTManager.php(145): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle(Object(Slim\\Psr7\\Request))\n#19 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/MiddlewareDispatcher.php(269): SpiceCRM\\includes\\RESTManager->SpiceCRM\\includes\\{closure}(Object(Slim\\Psr7\\Request), Object(Psr\\Http\\Server\\RequestHandlerInterface@anonymous))\n#20 \/var\/www\/html\/api\/include\/Middleware\/ErrorMiddleware.php(21): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle(Object(Slim\\Psr7\\Request))\n#21 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/MiddlewareDispatcher.php(168): SpiceCRM\\includes\\Middleware\\ErrorMiddleware->__invoke(Object(Slim\\Psr7\\Request), Object(Psr\\Http\\Server\\RequestHandlerInterface@anonymous))\n#22 \/var\/www\/html\/api\/include\/Middleware\/ExceptionMiddleware.php(17): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle(Object(Slim\\Psr7\\Request))\n#23 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/MiddlewareDispatcher.php(168): SpiceCRM\\includes\\Middleware\\ExceptionMiddleware->__invoke(Object(Slim\\Psr7\\Request), Object(Psr\\Http\\Server\\RequestHandlerInterface@anonymous))\n#24 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/Middleware\/ErrorMiddleware.php(76): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle(Object(Slim\\Psr7\\Request))\n#25 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/MiddlewareDispatcher.php(121): Slim\\Middleware\\ErrorMiddleware->process(Object(Slim\\Psr7\\Request), Object(Psr\\Http\\Server\\RequestHandlerInterface@anonymous))\n#26 \/var\/www\/html\/api\/include\/Middleware\/LoggerMiddleware.php(51): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle(Object(Slim\\Psr7\\Request))\n#27 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/MiddlewareDispatcher.php(168): SpiceCRM\\includes\\Middleware\\LoggerMiddleware->__invoke(Object(Slim\\Psr7\\Request), Object(Psr\\Http\\Server\\RequestHandlerInterface@anonymous))\n#28 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/Middleware\/RoutingMiddleware.php(45): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle(Object(Slim\\Psr7\\Request))\n#29 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/MiddlewareDispatcher.php(121): Slim\\Middleware\\RoutingMiddleware->process(Object(Slim\\Psr7\\Request), Object(Psr\\Http\\Server\\RequestHandlerInterface@anonymous))\n#30 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/MiddlewareDispatcher.php(65): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle(Object(Slim\\Psr7\\Request))\n#31 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/App.php(199): Slim\\MiddlewareDispatcher->handle(Object(Slim\\Psr7\\Request))\n#32 \/var\/www\/html\/api\/vendor\/slim\/slim\/Slim\/App.php(183): Slim\\App->handle(Object(Slim\\Psr7\\Request))\n#33 \/var\/www\/html\/api\/index.php(121): Slim\\App->run()\n#34 {main}"}}

I tried it again after a reinstall and still getting the same error.

Update #1: Just found this comment so I’m checking out the release_202303001 branch for testing.