atlassian / nucleus

A configurable and versatile update server for all your Electron apps
Other
393 stars 91 forks source link

GPG key is invalid or missing, you must provide "config.gpgSigningKey" #155

Open mdrokz opened 1 year ago

mdrokz commented 1 year ago

Hi im trying to run this on my aws server i used the docker file but i get this error GPG key is invalid or missing, you must provide "config.gpgSigningKey" .

I also tried locally with docker

i also followed the instructions here https://github.com/atlassian/nucleus/issues/37#issuecomment-391399362 to generate the GPG keys

here is my config.js

const path = require('path');

module.exports = {
  /**
   * The port to run Nucleus Server on, if the port is in use the server will not start
   */
  port: 3030,

  /**
   * The fully qualified domain + path that Nucleus is being hosted at
   */
  baseURL: 'http://localhost:8888',

  /**
   * The data store to use when persisting plugins and versions.  Current possible values
   * are "sequelize", ensure you also supply valid connection details for your
   * chosen strategy below.
   *
   * PR's welcome to add another data store.
   */
  dbStrategy: 'sequelize',

  /**
   * Sequelize connection information, please note all options are required
   *
   * database: The name of the database to connect to
   * dialect: The type of SQL database this is, check sequelize docs for more info
   * username: Username to use when connecting
   * password; Password to use when connecting
   * host: Hostname of database
   * port: Port to use when connecting
   * storage: Path to sqlite file, only used for sqlite dialect
   */
  sequelize: {
    dialect: 'sqlite',
    storage: path.resolve(__dirname, 'db.sqlite'),
  },

  /**
   * The file store to use when persisting update files and metadata.  Current possible
   * values are "s3" and "local" ensure you also supply valid connection details if
   * required for your chosen strategy below.
   *
   * PR's welcome to add another file store.
   */
  fileStrategy: 'local',

  /**
   * Local file configuration
   *
   * root: Path on disk to the root of the static file store
   * staticUrl: The HTTP url to use to access the static file store remotely
   */
  local: {
    root: path.resolve(__dirname, '.files'),
    staticUrl: 'http://localhost:9999'
  },

  /**
   * There is actually no authentication config for s3, all config must be done through the standard AWS
   * environment variables or through EC2 IAM roles.
   *
   * See http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html
   *
   * Bucket / Region / CloudFront config goes here though
   */
  s3: {
    // init: {
    //   endpoint: '' // The alternate endpoint to reach the S3 instance at,
    //   s3ForcePathStyle: true // Always use path style URLs
    // }

    bucketName: '', // The name for your S3 Bucket

    cloudfront: { // If you don't have CloudFront set up and just want to use the S3 bucket set this to "null
      distributionId: '', // The CloudFront distribution ID, used for invalidating files
      publicUrl: '', // Fully qualified URL for the root of the CloudFront proxy for the S3 bucket
    }
  },

  /**
   * The authentication strategy to use when logging users in.  Current possible values are "local",
   * "openid" and "github".  Make you also supply the required authentication details
   */
  authStrategy: 'local',

  /**
   * Local authentication details
   *
   * The `adminIdentifiers` array should be a list of usernames
   *
   * DISCLAIMER: This strategy should ONLY be used for local development and NEVER
   * used in production.  Unicorns cry every time this setting is used in production.
   * Don't make the unicorns cry.
   *
   * displayName: The user friendly name of this user
   * username: A unique identifier to use when this user signs in, please note uniqueness is
   *           not enforced
   * password: Well, uhhh, their password
   * photo: A URL for their profile, entirely optional, just makes things look nicer ;)
   */
  localAuth: [{
    displayName: 'Charlie',
    username: 'charlie',
    password: 'charlie',
    photo: 'https://pbs.twimg.com/profile_images/1219364727/charlie-support_400x400.png'
  }],

  /**
   * See the documentation for your authentication strategy for what this array does
   */
  adminIdentifiers: ['admin@yourdomain.com', 'charlie'],

  /**
   * Session options, in development just leave this as default.
   *
   * IN PRODUCTION PLEASE USE REDIS!
   *
   * type: Can be either "redis" or null
   *
   * redis:
   *   host: The host URL for the redis instance
   *   port: The port for the redis instance
   */
  sessionConfig: {
    type: null,
    secret: 'ThisIsNotSecret',

    redis: {
      host: '',
      port: ''
    }
  },

  organization: 'My Company Here',

  /**
   * GPG key to use when signing APT and YUM releases
   *
   * Requires to be unlocked (no password) and have both the private and
   * public key.
   */
  gpgSigningKey: `-----BEGIN PGP PUBLIC KEY BLOCK-----

  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
  ad6c09P+GFkowNAzEpUDTrzcxIrqrS8xeA==
  =HWYT
  -----END PGP PUBLIC KEY BLOCK-----
  -----BEGIN PGP PRIVATE KEY BLOCK-----

  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
  =0JWC
  -----END PGP PRIVATE KEY BLOCK-----  
  `,

  /**
   * The default percentage rollout for new releases.  The first release for
   * any channel will always be 100% but all future releases will have a
   * default rollout value of this setting
   */
  defaultRollout: 0
};
GuilhermeRava commented 11 months ago

Hey there, I just got the same issue, my "solution" for that was to change the Dockerfile to use a newer tag like this:

FROM atlassian/nucleus:oidc-support

COPY config.js config.js

EXPOSE 3030

the biggest difference was the docker image tag being "oidc-support" without it, it'll fail for me, it seems to be newest release as well: https://hub.docker.com/layers/atlassian/nucleus/oidc-support/images/sha256-4c038327eeed6edb01217af5894cf275c2e0b2dfddee3616ff4ed9404e24ded6?context=explore

mdrokz commented 11 months ago

Hey there, I just got the same issue, my "solution" for that was to change the Dockerfile to use a newer tag like this:

FROM atlassian/nucleus:oidc-support

COPY config.js config.js

EXPOSE 3030

the biggest difference was the docker image tag being "oidc-support" without it, it'll fail for me, it seems to be newest release as well: https://hub.docker.com/layers/atlassian/nucleus/oidc-support/images/sha256-4c038327eeed6edb01217af5894cf275c2e0b2dfddee3616ff4ed9404e24ded6?context=explore

im still getting the same error using this docker image

blackkopcap commented 10 months ago

Hi im trying to run this on my aws server i used the docker file but i get this error GPG key is invalid or missing, you must provide "config.gpgSigningKey" .

I also tried locally with docker

i also followed the instructions here #37 (comment) to generate the GPG keys

here is my config.js

const path = require('path');

module.exports = {
  /**
   * The port to run Nucleus Server on, if the port is in use the server will not start
   */
  port: 3030,

  /**
   * The fully qualified domain + path that Nucleus is being hosted at
   */
  baseURL: 'http://localhost:8888',

  /**
   * The data store to use when persisting plugins and versions.  Current possible values
   * are "sequelize", ensure you also supply valid connection details for your
   * chosen strategy below.
   *
   * PR's welcome to add another data store.
   */
  dbStrategy: 'sequelize',

  /**
   * Sequelize connection information, please note all options are required
   *
   * database: The name of the database to connect to
   * dialect: The type of SQL database this is, check sequelize docs for more info
   * username: Username to use when connecting
   * password; Password to use when connecting
   * host: Hostname of database
   * port: Port to use when connecting
   * storage: Path to sqlite file, only used for sqlite dialect
   */
  sequelize: {
    dialect: 'sqlite',
    storage: path.resolve(__dirname, 'db.sqlite'),
  },

  /**
   * The file store to use when persisting update files and metadata.  Current possible
   * values are "s3" and "local" ensure you also supply valid connection details if
   * required for your chosen strategy below.
   *
   * PR's welcome to add another file store.
   */
  fileStrategy: 'local',

  /**
   * Local file configuration
   *
   * root: Path on disk to the root of the static file store
   * staticUrl: The HTTP url to use to access the static file store remotely
   */
  local: {
    root: path.resolve(__dirname, '.files'),
    staticUrl: 'http://localhost:9999'
  },

  /**
   * There is actually no authentication config for s3, all config must be done through the standard AWS
   * environment variables or through EC2 IAM roles.
   *
   * See http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html
   *
   * Bucket / Region / CloudFront config goes here though
   */
  s3: {
    // init: {
    //   endpoint: '' // The alternate endpoint to reach the S3 instance at,
    //   s3ForcePathStyle: true // Always use path style URLs
    // }

    bucketName: '', // The name for your S3 Bucket

    cloudfront: { // If you don't have CloudFront set up and just want to use the S3 bucket set this to "null
      distributionId: '', // The CloudFront distribution ID, used for invalidating files
      publicUrl: '', // Fully qualified URL for the root of the CloudFront proxy for the S3 bucket
    }
  },

  /**
   * The authentication strategy to use when logging users in.  Current possible values are "local",
   * "openid" and "github".  Make you also supply the required authentication details
   */
  authStrategy: 'local',

  /**
   * Local authentication details
   *
   * The `adminIdentifiers` array should be a list of usernames
   *
   * DISCLAIMER: This strategy should ONLY be used for local development and NEVER
   * used in production.  Unicorns cry every time this setting is used in production.
   * Don't make the unicorns cry.
   *
   * displayName: The user friendly name of this user
   * username: A unique identifier to use when this user signs in, please note uniqueness is
   *           not enforced
   * password: Well, uhhh, their password
   * photo: A URL for their profile, entirely optional, just makes things look nicer ;)
   */
  localAuth: [{
    displayName: 'Charlie',
    username: 'charlie',
    password: 'charlie',
    photo: 'https://pbs.twimg.com/profile_images/1219364727/charlie-support_400x400.png'
  }],

  /**
   * See the documentation for your authentication strategy for what this array does
   */
  adminIdentifiers: ['admin@yourdomain.com', 'charlie'],

  /**
   * Session options, in development just leave this as default.
   *
   * IN PRODUCTION PLEASE USE REDIS!
   *
   * type: Can be either "redis" or null
   *
   * redis:
   *   host: The host URL for the redis instance
   *   port: The port for the redis instance
   */
  sessionConfig: {
    type: null,
    secret: 'ThisIsNotSecret',

    redis: {
      host: '',
      port: ''
    }
  },

  organization: 'My Company Here',

  /**
   * GPG key to use when signing APT and YUM releases
   *
   * Requires to be unlocked (no password) and have both the private and
   * public key.
   */
  gpgSigningKey: `-----BEGIN PGP PUBLIC KEY BLOCK-----

  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
  ad6c09P+GFkowNAzEpUDTrzcxIrqrS8xeA==
  =HWYT
  -----END PGP PUBLIC KEY BLOCK-----
  -----BEGIN PGP PRIVATE KEY BLOCK-----

  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
  =0JWC
  -----END PGP PRIVATE KEY BLOCK-----  
  `,

  /**
   * The default percentage rollout for new releases.  The first release for
   * any channel will always be 100% but all future releases will have a
   * default rollout value of this setting
   */
  defaultRollout: 0
};

theris error in regex condition src/files/utils/gpg.ts

change
const keyMatch = keyImport.match(/ key ([A-Za-z0-9]+):/);
to
const keyMatch = keyImport.match(/ ([A-Z0-9]+):/);
pfn-shi commented 9 months ago

Could this problem possibly be related to the encryption algorithm used? I ran into it with a ECC key generated by gpg 2.3.7, but a RSA key generated by the same gpg version on the same machine appears to work.

animanmaster commented 2 months ago

@pfn-shi Same thing happened with me - I went through the same steps with gpg's defaults (ECC) and kept getting an error that the key was invalid. After following the exact same steps but using RSA instead, nucleus started up properly.