This guide has been revised 06-03-2015. Start with a clean ubuntu 14.04LTS-x64 machine and get it updated
sudo su
apt-get update && apt-get dist-upgrade
reboot
* { | |
font-size: 12pt; | |
font-family: monospace; | |
font-weight: normal; | |
font-style: normal; | |
text-decoration: none; | |
color: black; | |
cursor: default; | |
} |
open Microsoft.FSharp.Linq | |
open Microsoft.FSharp.Linq.Query | |
open MongoDB.Driver | |
open MongoDB.Linq | |
let inline (?) this key = | |
( ^a : (member get_Item : ^b -> ^c) (this,key)) | |
let inline (?<-) this key value = | |
( ^a : (member set_Item : ^b * ^c -> ^d) (this,key,value)) |
#if INTERACTIVE | |
#I @"C:\Tools\MongoDB-CSharp\MongoDB.Linq\bin\Debug" | |
#r "MongoDB.Driver.dll" | |
#r "MongoDB.Linq.dll" | |
#r "FSharp.PowerPack.Linq.dll" | |
#r "System.Core.dll" | |
#endif | |
open System | |
open MongoDB.Driver |
function Invoke-NodeJS { | |
param( | |
$PowerShellCommand, | |
[Switch]$ReturnAsJSON | |
) | |
if($ReturnAsJSON) {$PowerShellCommand += " | ConvertTo-Json"} | |
$tmp = [IO.Path]::GetTempFileName() |
var Db = require('mongodb').Db; | |
var Connection = require('mongodb').Connection; | |
var Server = require('mongodb').Server; | |
//the MongoDB connection | |
var connectionInstance; | |
module.exports = function(callback) { | |
//if already we have a connection, don't connect to database again | |
if (connectionInstance) { | |
callback(connectionInstance); |
var cluster = require('cluster'); | |
var PORT = +process.env.PORT || 1337; | |
if (cluster.isMaster) { | |
// In real life, you'd probably use more than just 2 workers, | |
// and perhaps not put the master and worker in the same file. | |
cluster.fork(); | |
cluster.fork(); | |
cluster.on('disconnect', function(worker) { |
This article will explain how to set up a secure web server with NodeJS which only accepts connection from users with SSL certificates that you have signed. This is an efficient way to ensure that no other people are able to access the web server, without building a login system which will be significantly weaker.
I will not explain how to create a certificate authority (CA), create certificates or sign them. If you need to read up on this, have a look at this excelent article on how to do it with OpenSSL (Mac and Linux): https://help.ubuntu.com/community/OpenSSL#Practical_OpenSSL_Usage It is also possible to do this on a Mac with the keychain application, and I assume it is possible on a Windows machine aswell.
This architecture will allow you to have one web server communicating with an array of trusted clients, the web server itself can be on the public internet, that will not decrease the level of security, but it will only ser
echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc | |
. ~/.bashrc | |
mkdir ~/local | |
mkdir ~/node-latest-install | |
cd ~/node-latest-install | |
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1 | |
./configure --prefix=~/local | |
make install # ok, fine, this step probably takes more than 30 seconds... | |
curl https://npmjs.org/install.sh | sh |
# Cookbook Name:: mongodb | |
# Recipe:: default | |
case node['platform'] | |
when "ubuntu" | |
execute "apt-get update" do | |
action :nothing | |
end | |
execute "add gpg key" do |