diff --git a/src/dockerproxy.js b/src/dockerproxy.js index 27365e82f..e361e1838 100644 --- a/src/dockerproxy.js +++ b/src/dockerproxy.js @@ -133,7 +133,8 @@ async function start() { .use(process) .use(middleware.lastMile()); - gHttpServer = http.createServer(proxyServer); + // disable slowloris prevention: https://github.com/nodejs/node/issues/47421 + gHttpServer = http.createServer({ headersTimeout: 0, requestTimeout: 0 }, proxyServer); // Overwrite the default 2min request timeout. This is required for large builds for example gHttpServer.setTimeout(60 * 60 * 1000); diff --git a/src/infra_version.js b/src/infra_version.js index 16a98166d..51e82fbcf 100644 --- a/src/infra_version.js +++ b/src/infra_version.js @@ -16,12 +16,12 @@ exports = module.exports = { // docker inspect --format='{{index .RepoDigests 0}}' $IMAGE to get the sha256 'images': { 'turn': { repo: 'cloudron/turn', tag: 'cloudron/turn:1.5.0@sha256:c59a6da9ea55073ede1ba6329739fca72eddf64c3a3c10280bcc5b7fb8197865' }, - 'mysql': { repo: 'cloudron/mysql', tag: 'cloudron/mysql:3.3.6@sha256:d89e73bd9e9ed528d2ce6500e7773afed2984bd836b364adc73ebb08423d0999' }, - 'postgresql': { repo: 'cloudron/postgresql', tag: 'cloudron/postgresql:5.0.5@sha256:e6c5ca28ff2a73b1dab646347aca51b067bdcd2bab6471c4a6080ee79721e459' }, - 'mongodb': { repo: 'cloudron/mongodb', tag: 'cloudron/mongodb:4.3.5@sha256:34eeed63307bad1550553622c66b8a164c183a0c4801e1caaa2482d42ca10f4c' }, - 'redis': { repo: 'cloudron/redis', tag: 'cloudron/redis:3.4.4@sha256:e4f72e41063c57e2c44b16f1d304bd528e837efd13f31db4c2bf4c4f7ee62718' }, + 'mysql': { repo: 'cloudron/mysql', tag: 'cloudron/mysql:3.3.7@sha256:5c8fe784859a5bc8c839712d8b52427247a54bce9126fb2d50ca2535e6330647' }, + 'postgresql': { repo: 'cloudron/postgresql', tag: 'cloudron/postgresql:5.0.6@sha256:94bc17f8e9daf8de01c9676bc6c9ac4d791cc10b1a602d9647a8f545ea5568fc' }, + 'mongodb': { repo: 'cloudron/mongodb', tag: 'cloudron/mongodb:4.3.6@sha256:a30481deedd08ca17e1fdfc19128c260a8789c82e814acd4aa43c3020df2027d' }, + 'redis': { repo: 'cloudron/redis', tag: 'cloudron/redis:3.4.5@sha256:83dad2697791f358be75e2fc686840800b26aafc697b1250e8457c97ece67a47' }, 'mail': { repo: 'cloudron/mail', tag: 'cloudron/mail:3.8.3@sha256:877a1afb99e8cae8c82d5a2fca77840425eb7fafc24360fdd1c9c299e41bcfeb' }, 'graphite': { repo: 'cloudron/graphite', tag: 'cloudron/graphite:3.3.0@sha256:005addac7e7576f3960b562404ce59442bc861626af0ae0f5122484f5bfcbbc1' }, - 'sftp': { repo: 'cloudron/sftp', tag: 'cloudron/sftp:3.7.1@sha256:e2eb96516379d07548ac5a758a1f57a54772493174de3096705397b34e42de1a' } + 'sftp': { repo: 'cloudron/sftp', tag: 'cloudron/sftp:3.7.2@sha256:a6f81d4dbbb90f6d57d30722f860d431cdba67c3500fb327878d29c6bb6357d2' } } }; diff --git a/src/server.js b/src/server.js index e900512da..fa9531f44 100644 --- a/src/server.js +++ b/src/server.js @@ -25,8 +25,8 @@ let gHttpServer = null; async function initializeExpressSync() { const app = express(); - // server socket "idle" timeout is 0 by default. we use the timeout middleware to handle timeouts on a route level - const httpServer = http.createServer({ headersTimeout: 60000, requestTimeout: 1000 * 60 * 60 }, app); // see also nginx client_header_timeout (30s) + // disable slowloris prevention: https://github.com/nodejs/node/issues/47421 + const httpServer = http.createServer({ headersTimeout: 0, requestTimeout: 0 }, app); // see also nginx client_header_timeout (30s) const wsServer = new ws.Server({ noServer: true }); // in noServer mode, we have to handle 'upgrade' and call handleUpgrade