Some very basic questions!

Hi, I am in the process of installing Ketty to experiment with and wanted to check some basic settings. In DEPLOY.md there are several settings of which I am uncertain:

    environment:
      - SERVER_URL=${SERVER_URL}

← is this the URL to the host/port on which ketty will be made available?

      - WEBSOCKET_SERVER_URL=${WEBSOCKET_SERVER_URL}

← Which server is this a reference to? The docker host?

  server:
    ...
    environment:
    ...
      - SERVER_URL=${SERVER_URL}

← Same as above, I assume?

      - WEBSOCKET_SERVER_URL=${WEBSOCKET_SERVER_URL}

← Same as above?

      - CLIENT_URL=${CLIENT_URL}

← Not sure what this is?

      ...
      - WS_HEARTBEAT_INTERVAL=${WS_HEARTBEAT_INTERVAL}
      - FAIL_SAFE_UNLOCKING_INTERVAL=${FAIL_SAFE_UNLOCKING_INTERVAL}

← This seems to use local env vars. Can they be left blank to apply defaults? The docs do say that they are optional.

      - MAILER_USER=${MAILER_USER}
      - MAILER_PASSWORD=${MAILER_PASSWORD}
      - MAILER_SENDER=${MAILER_SENDER}
      - MAILER_HOSTNAME=${MAILER_HOSTNAME}

← For testing can these be left empty, or must they be defined?

- S3_PROTOCOL=${S3_PROTOCOL} ← What are the supported values here? TCP?

      - S3_HOST=${S3_HOST}
      - S3_PORT=${S3_PORT}

← Are host/port just the AWS regional server?

    ...
      - SERVICE_EPUB_CHECKER_CLIENT_ID=${SERVICE_EPUB_CHECKER_CLIENT_ID}
      - SERVICE_EPUB_CHECKER_SECRET=${SERVICE_EPUB_CHECKER_SECRET}
      - SERVICE_EPUB_CHECKER_URL=${SERVICE_EPUB_CHECKER_URL}
      - SERVICE_PAGEDJS_CLIENT_ID=${SERVICE_PAGEDJS_CLIENT_ID}
      - SERVICE_PAGEDJS_SECRET=${SERVICE_PAGEDJS_SECRET}
      - SERVICE_PAGEDJS_URL=${SERVICE_PAGEDJS_URL}
      - SERVICE_XSWEET_CLIENT_ID=${SERVICE_XSWEET_CLIENT_ID}
      - SERVICE_XSWEET_SECRET=${SERVICE_XSWEET_SECRET}
      - SERVICE_XSWEET_URL=${SERVICE_XSWEET_URL}

← The above all come from yarn create:client, which I think I need to execute in the containers after starting the micrososervices. But the microservices each requite PUBSWEET_SECRET – which does not seem to be exaplined anywhere?

      - TEMP_DIRECTORY_CRON_JOB_SCHEDULE=${TEMP_DIRECTORY_CRON_JOB_TIMING}
      - TEMP_DIRECTORY_CRON_JOB_OFFSET=${TEMP_DIRECTORY_CRON_JOB_OFFSET}
      - TEMP_DIRECTORY_CLEAN_UP=${TEMP_DIRECTORY_CLEAN_UP:-true}

← As above, leaving these blank will result in detaults, I assume?


Also, the pubsweet micrsorvice has the following settings:

SERVER_PORT
SERVER_HOST
SERVER_PROTOCOL

Are these for the Ketty server, or something else? And…is the protocol TCP or something else?

Thanks. Any many apologies if if missed this in one of the docs!

Welcome @pjw ! Very good detail, a perfect first post :slight_smile:

Hi there @pjw

are you trying to install ketty locally? In this case i would recommend trying the Ketty Development Kit. It’s a setup that brings together several repos, like the server, ketty client (which is the latest version of ketty) and editoria (also known as the vanilla client, ketty’s legacy version). After the setup you can choose which version you want to run, and assuming you want to try the latest version, you’ll do docker-compose up. In the docker-compose.yml file you’ll also find some default values for the env vars that you were asking, but I’ll also provide a quick run down of what they are used for.

  • SERVER_URL: The url (including port), where the server can be found. This is necessary for implementing callbacks from external services
  • WEBSOCKET_SERVER_URL: The url (including port) where the websocket server can be found. The websocket server currently exists for handling locks, i.e. to know when a user is editing a chapter so that other users cannot edit it.
  • CLIENT_URL: The url that the client can be found at. This exists for two reasons: (a) to whitelist the client url at the CORS configuration, so that we don’t run into cross-origin errors in the browser and (b) to construct links that could eg. be constructed on the server, but shown in an email
  • WS_HEARTBEAT_INTERVAL: How often the heartbeat event for the lock-related socket connections will be happening
  • FAIL_SAFE_UNLOCKING_INTERVAL:How often the server should check for expired locks that might need to be cleaned up
  • MAILER_*** variables: these can be left empty, but you will have trouble signing up with new users and verifying their accounts. I would recommend using a free service like https://ethereal.email/ to get some credentials and “receive” emails as a link in the terminal where you’re running the app
  • S3_PROTOCOL, S3_HOTS, S3_PORT: the location of your s3 compatible server, protocol is http or https
  • the SERVICE_*** vars are location and authentication credentials of the microservices
  • PUBSWEET_SECRET: The secret used for signing and verifying jwt tokens
  • TEMP_DIRECTORY_CLEAN_UP: Whether or not to periodically clean up the temp directory of any potential leftover files
  • TEMP_DIRECTORY_CRON_JOB_SCHEDULE: A valid cron value that specifies how often the temp directory should run
  • TEMP_DIRECTORY_CRON_JOB_OFFSET: The minimum amount of time (in milliseconds) a file should exist before being cleaned up
  • SERVER_PROTOCOL, SERVER_HOST and SERVER_PORT are the parts of the server url, as in http://localhost:3000

I hope this provides a clear overview and helps you set up the system! Let me know if you have more questions.

Grigor

Hi @grgml ! Thanks for the informative reply; I am back on this now and have one question:

When I run docker-compose -f docker-compose.production.yml pagedjs up -d for the pagesjs microservice (and, iirc, one other) I get several warnings. Should I worry?

[3/4] Linking dependencies...
warning "@coko/server > apollo-server-express@2.19.0" has unmet peer dependency "graphql@^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/server > graphql-middleware@4.0.2" has unmet peer dependency "graphql@^0.12.0 || ^0.13.0 || ^14.0.0".
warning "@coko/server > graphql-shield@7.6.5" has unmet peer dependency "graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0".
warning "@coko/server > graphql-subscriptions@1.2.1" has unmet peer dependency "graphql@^0.10.5 || ^0.11.3 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/server > graphql-upload@13.0.0" has unmet peer dependency "graphql@0.13.1 - 16".
warning "@coko/server > objection@2.2.18" has unmet peer dependency "knex@<0.95.0".
warning "@coko/server > pubsweet-server@13.12.11" has unmet peer dependency "@pubsweet/model-user@>=5.0.0".
warning "@coko/server > apollo-server-express > apollo-server-core@2.19.0" has unmet peer dependency "graphql@^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/server > apollo-server-express > apollo-server-types@0.6.1" has unmet peer dependency "graphql@^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/server > apollo-server-express > graphql-subscriptions@1.1.0" has unmet peer dependency "graphql@^0.10.5 || ^0.11.3 || ^0.12.0 || ^0.13.0 || ^14.0.0".
warning "@coko/server > apollo-server-express > graphql-tools@4.0.8" has unmet peer dependency "graphql@^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/server > apollo-server-express > subscriptions-transport-ws@0.9.18" has unmet peer dependency "graphql@>=0.10.0".
warning "@coko/server > pubsweet > pubsweet-server@13.12.8" has unmet peer dependency "@pubsweet/model-user@>=5.0.0".
warning "@coko/server > apollo-server-express > apollo-server-core > apollo-cache-control@0.11.4" has unmet peer dependency "graphql@^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/server > apollo-server-express > apollo-server-core > apollo-graphql@0.6.0" has unmet peer dependency "graphql@^14.2.1 || ^15.0.0".
warning "@coko/server > apollo-server-express > apollo-server-core > apollo-server-errors@2.4.2" has unmet peer dependency "graphql@^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/server > apollo-server-express > apollo-server-core > apollo-server-plugin-base@0.10.2" has unmet peer dependency "graphql@^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/server > apollo-server-express > apollo-server-core > apollo-tracing@0.12.0" has unmet peer dependency "graphql@^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/server > apollo-server-express > apollo-server-core > graphql-extensions@0.12.6" has unmet peer dependency "graphql@^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/server > apollo-server-express > apollo-server-core > graphql-tag@2.11.0" has unmet peer dependency "graphql@^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/server > apollo-server-express > apollo-server-core > graphql-upload@8.1.0" has unmet peer dependency "graphql@0.13.1 - 14".
warning "@coko/server > apollo-server-express > graphql-tools > apollo-link@1.2.14" has unmet peer dependency "graphql@^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/server > apollo-server-express > graphql-tools > apollo-utilities@1.3.4" has unmet peer dependency "graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/server > pubsweet-server > graphql-postgres-subscriptions > graphql-subscriptions@0.5.8" has incorrect peer dependency "graphql@^0.10.5 || ^0.11.3 || ^0.12.0 || ^0.13.0".
warning "@coko/lint > eslint-config-standard@16.0.3" has incorrect peer dependency "eslint@^7.12.1".
warning "@coko/lint > eslint-config-standard@16.0.3" has incorrect peer dependency "eslint-plugin-promise@^4.2.1 || ^5.0.0".
warning "@coko/lint > eslint-config-standard-react@11.0.1" has incorrect peer dependency "eslint@^7.12.1".
warning "@coko/lint > postcss-scss@4.0.6" has unmet peer dependency "postcss@^8.4.19".
warning "@coko/lint > eslint-plugin-jest > @typescript-eslint/utils > @typescript-eslint/typescript-estree > tsutils@3.21.0" has unmet peer dependency "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta".

Also, when building ketty client, there are a lot of warnings:

[1/4] Resolving packages...
warning Resolution field "@storybook/addon-essentials@6.4.9" is incompatible with requested version "@storybook/addon-essentials@^6.5.10"
warning Resolution field "@storybook/builder-webpack5@6.4.9" is incompatible with requested version "@storybook/builder-webpack5@^6.5.10"
warning Resolution field "@storybook/manager-webpack5@6.4.9" is incompatible with requested version "@storybook/manager-webpack5@^6.5.10"
warning Resolution field "@storybook/react@6.4.9" is incompatible with requested version "@storybook/react@^6.5.10"
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning " > @storybook/addon-essentials@6.4.9" has unmet peer dependency "@babel/core@^7.9.6".
warning " > @storybook/addon-essentials@6.4.9" has unmet peer dependency "babel-loader@^8.0.0".
warning "@storybook/addon-essentials > @storybook/addons@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/addon-essentials > @storybook/api@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/builder-webpack5 > @storybook/components@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/builder-webpack5 > @storybook/theming@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/builder-webpack5 > @storybook/core-common@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/builder-webpack5 > @storybook/store@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/addon-essentials > @storybook/addon-docs > @storybook/builder-webpack4@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/react > @storybook/core@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/builder-webpack5 > @storybook/preview-web@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/addon-essentials > @storybook/addon-docs > @storybook/source-loader@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/addon-essentials > @storybook/addon-docs > react-element-to-jsx-string@14.3.4" has unmet peer dependency "react-dom@^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1".
warning "@storybook/builder-webpack5 > @storybook/router@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/addon-essentials > @storybook/addon-actions > @storybook/components > react-colorful@5.6.1" has unmet peer dependency "react-dom@>=16.8.0".
warning "@storybook/addon-essentials > @storybook/addon-actions > @storybook/components > react-popper-tooltip@3.1.1" has unmet peer dependency "react-dom@^16.6.0 || ^17.0.0".
warning "@storybook/builder-webpack5 > fork-ts-checker-webpack-plugin@6.5.3" has unmet peer dependency "typescript@>= 2.7".
warning "@storybook/builder-webpack5 > @storybook/client-api@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/manager-webpack5 > @storybook/ui@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/manager-webpack5 > @storybook/core-client@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/addon-essentials > @storybook/addon-docs > @storybook/core > @storybook/core-server@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/addon-essentials > @storybook/addons > @storybook/router > react-router-dom@6.11.0" has unmet peer dependency "react-dom@>=16.8".
warning "@storybook/addon-essentials > @storybook/addon-actions > @storybook/components > react-popper-tooltip > react-popper@2.3.0" has unmet peer dependency "react-dom@^16.8.0 || ^17 || ^18".
warning "@storybook/addon-essentials > @storybook/addon-docs > @storybook/builder-webpack4 > @storybook/ui > react-draggable@4.4.5" has unmet peer dependency "react-dom@>= 16.3.0".
warning "@storybook/addon-essentials > @storybook/addon-docs > @storybook/builder-webpack4 > @storybook/ui > react-helmet-async@1.3.0" has unmet peer dependency "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0".
warning "@storybook/addon-essentials > @storybook/addon-docs > @storybook/core > @storybook/core-server > @storybook/manager-webpack4@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning " > @storybook/builder-webpack5@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning " > @storybook/manager-webpack5@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning " > @storybook/react@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/react > @babel/preset-flow@7.21.4" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@storybook/react > @storybook/react-docgen-typescript-plugin@1.0.2-canary.253f8c1.0" has unmet peer dependency "typescript@>= 3.x".
warning "@storybook/react > babel-plugin-named-asset-import@0.3.8" has unmet peer dependency "@babel/core@^7.1.0".
warning "@storybook/react > @babel/preset-flow > @babel/plugin-transform-flow-strip-types@7.21.0" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@storybook/react > @storybook/react-docgen-typescript-plugin > react-docgen-typescript@2.2.2" has unmet peer dependency "typescript@>= 4.3.x".
warning "@storybook/react > @babel/preset-flow > @babel/plugin-transform-flow-strip-types > @babel/plugin-syntax-flow@7.21.4" has unmet peer dependency "@babel/core@^7.0.0-0".
warning " > antd@5.6.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @ant-design/cssinjs@1.17.0" has unmet peer dependency "react-dom@>=16.0.0".
warning " > @ant-design/icons@5.2.6" has unmet peer dependency "react-dom@>=16.0.0".
warning "antd > @rc-component/color-picker@1.2.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/mutate-observer@1.1.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/tour@1.8.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/trigger@1.15.6" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-cascader@3.12.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-checkbox@3.0.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-collapse@3.7.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-dialog@9.1.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-drawer@6.2.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-dropdown@4.1.0" has unmet peer dependency "react-dom@>=16.11.0".
warning "antd > rc-field-form@1.32.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-image@5.17.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-input@1.0.4" has unmet peer dependency "react-dom@>=16.0.0".
warning "antd > rc-input-number@7.4.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-mentions@2.3.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-menu@9.9.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-motion@2.9.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-notification@5.0.5" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-pagination@3.5.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-picker@3.8.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-progress@3.4.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-rate@2.12.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-resize-observer@1.3.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-segmented@2.2.2" has unmet peer dependency "react-dom@>=16.0.0".
warning "antd > rc-select@14.5.2" has unmet peer dependency "react-dom@*".
warning "antd > rc-slider@10.1.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-steps@6.0.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-switch@4.1.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-table@7.32.3" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-tabs@12.7.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-textarea@1.2.3" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-tooltip@6.0.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-tree@5.7.10" has unmet peer dependency "react-dom@*".
warning "antd > rc-tree-select@5.9.0" has unmet peer dependency "react-dom@*".
warning "antd > rc-upload@4.3.4" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-util@5.37.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/color-picker > rc-util@5.30.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/tour > @rc-component/portal@1.1.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/tour > @rc-component/trigger@1.10.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/trigger > rc-align@4.0.15" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/trigger > rc-motion@2.7.3" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-cascader > rc-tree@5.7.3" has unmet peer dependency "react-dom@*".
warning "antd > rc-drawer > @rc-component/portal@1.1.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-menu > rc-overflow@1.3.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-select > rc-virtual-list@3.10.7" has unmet peer dependency "react-dom@*".
warning "antd > rc-table > @rc-component/context@1.4.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-tabs > rc-resize-observer@1.0.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-cascader > rc-tree > rc-virtual-list@3.4.13" has unmet peer dependency "react-dom@*".
warning " > @apollo/client@3.7.13" has unmet peer dependency "graphql@^14.0.0 || ^15.0.0 || ^16.0.0".
warning "@apollo/client > @graphql-typed-document-node/core@3.2.0" has unmet peer dependency "graphql@^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0".
warning "@apollo/client > graphql-tag@2.12.6" has unmet peer dependency "graphql@^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0".
warning " > react-beautiful-dnd@13.1.1" has unmet peer dependency "react-dom@^16.8.5 || ^17.0.0 || ^18.0.0".
warning " > styled-components@5.3.10" has unmet peer dependency "react-dom@>= 16.8.0".
warning " > styled-components@5.3.10" has unmet peer dependency "react-is@>= 16.8.0".
warning "@coko/client > subscriptions-transport-ws@0.9.19" has unmet peer dependency "graphql@>=0.10.0".
warning "@coko/client > ts-loader@8.4.0" has unmet peer dependency "typescript@*".
warning "@coko/client > apollo-upload-client > apollo-link@1.2.14" has unmet peer dependency "graphql@^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/client > apollo-upload-client > apollo-link-http-common@0.2.16" has unmet peer dependency "graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/client > @pubsweet/client > @pubsweet/ui > react-tag-autocomplete@5.13.1" has incorrect peer dependency "react@^15.0.0 || ^16.0.0".
warning "@coko/client > @pubsweet/client > @pubsweet/ui > react-tag-autocomplete@5.13.1" has incorrect peer dependency "react-dom@^15.0.0 || ^16.0.0".
warning "@coko/client > @pubsweet/client > @pubsweet/ui > recompose@0.30.0" has incorrect peer dependency "react@^0.14.0 || ^15.0.0 || ^16.0.0".
warning "@coko/client > apollo-upload-client > apollo-link > apollo-utilities@1.3.4" has unmet peer dependency "graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/client > @pubsweet/client > @pubsweet/ui > formik > create-react-context@0.2.3" has incorrect peer dependency "react@^0.14.0 || ^15.0.0 || ^16.0.0".
warning " > react-use-websocket@4.3.1" has incorrect peer dependency "react@>= 18.0.0".
warning " > react-use-websocket@4.3.1" has unmet peer dependency "react-dom@>= 18.0.0".
warning " > wax-prosemirror-core@0.9.10" has unmet peer dependency "i18next@^23.6.0".
warning " > wax-prosemirror-core@0.9.10" has unmet peer dependency "react-dom@^17.0.2".
warning "wax-prosemirror-core > react-i18next@13.3.1" has unmet peer dependency "i18next@>= 23.2.3".
warning " > wax-prosemirror-services@0.9.10" has unmet peer dependency "i18next@^23.6.0".
warning " > wax-prosemirror-services@0.9.10" has unmet peer dependency "react-dom@^17.0.2".
warning "wax-prosemirror-services > rc-switch@3.2.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "wax-prosemirror-services > react-dropdown@1.11.0" has unmet peer dependency "react-dom@^0.14.7 || ^15.0.0-0 || ^16.0.0 || ^17.0.0|| ^18.0.0".
warning " > wax-table-service@0.9.10" has unmet peer dependency "i18next@^23.6.0".
warning " > wax-table-service@0.9.10" has unmet peer dependency "react-dom@^17.0.2".
warning "@coko/lint > eslint-config-standard@16.0.3" has incorrect peer dependency "eslint@^7.12.1".
warning "@coko/lint > eslint-config-standard@16.0.3" has incorrect peer dependency "eslint-plugin-promise@^4.2.1 || ^5.0.0".
warning "@coko/lint > eslint-config-standard-react@11.0.1" has incorrect peer dependency "eslint@^7.12.1".
warning "@coko/lint > eslint-plugin-jest > @typescript-eslint/utils > @typescript-eslint/typescript-estree > tsutils@3.21.0" has unmet peer dependency "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta".
warning "@coko/storybook > antd-theme-webpack-plugin@1.3.9" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".

(all of the above are done with docker-compose -f docker-compose.production.yml up -d)

Are these problems with my local node installation, or a problem with the build process?

Final one:

I note that the docker-compose.production.yml file uses nginx, but the image build process does not include nginx.

(I can’t edit the above: need to add that it is in relation to building the client)

And this is the final one for now…any pointers or suggestions for any of the above would be very welcome!

These are all done from the repo copies, with env vars at end of this message, and variation for each server as noted.

From ketty server logs:

Node.js v18.18.2
+ node_modules/.bin/coko-server migrate
+ node scripts/runners/createGlobalTeams.js
Seeding global teams...
Global team "productionEditor" already exists
Global team "admin" already exists
+ node scripts/runners/createAdmin.js
### CREATING ADMIN USER ###
>>> checking if admin user with provided email and username already exists...
>>> an admin user already exists with that credentials in the system
+ node scripts/runners/createApplicationParameters.js
truncate table application parameter
New Application Parameter created: "VANILLA"
New Application Parameter created: [{"title":"Upload","type":"upload"},{"title":"File Prep","type":"file_prep"},{"title":"Edit","type":"edit"},{"title":"Review","type":"review"},{"title":"Clean Up","type":"clean_up"},{"title":"Page Check","type":"page_check"},{"title":"Final","type":"final"}]
New Application Parameter created: [{"name":"Frontmatter","showNumberBeforeComponents":[],"allowedComponentTypes":[{"value":"component","title":"Component","predefined":true,"visibleInHeader":true},{"value":"introduction","title":"Introduction","predefined":true,"visibleInHeader":false},{"value":"preface","title":"Preface","predefined":true,"visibleInHeader":false},{"value":"halftitle","title":"Half Title","predefined":true,"visibleInHeader":false},{"value":"titlepage","title":"Title Page","predefined":true,"visibleInHeader":false},{"value":"cover","title":"Cover","predefined":true,"visibleInHeader":false}],"defaultComponentType":"component"},{"name":"Body","showNumberBeforeComponents":["part","chapter"],"allowedComponentTypes":[{"value":"part","title":"Part","predefined":true,"visibleInHeader":true},{"value":"chapter","title":"Chapter","predefined":true,"visibleInHeader":true},{"value":"unnumbered","title":"Unnumbered","predefined":true,"visibleInHeader":true}],"defaultComponentType":"chapter"},{"name":"Backmatter","showNumberBeforeComponents":[],"allowedComponentTypes":[{"value":"component","title":"Component","predefined":true,"visibleInHeader":true},{"value":"appendix","title":"Appendix","predefined":true,"visibleInHeader":false},{"value":"endnotes","title":"notes placeholder","visibleInHeader":true,"predefined":true}],"defaultComponentType":"component"}]
New Application Parameter created: true
New Application Parameter created: false
New Application Parameter created: "10000"
+ exec node ./startServer.js
executing locks clean-up procedure
Registered component @coko/server/src/models/serviceCredential
Registered component @coko/server/src/models/user
Registered component @coko/server/src/models/identity
Registered component @coko/server/src/models/team
Registered component @coko/server/src/models/teamMember
Registered component @coko/server/src/models/file
Registered component @coko/server/src/services/chatGPT
Registered component ./models/applicationParameter
Registered component ./models/book
Registered component ./models/lock
Registered component ./models/bookCollection
Registered component ./models/bookCollectionTranslation
Registered component ./models/bookComponent
Registered component ./models/bookComponentState
Registered component ./models/bookComponentTranslation
Registered component ./models/bookSettings
Registered component ./models/invitations
Registered component ./models/bookTranslation
Registered component ./models/customTag
Registered component ./models/division
Registered component ./models/template
Registered component ./models/file
Registered component ./models/team
Registered component ./models/teamMember
Registered component ./models/user
Registered component ./models/dataloader
Registered component ./models/serviceCredential
Registered component ./models/serviceCallbackToken
Registered component ./models/exportProfile
Registered component ./api/graphql
Registered component ./api/rest
Registered server component ./api/rest

Coko server => Registering graphql middleware...
Coko server => Middleware: Registered authorization middleware

Starting HTTP server
App is listening on port 3000
Subscribing job callbacks to the job queue
Job refresh-token-expired: subscribed
/home/node/server/startServer.js:64
    throw new Error(e)
          ^

Error: SyntaxError: Unexpected end of JSON input
    at init (/home/node/server/startServer.js:64:11)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Env vars:

export THIS_HOST=<local-host-ip>

export SERVER_SERVE_CLIENT=false
export FEATURE_POD=true

export SERVER_IDENTIFIER=main_server_id

# SERVER-specific:
export KETIDA_FLAVOUR=LULU
export PUBSWEET_SECRET=server_pubsweet_secret
export ADMIN_USERNAME=admin
export ADMIN_PASSWORD=<secret>
export ADMIN_SURNAME=<surname>
export ADMIN_GIVEN_NAME=<given_name>
export ADMIN_EMAIL=<some-email>
export FEATURE_UPLOAD_DOCX_FILES=true
export FEATURE_BOOK_STRUCTURE=false


# SERVER_PROTOCOL, SERVER_HOST and SERVER_PORT are the parts of the server url, as in http://localhost:3000
SERVER_PROTOCOL=http
SERVER_HOST=${THIS_HOST}
KETTY_SERVER_PORT=3000

# This varies based on caontainer!
SERVER_PORT=${KETTY_SERVER_PORT}


# Client????
export CLIENT_PORT=4000
export CLIENT_HOST=${THIS_HOST}
export CLIENT_PROTOCOL=http

export CLIENT_URL=${CLIENT_PROTOCOL}://${CLIENT_HOST}:${CLIENT_PORT}


# The url that the client can be found at. This exists for two reasons: (a) to whitelist the client url at the CORS
# configuration, so that we don’t run into cross-origin errors in the browser and (b) to construct links that could
# eg. be constructed on the server, but shown in an email
export CLIENT_URL=


# SERVER_PROTOCOL, SERVER_HOST and SERVER_PORT are the parts of the server url, as in http://localhost:3000
export SERVER_PROTOCOL=http
export SERVER_HOST=${THIS_HOST}
export SERVER_PORT=3000

# The url (including port), where the server can be found. This is necessary for implementing callbacks from external services
export SERVER_URL=${SERVER_PROTOCOL}://${SERVER_HOST}:${SERVER_PORT}


# WEBSOCKET????
# - Port
export WS_SERVER_PORT=3333
export WS_PROTOCOL=ws
export WS_HOST=${THIS_HOST}
export WS_HEARTBEAT_INTERVAL=3000

# - URL
# The url (including port) where the websocket server can be found. The websocket server currently exists for handling
# locks, i.e. to know when a user is editing a chapter so that other users cannot edit it.
# ????
export WEBSOCKET_SERVER_URL=${WS_PROTOCOL}://${WS_HOST}:${WS_SERVER_PORT}

# DB connection
export POSTGRES_USER=ketty_prod
export POSTGRES_PASSWORD=ketty_prod
export POSTGRES_HOST=10.158.1.128
export POSTGRES_DB=ketty_prod
export POSTGRES_PORT=5432

# NODE Environment -- seems to be hard coded in places?
export NODE_ENV=production


# How often the heartbeat event for the lock-related socket connections will be happening
export WS_HEARTBEAT_INTERVAL=

# How often the server should check for expired locks that might need to be cleaned up
export FAIL_SAFE_UNLOCKING_INTERVAL=12000


# MAILER_*** variables:
# these can be left empty, but you will have trouble signing up with new users and verifying their accounts. I would
# recommend using a free service like https://ethereal.email/ to get some credentials and “receive” emails as a link
# in the terminal where you’re running the app

#MAILER_USER=${MAILER_USER}
#MAILER_PASSWORD=${MAILER_PASSWORD}
#MAILER_SENDER=${MAILER_SENDER}
#MAILER_HOSTNAME=${MAILER_HOSTNAME}

# the location of your s3 compatible server, protocol is http or https
export S3_PROTOCOL=https
export S3_HOST=<aws-s3-host-name>
export S3_PORT=443
export S3_ACCESS_KEY_ID_USER=<aws_id>
export S3_SECRET_ACCESS_KEY_USER=<aws-secret>
export S3_BUCKET=<bucket-name>

# the SERVICE_*** vars are location and authentication credentials of the microservices
# Get from each!????
export SERVICE_EPUB_CHECKER_PORT=3001
export SERVICE_EPUB_CHECKER_CLIENT_ID=<client-id-1>
export SERVICE_EPUB_CHECKER_SECRET=<secret-1>
export SERVICE_EPUB_CHECKER_URL=${SERVER_PROTOCOL}://${SERVER_HOST}:${SERVICE_EPUB_PORT}

export SERVICE_PAGEDJS_PORT=3003
export SERVICE_PAGEDJS_CLIENT_ID=<client-id-2>
export SERVICE_PAGEDJS_SECRET=<secret-2>
export SERVICE_PAGEDJS_URL=${SERVER_PROTOCOL}://${SERVER_HOST}:${SERVICE_PAGEDJS_PORT}

export SERVICE_XSWEET_PORT=3004
export SERVICE_XSWEET_CLIENT_ID=<client-id-3>
export SERVICE_XSWEET_SECRET=<secret-3>
export SERVICE_XSWEET_URL=${SERVER_PROTOCOL}://${SERVER_HOST}:${SERVICE_XSWEET_PORT}


# The secret used for signing and verifying jwt tokens
export PUBSWEET_SECRET=foobar

#  Whether or not to periodically clean up the temp directory of any potential leftover files
export TEMP_DIRECTORY_CLEAN_UP=
# A valid cron value that specifies how often the temp directory should run
export TEMP_DIRECTORY_CRON_JOB_SCHEDULE=
# The minimum amount of time (in milliseconds) a file should exist before being cleaned up
export TEMP_DIRECTORY_CRON_JOB_OFFSET=

# TODO when we see what it can do!
export AI_ENABLED=
export CHAT_GPT_KEY=

Then for each server I have (which builds on the above vars):

export SERVER_IDENTIFIER=<name>_server_id
export PUBSWEET_SECRET=<secret-for-this-server>
export SERVER_PORT=<server-port>
export PUBLIC_URL=${SERVER_PROTOCOL}://${SERVER_HOST}:${SERVER_PORT}
export SERVER_URL=${PUBLIC_URL}

OK…really my last one, I notices this in the server startup:

+ node scripts/runners/createApplicationParameters.js
[Error: ENOENT: no such file or directory, open '/home/node/server/config/termsAndConditions.md'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '/home/node/server/config/termsAndConditions.md'
}

OK…really, really my last post for a while. I notice this in a clean server startup:

server_1  | Starting HTTP server
server_1  | App is listening on port 3000
server_1  | File Storage Healthcheck: Communication to remote file service unsuccessful
server_1  | /home/node/server/node_modules/aws-sdk/lib/services/s3.js:711
server_1  |       resp.error = AWS.util.error(new Error(), {
server_1  |                                   ^
server_1  |
server_1  | NoLoggingStatusForKey: There is no such thing as the ?logging sub-resource for a key
server_1  |     at Request.extractError (/home/node/server/node_modules/aws-sdk/lib/services/s3.js:711:35)
server_1  |     at Request.callListeners (/home/node/server/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
server_1  |     at Request.emit (/home/node/server/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
server_1  |     at Request.emit (/home/node/server/node_modules/aws-sdk/lib/request.js:686:14)
server_1  |     at Request.transition (/home/node/server/node_modules/aws-sdk/lib/request.js:22:10)
server_1  |     at AcceptorStateMachine.runTo (/home/node/server/node_modules/aws-sdk/lib/state_machine.js:14:12)
server_1  |     at /home/node/server/node_modules/aws-sdk/lib/state_machine.js:26:10
server_1  |     at Request.<anonymous> (/home/node/server/node_modules/aws-sdk/lib/request.js:38:9)
server_1  |     at Request.<anonymous> (/home/node/server/node_modules/aws-sdk/lib/request.js:688:12)
server_1  |     at Request.callListeners (/home/node/server/node_modules/aws-sdk/lib/sequential_executor.js:116:18)
server_1  |     at Request.emit (/home/node/server/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
server_1  |     at Request.emit (/home/node/server/node_modules/aws-sdk/lib/request.js:686:14)
server_1  |     at Request.transition (/home/node/server/node_modules/aws-sdk/lib/request.js:22:10)
server_1  |     at AcceptorStateMachine.runTo (/home/node/server/node_modules/aws-sdk/lib/state_machine.js:14:12)
server_1  |     at /home/node/server/node_modules/aws-sdk/lib/state_machine.js:26:10
server_1  |     at Request.<anonymous> (/home/node/server/node_modules/aws-sdk/lib/request.js:38:9) {
server_1  |   code: 'NoLoggingStatusForKey',
server_1  |   region: null,
server_1  |   time: 2024-04-22T06:21:29.363Z,
server_1  |   requestId: 'C88G128NF60RT5TP',
server_1  |   extendedRequestId: '8Q1uf33kkO27JOg5QISODmSAcZUp7MdmhnqCCe0LhabIKIjt0UQ7bzq3g75NV6v40SbhwdS2r0M=',
server_1  |   cfId: undefined,
server_1  |   statusCode: 400,
server_1  |   retryable: false,
server_1  |   retryDelay: 143.85000897711043
server_1  | }

Because of all the build issues I thought I would try following this advice:

But this seems to clone the older (ketida) repos. We were hoping to test the current codebase. Looking at the logs, these repos still seem to be active, so I am confused!

I also note that the kdk has it’s own extensive collection of warnings some of which mirror the ones above:

[3/4] Linking dependencies...
warning " > @storybook/addon-essentials@6.4.9" has unmet peer dependency "@babel/core@^7.9.6".
warning " > @storybook/addon-essentials@6.4.9" has unmet peer dependency "babel-loader@^8.0.0".
warning "@storybook/addon-essentials > @storybook/addons@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/addon-essentials > @storybook/api@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/builder-webpack5 > @storybook/components@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/builder-webpack5 > @storybook/theming@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/builder-webpack5 > @storybook/core-common@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/builder-webpack5 > @storybook/store@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/addon-essentials > @storybook/addon-docs > @storybook/builder-webpack4@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/react > @storybook/core@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/builder-webpack5 > @storybook/preview-web@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/addon-essentials > @storybook/addon-docs > @storybook/source-loader@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/addon-essentials > @storybook/addon-docs > react-element-to-jsx-string@14.3.4" has unmet peer dependency "react-dom@^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1".
warning "@storybook/builder-webpack5 > @storybook/router@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/addon-essentials > @storybook/addon-actions > @storybook/components > react-colorful@5.6.1" has unmet peer dependency "react-dom@>=16.8.0".
warning "@storybook/addon-essentials > @storybook/addon-actions > @storybook/components > react-popper-tooltip@3.1.1" has unmet peer dependency "react-dom@^16.6.0 || ^17.0.0".
warning "@storybook/builder-webpack5 > fork-ts-checker-webpack-plugin@6.5.3" has unmet peer dependency "typescript@>= 2.7".
warning "@storybook/builder-webpack5 > @storybook/client-api@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/manager-webpack5 > @storybook/ui@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/manager-webpack5 > @storybook/core-client@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/addon-essentials > @storybook/addon-docs > @storybook/core > @storybook/core-server@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/addon-essentials > @storybook/addons > @storybook/router > react-router-dom@6.11.0" has unmet peer dependency "react-dom@>=16.8".
warning "@storybook/addon-essentials > @storybook/addon-actions > @storybook/components > react-popper-tooltip > react-popper@2.3.0" has unmet peer dependency "react-dom@^16.8.0 || ^17 || ^18".
warning "@storybook/addon-essentials > @storybook/addon-docs > @storybook/builder-webpack4 > @storybook/ui > react-draggable@4.4.5" has unmet peer dependency "react-dom@>= 16.3.0".
warning "@storybook/addon-essentials > @storybook/addon-docs > @storybook/builder-webpack4 > @storybook/ui > react-helmet-async@1.3.0" has unmet peer dependency "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0".
warning "@storybook/addon-essentials > @storybook/addon-docs > @storybook/core > @storybook/core-server > @storybook/manager-webpack4@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning " > @storybook/builder-webpack5@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning " > @storybook/manager-webpack5@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning " > @storybook/react@6.4.9" has unmet peer dependency "react-dom@^16.8.0 || ^17.0.0".
warning "@storybook/react > @babel/preset-flow@7.21.4" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@storybook/react > @storybook/react-docgen-typescript-plugin@1.0.2-canary.253f8c1.0" has unmet peer dependency "typescript@>= 3.x".
warning "@storybook/react > babel-plugin-named-asset-import@0.3.8" has unmet peer dependency "@babel/core@^7.1.0".
warning "@storybook/react > @babel/preset-flow > @babel/plugin-transform-flow-strip-types@7.21.0" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@storybook/react > @storybook/react-docgen-typescript-plugin > react-docgen-typescript@2.2.2" has unmet peer dependency "typescript@>= 4.3.x".
warning "@storybook/react > @babel/preset-flow > @babel/plugin-transform-flow-strip-types > @babel/plugin-syntax-flow@7.21.4" has unmet peer dependency "@babel/core@^7.0.0-0".
warning " > antd@5.6.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @ant-design/cssinjs@1.17.0" has unmet peer dependency "react-dom@>=16.0.0".
warning " > @ant-design/icons@5.2.6" has unmet peer dependency "react-dom@>=16.0.0".
warning "antd > @rc-component/color-picker@1.2.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/mutate-observer@1.1.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/tour@1.8.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/trigger@1.15.6" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-cascader@3.12.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-checkbox@3.0.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-collapse@3.7.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-dialog@9.1.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-drawer@6.2.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-dropdown@4.1.0" has unmet peer dependency "react-dom@>=16.11.0".
warning "antd > rc-field-form@1.32.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-image@5.17.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-input@1.0.4" has unmet peer dependency "react-dom@>=16.0.0".
warning "antd > rc-input-number@7.4.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-mentions@2.3.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-menu@9.9.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-motion@2.9.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-notification@5.0.5" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-pagination@3.5.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-picker@3.8.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-progress@3.4.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-rate@2.12.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-resize-observer@1.3.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-segmented@2.2.2" has unmet peer dependency "react-dom@>=16.0.0".
warning "antd > rc-select@14.5.2" has unmet peer dependency "react-dom@*".
warning "antd > rc-slider@10.1.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-steps@6.0.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-switch@4.1.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-table@7.32.3" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-tabs@12.7.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-textarea@1.2.3" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-tooltip@6.0.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-tree@5.7.10" has unmet peer dependency "react-dom@*".
warning "antd > rc-tree-select@5.9.0" has unmet peer dependency "react-dom@*".
warning "antd > rc-upload@4.3.4" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-util@5.37.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/color-picker > rc-util@5.30.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/tour > @rc-component/portal@1.1.1" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/tour > @rc-component/trigger@1.10.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/trigger > rc-align@4.0.15" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > @rc-component/trigger > rc-motion@2.7.3" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-cascader > rc-tree@5.7.3" has unmet peer dependency "react-dom@*".
warning "antd > rc-drawer > @rc-component/portal@1.1.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-menu > rc-overflow@1.3.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-select > rc-virtual-list@3.10.7" has unmet peer dependency "react-dom@*".
warning "antd > rc-table > @rc-component/context@1.4.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-tabs > rc-resize-observer@1.0.0" has unmet peer dependency "react-dom@>=16.9.0".
warning "antd > rc-cascader > rc-tree > rc-virtual-list@3.4.13" has unmet peer dependency "react-dom@*".
warning " > @apollo/client@3.7.13" has unmet peer dependency "graphql@^14.0.0 || ^15.0.0 || ^16.0.0".
warning "@apollo/client > @graphql-typed-document-node/core@3.2.0" has unmet peer dependency "graphql@^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0".
warning "@apollo/client > graphql-tag@2.12.6" has unmet peer dependency "graphql@^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0".
warning " > react-beautiful-dnd@13.1.1" has unmet peer dependency "react-dom@^16.8.5 || ^17.0.0 || ^18.0.0".
warning " > styled-components@5.3.10" has unmet peer dependency "react-dom@>= 16.8.0".
warning " > styled-components@5.3.10" has unmet peer dependency "react-is@>= 16.8.0".
warning "@coko/client > subscriptions-transport-ws@0.9.19" has unmet peer dependency "graphql@>=0.10.0".
warning "@coko/client > ts-loader@8.4.0" has unmet peer dependency "typescript@*".
warning "@coko/client > apollo-upload-client > apollo-link@1.2.14" has unmet peer dependency "graphql@^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/client > apollo-upload-client > apollo-link-http-common@0.2.16" has unmet peer dependency "graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/client > @pubsweet/client > @pubsweet/ui > react-tag-autocomplete@5.13.1" has incorrect peer dependency "react@^15.0.0 || ^16.0.0".
warning "@coko/client > @pubsweet/client > @pubsweet/ui > react-tag-autocomplete@5.13.1" has incorrect peer dependency "react-dom@^15.0.0 || ^16.0.0".
warning "@coko/client > @pubsweet/client > @pubsweet/ui > recompose@0.30.0" has incorrect peer dependency "react@^0.14.0 || ^15.0.0 || ^16.0.0".
warning "@coko/client > apollo-upload-client > apollo-link > apollo-utilities@1.3.4" has unmet peer dependency "graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0".
warning "@coko/client > @pubsweet/client > @pubsweet/ui > formik > create-react-context@0.2.3" has incorrect peer dependency "react@^0.14.0 || ^15.0.0 || ^16.0.0".
warning " > react-use-websocket@4.3.1" has incorrect peer dependency "react@>= 18.0.0".
warning " > react-use-websocket@4.3.1" has unmet peer dependency "react-dom@>= 18.0.0".
warning " > wax-prosemirror-core@0.9.10" has unmet peer dependency "i18next@^23.6.0".
warning " > wax-prosemirror-core@0.9.10" has unmet peer dependency "react-dom@^17.0.2".
warning "wax-prosemirror-core > react-i18next@13.3.1" has unmet peer dependency "i18next@>= 23.2.3".
warning " > wax-prosemirror-services@0.9.10" has unmet peer dependency "i18next@^23.6.0".
warning " > wax-prosemirror-services@0.9.10" has unmet peer dependency "react-dom@^17.0.2".
warning "wax-prosemirror-services > rc-switch@3.2.2" has unmet peer dependency "react-dom@>=16.9.0".
warning "wax-prosemirror-services > react-dropdown@1.11.0" has unmet peer dependency "react-dom@^0.14.7 || ^15.0.0-0 || ^16.0.0 || ^17.0.0|| ^18.0.0".
warning " > wax-table-service@0.9.10" has unmet peer dependency "i18next@^23.6.0".
warning " > wax-table-service@0.9.10" has unmet peer dependency "react-dom@^17.0.2".
warning "@coko/lint > eslint-config-standard@16.0.3" has incorrect peer dependency "eslint@^7.12.1".
warning "@coko/lint > eslint-config-standard@16.0.3" has incorrect peer dependency "eslint-plugin-promise@^4.2.1 || ^5.0.0".
warning "@coko/lint > eslint-config-standard-react@11.0.1" has incorrect peer dependency "eslint@^7.12.1".
warning "@coko/lint > eslint-plugin-jest > @typescript-eslint/utils > @typescript-eslint/typescript-estree > tsutils@3.21.0" has unmet peer dependency "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta".
warning "@coko/storybook > antd-theme-webpack-plugin@1.3.9" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".

And, sadly, the server seems to run into problems after startup:

Starting HTTP server
App is listening on port 3000
File Storage Healthcheck: Communication to remote file service unsuccessful
/home/node/server/node_modules/aws-sdk/lib/services/s3.js:711
      resp.error = AWS.util.error(new Error(), {
                                  ^

I fixed that in the previous attempts by providing credentials to a logged S3 bucket, but this is a local bucket setup as part of the build process, so I am less clear on the appropriate solution (although I believe this to be a non-critical error).

After this it gets to the following (which crashes the container):

Node.js v18.18.2
+ node scripts/runners/createGlobalTeams.js
Seeding global teams...
Global team "admin" already exists
+ node scripts/runners/createAdmin.js
### CREATING ADMIN USER ###
>>> checking if admin user with provided email and username already exists...
creating user
>>> admin user  with username "admin" successfully created.
+ node scripts/runners/createApplicationParameters.js
Creating new Application Parameter: false
Creating new Application Parameter: undefined
Creating new Application Parameter: "<p>By using this application, you agree to the following Terms and Conditions:</p>\n<h2>Term 1</h2>\n<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. <a href=\"dolor\">Duis aute irure</a> in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>\n<h2>Term 2</h2>\n<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>\n"
+ exec node startServer.js
executing locks clean-up procedure
/home/node/server/startServer.js:64
    throw new Error(e)
          ^

Error: Error: DBError: select "lock".* from "lock" where TIMEZONE('UTC',last_active_at) < TIMEZONE('UTC',NOW()) - INTERVAL '10.3 SECONDS' - column "last_active_at" does not exist
    at init (/home/node/server/startServer.js:64:11)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Hi @pjw

You should definitely use the KDK, all the setup that you were trying to do manually is ready for you. It will download 3 repos, the server, the legacy client and the current client, but this is not a problem because you can choose which version you want to run. In your case, docker-compose up will run the latest version, whose client code is fetched from the ketty repo.

As for the warnings, you don’t have to worry about them. The termsAndConditions.md file is a way to configure the T&Cs for the instance, and not having the file will simply lead to empty T&Cs at first, which you can later configure via the admin interface.

I’m not sure about the file storage error that you’re getting. Are you providing custom parameters for it? Try using the default ones as a start.

About the last error, it looks like your migrations didn’t run correctly. Try dropping the database and starting the server again.

I hope this helps, let me know if you’re still having trouble.

Grigor

Hi @grgml , thanks again.

A complete clean rebuild has it running locally, but I have two more questions:

  1. I can’t sugn up users using the local host postfix because it’s self-signed and I can not see how to tell it to ignore self-signed servers. I tried:

    tls: {
    rejectUnauthorized: ‘false’
    }

    in the mailer setup, but that seems to fail (I’m editing server/config/custom-environment-variables.js, so maybe that’s not the right place?

and,

  1. Is there a simple way that we can we persist data across start/stop? The KDK version clears all data on stop.

To be a bit more specific, the logs show:

[NOTIFY SERVICE] - notify: notification of type email will be sent
[NOTIFY SERVICE] - sendEmail: email will be sent to ... with subject Account Verification
::ffff:10.0.0.133 - - [30/Apr/2024:07:19:20 +0000] "POST /graphql HTTP/1.1" 200 49 "http://<IP>:4000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0"

Failed to send email Error: self-signed certificate

But the web pages reports:

Request successful!
An email has been sent to ...

Don’t bother with the TLS questions above (I can’t edit delete them). I’ve set it up to use a real email server.

The remaining question is:

Is there a simple way that we can we persist data across start/stop? The KDK version clears all data when stopped.

At this stage I am assuming that I should return to my previous efforts.

Hey @pjw , I’m not sure how you’re doing it, but the data is persisted in a postgres database and it is not supposed to be deleted after you stop the service. Just run docker-compose up and stop it by killing the process in the terminal. Do not run docker-compose down unless you really want to delete the data from the database.

Ah, thanks and sorry for the slow reply.

Does this mean that we ould just persist the data by using a persistent docker volume for the db? That would then mean up & down would work, I think.

Also…why are there three DBs and not just a single one?

Hi @pjw

Yes, theoretically that should work.

Not sure why that would happen. There should be only one db. Maybe you used different db names in your env variables, and each time it ran it created a new one?