Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit fea8d60

Browse files
Merge pull request #1 from InteractiveTraining/add-greenlock-gcloud-storage
feat: save certs to google cloud storage
2 parents 51ec97c + f02df7d commit fea8d60

File tree

3 files changed

+41
-21
lines changed

3 files changed

+41
-21
lines changed

‎package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
},
1414
"dependencies": {
1515
"@interactivetraining/le-challenge-cloudflare": "1.3.1",
16+
"@interactivetraining/le-store-gcloud-storage": "0.0.1",
1617
"compression": "^1.7.3",
1718
"cors": "^2.8.5",
1819
"dotenv": "^5.0.1",

‎sample.env

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
DOMAIN=my-self-hosted-unpkg-domain.com
2+
ENABLE_SSL=0
23
NPM_REGISTRY=https://private.npm.registry
34
NPM_USER=
45
NPM_PASSWORD=
@@ -7,3 +8,7 @@ CLOUDFLARE_EMAIL=
78
CLOUDFLARE_API_KEY=
89
LETS_ENCRYPT_EMAIL=
910
LETS_ENCRYPT_AGREE_TO_TOS=true
11+
GOOGLE_CLOUD_BUCKET_NAME=my-certs
12+
GOOGLE_CLOUD_PROJECT_ID=my-google-cloud-project-id
13+
GOOGLE_CLOUD_KEY_FILE_PATH=/path/to/google-cloud-key-file.json
14+
GOOGLE_CLOUD_CERT_DB_FILE=cert-db.json

‎src/index.ts

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import * as helmet from 'helmet';
66
import {CloudflareChallenge} from '@interactivetraining/le-challenge-cloudflare';
77
import {IPackageParams} from './interfaces';
88
import {downloadPackage} from './helpers';
9+
import {GCloudStoreCreate} from '@interactivetraining/le-store-gcloud-storage'
10+
import * as http from 'http';
911

1012
require('dotenv').config();
1113

@@ -53,24 +55,36 @@ app.get(['/:scope?/:package@:version/*', '/:scope?/:package/*'], async (req, res
5355
}
5456
});
5557

56-
require('greenlock-express').create({
57-
version: 'draft-11',
58-
server: 'https://acme-v02.api.letsencrypt.org/directory',
59-
email: process.env.LETS_ENCRYPT_EMAIL,
60-
agreeTos: (process.env.LETS_ENCRYPT_AGREE_TO_TOS.trim() === 'true'),
61-
approveDomains: [
62-
process.env.DOMAIN
63-
],
64-
configDir: 'acme/',
65-
app: app,
66-
challengeType: 'dns-01',
67-
challenge: new CloudflareChallenge({
68-
cloudflare: {
69-
email: process.env.CLOUDFLARE_EMAIL,
70-
key: process.env.CLOUDFLARE_API_KEY
71-
},
72-
acmePrefix: '_acme-challenge',
73-
verifyPropagation: {waitFor: 5000, retries: 50},
74-
useDNSOverHTTPS: false
75-
})
76-
}).listen(80, 443, () => console.log(`Listening...`));
58+
if (process.env.ENABLE_SSL === "1") {
59+
require('greenlock-express').create({
60+
version: 'draft-11',
61+
server: 'https://acme-v02.api.letsencrypt.org/directory',
62+
//server: 'https://acme-staging-v02.api.letsencrypt.org/directory',
63+
email: process.env.LETS_ENCRYPT_EMAIL,
64+
agreeTos: (process.env.LETS_ENCRYPT_AGREE_TO_TOS.trim() === 'true'),
65+
approveDomains: [
66+
process.env.DOMAIN
67+
],
68+
configDir: 'acme/',
69+
app: app,
70+
store: GCloudStoreCreate({
71+
bucketName: process.env.GOOGLE_CLOUD_BUCKET_NAME,
72+
projectId: process.env.GOOGLE_CLOUD_PROJECT_ID,
73+
keyFilename: process.env.GOOGLE_CLOUD_KEY_FILE_PATH,
74+
dbFileName: process.env.GOOGLE_CLOUD_CERT_DB_FILE
75+
}),
76+
challengeType: 'dns-01',
77+
challenge: new CloudflareChallenge({
78+
cloudflare: {
79+
email: process.env.CLOUDFLARE_EMAIL,
80+
key: process.env.CLOUDFLARE_API_KEY
81+
},
82+
acmePrefix: '_acme-challenge',
83+
verifyPropagation: {waitFor: 5000, retries: 50},
84+
useDNSOverHTTPS: false
85+
})
86+
}).listen(80, 443, () => console.log(`Listening...`));
87+
} else {
88+
http.createServer(app).listen(80, () => console.log(`Listening...`));
89+
}
90+

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /