Já faz algum tempo que a Joyent está investindo em  NodeJS e pelo visto com força total. Passado 1 mês do Node Knockout,  a Joyent está disponibilizando hospedagem beta para o NodeJS. Essa liberação está acontecendo gradualmente e atualmente é necessário um token. Basicamente você solicita esse token e entra numa fila. Não demora muito e eles enviam um email pra você avisando que o token já está disponível. A partir daí basta recupera-lo e usar para criar sua instância.

Uma coisa legal também é que a Joyent criou uma API REST, onde é possível fazer tudo pela linha de comando. Vamos criar e fazer deploy de uma aplicação simples.

Criando a conta:

$ curl -k https://api.no.de/account \
    -F "[email protected]" \
    -F "username=user" \
    -F "password=pass" \
    -F "password_confirmation=pass"

Adicionando uma chave ssh:

 $ curl -k -u user:pass https://api.no.de/sshkeys \
    -F "name=seunome" -F "key=@/Users/seuusuario/.ssh/id_rsa.pub"

Solicitando um coupon para provisionar uma máquina:

$ curl -k -u user:pass https://api.no.de/heart -X POST

A partir daí, você deve esperar o seu email chegar, avisando que o coupon está liberado. Como eu disse, essa liberação é gradual. Portanto, muita calma nessa hora. Talvez você tenha que voltar no artigo depois, portanto guarde o link :)

Provisionando sua máquina (quando o coupon estiver liberado):

Pegue o coupon:

$ curl -k -u user:pass https://api.no.de/coupons

Se você fizer essa busca antes do coupon estar liberado virá uma resposta vazia.

Provisione com o coupon recebido:

 $ curl -k -u user:pass https://api.no.de/smartmachines/node \
    -F "coupon=123456789abcdefghijk" \
    -F "subdomain="seusubdominio"

Nesse momento você já tem uma máquina apontando para o endereço: htttp://seusubdominio.no.de

Primeiro deploy

O deploy para uma Node Smartmachine é feito via git, assim como no heroku. Sendo assim, vamos criar um projeto simples, com um hello world e fazer o deploy:

$ mkdir seuprojeto && cd seuprojeto

Crie um arquivo chamado server.js no editor de sua preferência e adicione o seguinte código:

var http = require('http');

var server = http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello NodeJS Smartmachine\n');
});

server.listen(Number(process.env.PORT));

Pegue as informações (IP) da sua máquina para configurar o repositório remoto do git:

$ curl -k -u user:pass https://api.no.de/smartmachines/node

Inicialize o repositório git, faça o primeiro commit e adicione o repositório remoto:

git init
git add .
git commit -am "Primeiro commit"
git remote add joyent ssh://node@seuip/repo

Agora vamos ao que mais interessa. Deploy !!!!

git push joyent master

Pronto!!! Agora acesse htttp://seusubdominio.no.de e você deve ver a mensagem Hello NodeJS Smartmachine.

Gerênciando pela interface web

Para gerenciar sua conta visualmente basta entrar em http://no.de e entrar com seu usuário e senha. É uma ótima opção também. Nesse site também é possível criar novas contas, adicionar chaves ssh e provisionar máquinas. Não é possível

Conclusão

Essa hospedagem de NodeJS me parece bem promissora, e eu sinceramente estou gostando muito. A hospedagem permite instalar pacotes usando NPM e também instalar algumas outras coisas. No próximo artigo vou explorar detalhes de administração dessa hospedagem.