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 f02df7d

Browse files
feat: save certs to google cloud storage
1 parent 51ec97c commit f02df7d

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 によって変換されたページ (->オリジナル) /