Code Monkey home page Code Monkey logo

meteor-up's Introduction

Meteor Up GitHub Workflow Status (branch) Gitter Backers on Open Collective Sponsors on Open Collective

Production Quality Meteor Deployments

Meteor Up is a command line tool that allows you to deploy any Meteor app to your own server.

You can install and use Meteor Up on Linux, Mac and Windows. It can deploy to servers running Ubuntu 14 or newer.

This version of Meteor Up is powered by Docker, making deployment easy to manage and reducing server specific errors.

Read the getting started tutorial.

Features

  • Single command server setup
  • Single command deployment
  • Deploy to multiple servers, with optional load balancing and sticky sessions
  • Environment Variable management
  • Support for settings.json
  • Password or Private Key (pem) based server authentication
  • Access logs from the terminal (supports log tailing)
  • Support for custom docker images
  • Support for Let's Encrypt and custom SSL certificates

Roadmap

Server Configuration

  • Auto-restart if the app crashes
  • Auto-start after server reboot
  • Runs with docker for better security and isolation
  • Reverts to the previous version if the deployment failed

Installation

Meteor Up requires Node v8 or newer. It runs on Windows, Mac, and Linux.

npm install -g mup

mup should be installed on the computer you are deploying from.

Using Mup

Meteor compatibility

Mup supports Meteor 1.2 and newer. To use Meteor 1.4 and newer, you will need to change the docker image. A list of docker images is available here.

Support

First, look at the troubleshooting and common problems sections of the docs. You can also search the github issues.

If that doesn't solve the problem, you can:

Contributors

This project exists thanks to all the people who contribute. [Contribute].

Backers

Thank you to all our backers! ๐Ÿ™ [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

meteor-up's People

Contributors

abjennings avatar arunoda avatar blissini avatar edemaine avatar eluck avatar ffxsam avatar giordanocardillo avatar gsabran avatar johnallen avatar madushan1000 avatar maxmatthews avatar mbabauer avatar meteorplus avatar nchokoev avatar ninjapixel avatar pravdomil avatar rolljee avatar shadowcodex avatar shaiamir avatar sphinxxxx avatar thani-sh avatar thpubs avatar thsowers avatar timbrandin avatar twanc avatar twisterking avatar vhf avatar xdamman avatar zeroasterisk avatar zodern avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

meteor-up's Issues

Trying to deploy my app but its giving Unhandled 'error' event

I tried to deploy a meteor 1.3 app with this version of mup and repeatedly got this error :

[46.101.252.105] - setup docker
events.js:154
      throw er; // Unhandled 'error' event
      ^

Error: Timed out while waiting for handshake
    at [object Object]._onTimeout (/home/pubudu/meteor-up/node_modules/ssh2/lib/client.js:138:17)
    at Timer.listOnTimeout (timers.js:92:15)

Any idea what's happening?

Cluster

Is this version of mup compatible with Meteorhacks Cluster?
How about with SSL at the same time?

Thanks

Failure installing Mongo

I'm testing this new version on my setup. I don't need mongo so my mup.js file doesn't include that section. As a result the setup procedure fails:

macpro:do Tim$ DEBUG=* mup-test setup
  mup:module:default exec => mup setup +0ms
  mup:module:docker exec => mup docker setup +0ms

Started TaskList: Setup Docker
[xx.xx.xx.xx] - setup docker
[xx.xx.xx.xx] - setup docker: SUCCESS
  mup:module:meteor exec => mup meteor setup +769ms

Started TaskList: Setup Meteor
[xx.xx.xx.xx] - Setup Environment
  mup:module:mongo exec => mup mongo setup +1ms
TypeError: Cannot read property '_host' of undefined
    at Object.setup (index.js:33:15)
    at index.js:52:15
    at run (/Users/Tim/Development/meteor-up/node_modules/babel-polyfill/node_modules/core-js/modules/es6.promise.js:104:47)
    at /Users/Tim/Development/meteor-up/node_modules/babel-polyfill/node_modules/core-js/modules/es6.promise.js:115:28
    at flush (/Users/Tim/Development/meteor-up/node_modules/babel-polyfill/node_modules/core-js/modules/$.microtask.js:19:5)
    at process._tickCallback (node.js:419:13)

Here's my mup.js file:

module.exports = {
   servers: {
      one: {
         host: 'xx.xx.xx.xx',
         user: 'root',
         pem: '../digitalocean'
      },
   },

   meteor: {
      name: 'beesily',
      path: '../../services/web',
      servers: {
         one: {},
      },
      setupMongo: 0,
      env: {
         ROOT_URL: 'http://xx.xx.xx.xx',
         MONGO_URL:  <url>,
         MONGO_OPLOG_URL: <url>,
         DISABLE_WEBSOCKETS: '1'
      },
   },
};

I'm taking out the calls to setup and start mongo so that I can continue testing.

Archiving failed

When I try to deploy my app I get this error:

macpro:do Tim$ DEBUG=* mup-test deploy
  mup:module:default exec => mup deploy +0ms
  mup:module:meteor exec => mup meteor deploy +0ms
  mup:module:meteor exec => mup meteor push +12ms
Bulding App Bundle Locally
=> Archiving failed: ENOENT, stat '/tmp/ee280d18-a4fc-4820-b11f-4d2289d81ae6/bundle/programs/server/npm/react-runtime-prod/node_modules/react/node_modules/envify/node_modules/jstransform/node_modules/esprima-fb/.#README.md'
Error: ENOENT, stat '/tmp/ee280d18-a4fc-4820-b11f-4d2289d81ae6/bundle/programs/server/npm/react-runtime-prod/node_modules/react/node_modules/envify/node_modules/jstransform/node_modules/esprima-fb/.#README.md

Unfortunately there's absolutely no indication as to what could be going wrong :(

Instructions about .deploy are confusing

I don't understand why i am to initialize my mup project inside a .deploy directory, I already have a meteor project. I'd like to try figure out how to build it with mup?

removing the mongo node from mup.js results in this error

Not sure what's happened here... but if I set setupMongo: 0, and the remove the mongo node, the setup still tries to install mongo

Setup Environment
TypeError: Cannot read property 'host' of undefined
at Object.setup (index.js:33:15)
at index.js:52:15
at run (/Users/Patrick
/meteor-up/node_modules/babel-polyfill/node_modules/core-js/modules/es6.promise.js:104:47)
at /Users/Patrick_/meteor-up/node_modules/babel-polyfill/node_modules/core-js/modules/es6.promise.js:115:28
at flush (/Users/Patrick_/meteor-up/node_modules/babel-polyfill/node_modules/core-js/modules/$.microtask.js:19:5)
at nextTickCallbackWith0Args (node.js:419:9)
at process._tickCallback (node.js:348:13)

Deploy ignoring external mongodb / url

Hi,

I installed mup, set up the server and deployed it successfully (from commit t 7dfd01d). (just need to add deployCheckWaitTime: 60).

(...)
[logview-webapp-sl.logview.com.br] - Verifying Deployment
[logview-webapp-sl.logview.com.br] - Verifying Deployment: SUCCESS  

The deploy runs, but apparently from a 'fresh' mongodb, and not the custom MONGO_URL. I'm using mongolab for the mongodb -- outside the deploy VM.

With an old mup version it worked fine. I used "setupMongo": false in the mup.json, but I'm not sure where to put it in the mup.js of the newer version. Anyway, even if it gets set up, the MONGO_URL should be the one which is effectively used, right?

I'm assuming that it's using a new/fresh DB because the credentials in the deploy doesn't work. But another deploy which is using the same DB / MONGO_URL is working fine.

My mup.js:

module.exports = {
  servers: {
    one: {
      host: 'logview-webapp-sl.logview.com.br',
      username: 'XXXX',
      password: 'XXXX',
      // pem: './mykey',
    },
  },

  meteor: {
    name: 'logview',
    path: '/atto/logview-webapp',
    servers: {
      one: {},
    },

    env: {
      ROOT_URL: 'http://logview-webapp-sl.logview.com.br',
      MONGO_URL: 'mongodb://logview:[email protected]:29435,ds029435-a1.mongolab.com:29435/logview?replicaSet=rs-ds029435',
      LOGVIEW_EVENTLOG_ENABLE: 'false', 
      LOGVIEW_TELEGRAM_ENABLE: 'false'
    },
    deployCheckWaitTime: 60
  },

  mongo: {
    oplog: true,
    port: 27017,
    servers: {
      one: {},
    },
  },
};

Maybe the URL having the replica set parameters is causing any issue?

PS: I confirmed that with a 'simpler' URL the issue persists.
mongodb://logview:[email protected]:29605/logview-dev

Thank you!

Errors during verification deployment

I got a few errors during the verification of the deployment on different operating systems:

Under Centos 7 and Ubuntu 14.04:

Started TaskList: Start Meteor
[xxx.xxx.xxx.xxx] - Start Meteor
[xxx.xxx.xxx.xxx] - Start Meteor: SUCCESS
[xxx.xxx.xxx.xxx] - Verifying Deployment
[xxx.xxx.xxx.xxx] x Verifying Deployment: FAILED
-----------------------------------STDERR-----------------------------------
d.
npm WARN package.json [email protected] No README data
> [email protected] install /bundle/bundle/programs/server/node_modules/fibers
> node ./build.js
linux-x64-v8-3.14 exists; testing
Binary is fine; exiting
[email protected] node_modules/ansi-regex
[email protected] node_modules/ansi-styles
[email protected] node_modules/escape-string-regexp
[email protected] node_modules/chalk
[email protected] node_modules/strip-ansi
[email protected] node_modules/supports-color
[email protected] node_modules/has-ansi
[email protected] node_modules/eachline
[email protected] node_modules/type-of
[email protected] node_modules/amdefine
[email protected] node_modules/asap
[email protected] node_modules/underscore
[email protected] node_modules/meteor-promise
[email protected] node_modules/promise
[email protected] node_modules/source-map-support
[email protected] node_modules/semver
[email protected] node_modules/source-map
[email protected] node_modules/fibers
=> Starting meteor app on port:80
-----------------------------------STDOUT-----------------------------------
To see more logs type 'mup logs --tail=50'
----------------------------------------------------------------------------
Error:
-----------------------------------STDERR-----------------------------------
d.
npm WARN package.json [email protected] No README data

[email protected] install /bundle/bundle/programs/server/node_modules/fibers
node ./build.js
linux-x64-v8-3.14` exists; testing
Binary is fine; exiting
[email protected] node_modules/ansi-regex
[email protected] node_modules/ansi-styles
[email protected] node_modules/escape-string-regexp
[email protected] node_modules/chalk
[email protected] node_modules/strip-ansi
[email protected] node_modules/supports-color
[email protected] node_modules/has-ansi
[email protected] node_modules/eachline
[email protected] node_modules/type-of
[email protected] node_modules/amdefine
[email protected] node_modules/asap
[email protected] node_modules/underscore
[email protected] node_modules/meteor-promise
[email protected] node_modules/promise
[email protected] node_modules/source-map-support
[email protected] node_modules/semver
[email protected] node_modules/source-map
[email protected] node_modules/fibers
=> Starting meteor app on port:80
-----------------------------------STDOUT-----------------------------------

To see more logs type 'mup logs --tail=50'

at /Users/mzygmunt/Desktop/jakis/meteor-up/node_modules/nodemiral/lib/coreTasks.js:39:16
at /Users/mzygmunt/Desktop/jakis/meteor-up/node_modules/nodemiral/lib/session.js:146:9
at Channel. (/Users/mzygmunt/Desktop/jakis/meteor->up/node_modules/nodemiral/lib/ssh.js:125:9)
at emitOne (events.js:90:13)
at Channel.emit (events.js:182:7)
at SSH2Stream. (/Users/mzygmunt/Desktop/jakis/meteor->up/node_modules/ssh2/lib/Channel.js:124:14)
at SSH2Stream.g (events.js:273:16)
at emitNone (events.js:80:13)
at SSH2Stream.emit (events.js:179:7)
at parsePacket (/Users/mzygmunt/Desktop/jakis/meteor-up/node_modules/ssh2->streams/lib/ssh.js:3435:10)
at SSH2Stream._transform (/Users/mzygmunt/Desktop/jakis/meteor-up/node_modules/ssh2->streams/lib/ssh.js:552:13)
at SSH2Stream.Transform._read (_stream_transform.js:166:10)
at SSH2Stream._read (/Users/mzygmunt/Desktop/jakis/meteor-up/node_modules/ssh2->streams/lib/ssh.js:213:15)
at SSH2Stream.Transform._write (_stream_transform.js:154:12)
at doWrite (_stream_writable.js:292:12)
at writeOrBuffer (_stream_writable.js:278:5)

Under Debian 7 and Debian 8:

Started TaskList: Start Meteor
[51.255.41.243] - Start Meteor
[51.255.41.243] - Start Meteor: SUCCESS
[51.255.41.243] - Verifying Deployment
[51.255.41.243] x Verifying Deployment: FAILED
-----------------------------------STDERR-----------------------------------
WARN deprecated
npm WARN deprecated To upgrade to the latest stable version, run:
npm WARN deprecated
npm WARN deprecated npm -g install npm@latest
npm WARN deprecated
npm WARN deprecated (Depending on how Node.js was installed on your system, you
npm WARN deprecated may need to prefix the preceding commands with sudo, or if
npm WARN deprecated on Windows, run them from an Administrator prompt.)
npm WARN deprecated
npm WARN deprecated If you're running the version of npm bundled with
npm WARN deprecated Node.js 0.10 LTS, be aware that the next version of 0.10 LTS
npm WARN deprecated will be bundled with a version of npm@2, which has some small
npm WARN deprecated backwards-incompatible changes made to npm run-script and
npm WARN deprecated semver behavior.
npm WARN package.json [email protected] No description
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No README data
=> Starting meteor app on port:80
-----------------------------------STDOUT-----------------------------------
To see more logs type 'mup logs --tail=50'
----------------------------------------------------------------------------
Error:
-----------------------------------STDERR-----------------------------------
WARN deprecated
npm WARN deprecated To upgrade to the latest stable version, run:
npm WARN deprecated
npm WARN deprecated npm -g install npm@latest
npm WARN deprecated
npm WARN deprecated (Depending on how Node.js was installed on your system, you
npm WARN deprecated may need to prefix the preceding commands with sudo, or if
npm WARN deprecated on Windows, run them from an Administrator prompt.)
npm WARN deprecated
npm WARN deprecated If you're running the version of npm bundled with
npm WARN deprecated Node.js 0.10 LTS, be aware that the next version of 0.10 LTS
npm WARN deprecated will be bundled with a version of npm@2, which has some small
npm WARN deprecated backwards-incompatible changes made to npm run-script and
npm WARN deprecated semver behavior.
npm WARN package.json [email protected] No description
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No README data
=> Starting meteor app on port:80
-----------------------------------STDOUT-----------------------------------

To see more logs type 'mup logs --tail=50'

at /Users/mzygmunt/Desktop/jakis/meteor-up/node_modules/nodemiral/lib/coreTasks.js:39:16
at /Users/mzygmunt/Desktop/jakis/meteor-up/node_modules/nodemiral/lib/session.js:146:9
at Channel. (/Users/mzygmunt/Desktop/jakis/meteor->up/node_modules/nodemiral/lib/ssh.js:125:9)
at emitOne (events.js:90:13)
at Channel.emit (events.js:182:7)
at SSH2Stream. (/Users/mzygmunt/Desktop/jakis/meteor->up/node_modules/ssh2/lib/Channel.js:124:14)
at SSH2Stream.g (events.js:273:16)

Add support for better log management

Current docker will store all the without rolling.

We need to add log rolling by default. We also support custom log drivers (like syslog)

Then user can send logs to a remote server.

Update proxy config without restarting it.

We need to add a way to update nginx configurations without restarting it. We can't do this by default because we can't do it for WS connections.

Find a way to do this with integrating Nginx's Lua capabilities or something else.

settings file ignored

This may just not be implemented yet, but the settings.json file isn't being used.

My production system failed...

My production system was working fine since 6 months, But after the last update, I get the following message, and cannot connect to server. All user accounts and right same. nothing changed.

Any idea?
Regards

on client

GET http://localhost:3000/sockjs/info?cb=wxlvulz3gi net::ERR_CONNECTION_REFUSED

on mup log

cd: can't cd to /opt/earn
/proc/self/fd/9: 3: cd: can't cd to /opt/earn
stepping down to gid: meteoruser
stepping down to uid: meteoruser
stepping down to gid: meteoruser

'module' is undefined

when I try to deploy my app on windows, I got the message 'module' is undefined.

module.exports = {
  servers: {
    one: {
      "host": "...",
      "username": "...",
      "pem": "..."
    }
  },

  meteor: {
    name: '...',
    path: '../../webinterface',
    servers: {
      one: {}
    },
    env: {
        "PORT": 81,
        "ROOT_URL": "...",
        "DDP_DEFAULT_CONNECTION_URL": "..."
    },
    deployCheckWaitTime: 30 //default 10
  }
};

Error reading config file: Permission denied

I'm getting this error in the mongo logs, when setting up mongo container on a VM provided by my university:

Error reading config file: Permission denied

This is not happening elsewhere. If I run the following to create a container it works perfectly:

sudo docker run \
  -d \
  --restart=always \
  --publish=127.0.0.1:27017:27017 \
  --volume=/var/lib/mongodb:/data/db \
  --name=mongodb \
  mongo mongod

Will mup add an option to provide custom config file to mongo in the future? If not, isn't the config file redundant? Mongo dbpath is /data/db as default, and the config file is not needed as is.

If the config file is necessary somehow, I'll close this issue. My problem is probably a result of how my university sets up their VMs.

SyntaxError: Unexpected token import

This port of the old mup looks really promising! I have a problem though, maybe bacause of my poor knowledge about running node modules that use babel. I followed the steps in the README.md and got the following SyntaxError when running mup init on my project:

$ mup init

/usr/local/lib/node_modules/mup/lib/execute.js:1
(function (exports, require, module, __filename, __dirname) { import modules from './modules/';
                                                              ^^^^^^

SyntaxError: Unexpected token import
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:374:25)
    at Module._extensions..js (module.js:405:10)
    at Object.require.extensions.(anonymous function) [as .js] (/usr/local/lib/node_modules/mup/node_modules/babel-register/lib/node.js:138:7)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/usr/local/lib/node_modules/mup/index.js:12:1)
    at Module._compile (module.js:398:26)

I'm running OS X 10.11.1 and my current versions of related utilities are:

  • node 5.4.0
  • npm 3.3.12

EDIT: If I run mup inside dev folder it works as expected:

node ~/projects/meteor-up/index.js init

Can't install mup on windows

I followed the installation instructions and got:

npm install

npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No description
npm ERR! EEXIST, open 'c:\Users\Marc\.nodejs\npm\882100b8-js-npm-lodash-3-10-1-package-tgz.lock'
File exists: c:\Users\Marc\.nodejs\npm\882100b8-js-npm-lodash-3-10-1-package-tgz.lock
Move it away, and try again.


npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! cwd C:\Projects\web\meteor-up\setup\meteor-up
npm ERR! node -v v0.10.32
npm ERR! npm -v 1.4.28
npm ERR! path c:\Users\Marc\.nodejs\npm\882100b8-js-npm-lodash-3-10-1-package-tgz.lock
npm ERR! code EEXIST
npm ERR! errno 47
npm ERR! not ok code 0

I tried to remove c:\Users\Marc.nodejs\npm\882100b8-js-npm-lodash-3-10-1-package-tgz.lock but the file doesn't exists.

Implement the proxy module

Update: (by @arunoda)

Here's how this works:

  • Once setup, this will install a Nginx server with the SSL support
  • Then for every deploy, this will update nginx config with the Meteor apps as backends.
  • This should support sticky sessions via cookies. (so we need to build a custom nginx version for that)

I can't disable Mongo installing

Hello,
Changing the option setupMongo from 1 to 0 does not affect the installation of Mongo. Despite it, Mongo is installed and configured on the server.

Port default module from arunoda/meteor-up

Update: (by @arunoda)
We should only allow this, if following conditions are met.

  • There is only one server is used for Meteor app.
  • Mongo is going to installed on the above server.
  • There is no current mongodb server running on port 27017

New for deploying on my own hardware!

Excuse me, I am new for deploying to production.
Now I created POS System, and then I would like to deploy to my own hardware (Dell i5, Ram 8).
Please tell me for pre requirement:

  • OS: Window/Ubuntu
    -..............
    (Sorry if I issue out of this package, because I am not sure how to use MUP)
    Thanks for your reply.

mup 1.0.0 won't build my meteor app

mup deploy
Bulding App Bundle Locally
events.js:141
throw er; // Unhandled 'error' event
^

Error: spawn meteor ENOENT
at exports._errnoException (util.js:870:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
at onErrorNT (internal/child_process.js:344:16)
at nextTickCallbackWith2Args (node.js:441:9)
at process.tickCallback (node.js:355:17)
QuadCore-iMac:parooz Patrick
$ DEBUG=* mup deploy
mup:module:default exec => mup deploy +0ms
mup:module:meteor exec => mup meteor deploy +1ms
mup:module:meteor exec => mup meteor push +3ms
Bulding App Bundle Locally
events.js:141
throw er; // Unhandled 'error' event
^

Error: spawn meteor ENOENT
at exports._errnoException (util.js:870:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
at onErrorNT (internal/child_process.js:344:16)
at nextTickCallbackWith2Args (node.js:441:9)
at process.tickCallback (node.js:355:17)
QuadCore-iMac:parooz Patrick
$ node -v
v4.2.6

Let's Encrypt integration

Yesterday I did a quick integration of Let's Encrypt in the deprecated MeteorUp repository. These are the pull requests: #873 and meteorhacks/mup-frontend-server#10

CLI

I would like to do this in a better way within this repo. After having a look to the architecture of this new MeteorUp, I thought that could be nice to create another module called tls or ssl, so we could use the following commands in the CLI:

  • mup tls status: Give current status of the certificate, expiration, register, etc.
  • mup tls renew: Renew the certificate.

Config

To configure Let's Encrypt generator, I was thinking about the following mup.js API:

...
"ssl": {
  "autogenerate": {
    "email": "[email protected]",
    "domains": "example.com"
  }
  ...
}
...

In order to use the renew, it should be needed to include the autogenerate option in the mup.js file.

Frontend server generating certificates

The way I would like to approach the generation is using the Let's Encrypt plugins webroot and standalone. Both behaviours could be included in the meteorhacks/mup-frontend-server container, as Let's Encrypt needs to expose a challenge file using a webserver that will be fetched by the certificate authority using the given domains as URL base. If the file is correctly fetched by them using the domains, the certificate is validated.

The usage I was thinking is mounting a volume to the container including the certificates.

  • If certificate volume already include a valid certificate: Container should run like it runs right now, using the certificate.
  • If certificate volume includes a valid certificate but it is close to expire and the autogenerate is set up: Container should run a cron job every week to check if the certificate will expire soon and renew the certificate, persisting it through the volume. This will use the webroot plugin, to avoid having downtime for the generation of the certificate.
  • If the certificate is not existing or not valid, and the autogenerate is set up: The container should generate a new certificate using the standalone plugin, as nginx can not boot up without the certificate (Another option is having two nginx.conf files). Once the certificate is generated, nginx would boot normally.

Impressions and improvements

If you have any suggestion to improve this implementation, let me know and we can work on it.

Hot code push

I'm curious about mup and hot-code-push.

Since mup reply creates a new Docker container rather than copying the code over the previous version, that suggests to me that there's no support for hot code push.

Moreover, it also suggests that all connected users get disconnected when a new version is deployed.

Is this this case? If not, how??

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.