Re: dead easy deployment / Camping on the fly

2012-04-03 Thread Dave Everitt
Been trying the setup (okay, this is not going to win any awards,  
but...):


http://dave.camping.sh/

It's an old app rewritten (except - as yet - for the content :-)

DaveE

___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list


Re: dead easy deployment / Camping on the fly

2012-04-02 Thread Nokan Emiro
Hi,

As I already mentioned I use Camping with fcgi in production.  If It is
your choice (and not passenger), I will help you set it up.



On Sun, Apr 1, 2012 at 5:49 PM, david costa gurugeek...@gmail.com wrote:

 Hello again ! :)
 well in theory we can chrot jail users but the best way is to install the
 gems that people need perhaps the most used ones. It will then work system
 wide !
 The big question is who will be your typical user. If is someone you trust
 then you can give them even limited ssh + sftp :)

 Back to my ignorance: how do you folks run camping in a server ? do you
 use fcgi ? At work we used to run a fairly big production environment made
 of rails  running with lighthtp  and fcgi. If we were to run this as a dead
 simple fcgi setup did anyone set this up? I have tried all the instructions
 github on how to set this up with dispatcher.fcgi but failed miserably.

 I would can get the server installed + fcgi but how to run camping apps
 from there is a bit of a mystery.

 I am slightly frustrated because of passenger not making a simple create
 page/test page http://camping.sh/ working. I know is not the app as it
 works at http://camping.sh:3301/
 Unicorn: I think you would be back to have nginx as a reverse proxy for
 that which can present some problems for example, default port is 3301 for
 camping. So you would need a script to check which port is free and run
 then camping --port so seems a bit complicated.

 Thanks
 David



 On Sun, Apr 1, 2012 at 2:38 PM, Isak Andersson icepa...@lavabit.comwrote:

 Okay then. But then we'd make sure that the applications don't have
 privilege to install gems then.

 --
 Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.

 Jenna Fox a...@creativepony.com skrev:

 @Isak Anything run with the `backticks operator` runs with the same
 privileges as the process which launched them, if using system level
 sandboxing, or if using some crazy sandbox built in to ruby (which probably
 wouldn't be very good, but maybe good enough) it'd probably just disable
 backticks feature.


 On 01/04/2012, at 9:31 PM, Isak Andersson wrote:

 Well. Isn't it kind of possible to just hack the gem installation in
 using the ruby quotes that execute code on the system. I can't type them on
 the phone but I think you know what I mean. Kind of a security issue isn't
 it?

 Anyways. Perhaps we could offer some Gems to pick from that we think are
 quality! (rack_csrf, scrypt).
 --
 Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.

 Jenna Fox a...@creativepony.com skrev:

  I don't think we need to go as far as automatically installing gems -
 securing ruby is a pretty big challenge, but securing gcc? no way.

 —
 Jenna

 On Sunday, 1 April 2012 at 8:25 PM, Isak Andersson wrote:

  Remember that we should pretty much make a Gemfile mandatory if the
 user makes use of gems other than Camping. For example, rack_csrf. And we
 should make sure that dependencies get installed. :)
 --
 Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.

 Jenna Fox a...@creativepony.com skrev:

 Hm. I know the main guy responsible for App Engine, and, well, I
 certainly wouldn't build a platform atop it - even aside from the huge
 glaring issue that to have an app which can store data persistently, you
 need to use google's proprietary database software.

 Heroku doesn't screen against abuse at all. Heroku is not a 'shared
 hosting' provider. Their systems use the very finest jailing techniques to
 lock the ruby process in to it's own little world. It has no writable
 filesystem and it can only read what it absolutely needs to be able to read
 to function. All data storage happens over the network on separated
 database servers. The only type of abuse they need to be weary of is people
 using their servers to do illegal things - bullying, sharing illegal
 content, that sort of thing. They deal with that the same way any provider
 does - wait till someone makes a complaint. Matz, inventor of ruby, works
 for heroku making exactly this sort of stuff work extremely well.

 Still, it's not as friendly as it could be, and I personally think the
 trade offs on heroku are not very good for beginners (you have to use a
 complex database system, and cannot use the filesystem to store anything
 but static assets).

 Good work getting this server up David! I'm pretty excited. It sounds
 like you're having some pretty annoying deployment issues. As it's being
 quite a hassle, perhaps we should be thinking more deeply about creating
 our own special server for this task - something like the modified unicorn
 I mentioned earlier somewhere.

 —
 Jenna

 On Sunday, 1 April 2012 at 6:23 PM, Peter Retief wrote:

 Wonder if Google might help getting camping to run on app engine?

 On 1 April 2012 10:03, david costa gurugeek...@gmail.com wrote:

 Ah I forgot
 you can compare camping running on thin here
 http://run.camping.io:3301/
 vs passenger at 

Re: dead easy deployment / Camping on the fly

2012-04-02 Thread Nokan Emiro
I really want to know what gems do you (all out there) think quality...
Maybe there's a statistics from a big gem server which ones are the most
wanted.

What about the versions?  Applications can work differently (or not work :-
) with
different versions of gems (and ruby).

Will the hosting server allow to open connections to other hosts for the
uploaded apps?
It is also dangerous like backtick/system calls.  But if it's banned, lots
of gems are excluded.


2012/4/1 Isak Andersson icepa...@lavabit.com

 ** Well. Isn't it kind of possible to just hack the gem installation in
 using the ruby quotes that execute code on the system. I can't type them on
 the phone but I think you know what I mean. Kind of a security issue isn't
 it?

 Anyways. Perhaps we could offer some Gems to pick from that we think are
 quality! (rack_csrf, scrypt).

 --
 Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.

 Jenna Fox a...@creativepony.com skrev:

  I don't think we need to go as far as automatically installing gems -
 securing ruby is a pretty big challenge, but securing gcc? no way.

 —
 Jenna

 On Sunday, 1 April 2012 at 8:25 PM, Isak Andersson wrote:

  Remember that we should pretty much make a Gemfile mandatory if the user
 makes use of gems other than Camping. For example, rack_csrf. And we should
 make sure that dependencies get installed. :)
 --
 Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.

 Jenna Fox a...@creativepony.com skrev:

 Hm. I know the main guy responsible for App Engine, and, well, I
 certainly wouldn't build a platform atop it - even aside from the huge
 glaring issue that to have an app which can store data persistently, you
 need to use google's proprietary database software.

 Heroku doesn't screen against abuse at all. Heroku is not a 'shared
 hosting' provider. Their systems use the very finest jailing techniques to
 lock the ruby process in to it's own little world. It has no writable
 filesystem and it can only read what it absolutely needs to be able to read
 to function. All data storage happens over the network on separated
 database servers. The only type of abuse they need to be weary of is people
 using their servers to do illegal things - bullying, sharing illegal
 content, that sort of thing. They deal with that the same way any provider
 does - wait till someone makes a complaint. Matz, inventor of ruby, works
 for heroku making exactly this sort of stuff work extremely well.

 Still, it's not as friendly as it could be, and I personally think the
 trade offs on heroku are not very good for beginners (you have to use a
 complex database system, and cannot use the filesystem to store anything
 but static assets).

 Good work getting this server up David! I'm pretty excited. It sounds
 like you're having some pretty annoying deployment issues. As it's being
 quite a hassle, perhaps we should be thinking more deeply about creating
 our own special server for this task - something like the modified unicorn
 I mentioned earlier somewhere.

 —
 Jenna

 On Sunday, 1 April 2012 at 6:23 PM, Peter Retief wrote:

 Wonder if Google might help getting camping to run on app engine?

 On 1 April 2012 10:03, david costa gurugeek...@gmail.com wrote:

 Ah I forgot
 you can compare camping running on thin here
 http://run.camping.io:3301/
 vs passenger at http://run.camping.io

 apparently db has some problems with fusion passenger  (see
 http://run.camping.io create HTML page and test HTML page. The same code
 on thin works just fine... umhh oh no don't feel like more debugging ):



 On Sun, Apr 1, 2012 at 9:51 AM, david costa gurugeek...@gmail.comwrote:

 Okay :D after many many hours of testing I am settled for nginx and
 passenger.
 live at http://run.camping.io/

 I did try every apache combination (with passenger, with cgi, etc. etc.)
 as is simply not really working fine.
 I tried some other obscure web servers too but apparently this seems to
 work fine for now :) other servers would run the app as CGI or FastCGI. I
 am not worried about speed just ease of deployment and nginx with passenger
 seems to do the job for now. The alternative is nginx as reverse proxy but
 as Jenna rightly pointed out it would spawn a lot of thin instances that
 might or might not be used.

 I did throw the sponge at Webdav on apache. It doesn't work as expected
 and not with all clients. It seems more suitable to store quick files than
 something else.
 Can try tomorrow with nginx but perhaps it would be nicer to have a quick
 camping hack to upload  a file etc. but you can't just automate it entirely
 else you can have people running malicious code automatically...

 I can do the shell scripts to create virtual users for nginx and dns.
 Another option is to give a normal hosting for camping users. It wouldn't
 be an issue to have 100-200 trusted users to have access to this e.g. we
 can build a camping fronted  for users to apply with a selection e.g. their
 

Re: dead easy deployment / Camping on the fly

2012-04-02 Thread Nokan Emiro

 On fastcgi - fastcgi is not a server in itself - you cannot connect to it
 with a web browser. Like Passenger, it's a way for a server like nginx or
 apache to launch and talk to processes which return webpages directly.


FastCGI IS a server in itself - you can connect to it, but not with a web
browser.  It's because it uses a protocol called fastcgi, not http.  (The
easiest way to interact with it is to use the cgi-fcgi command from command
line...)  It is not necessary to use the webserver to launch the fcgi
processes, they can be configured just to connect to these servers, and you
can run them whatever way you want.  (I use simple init scripts for this
purpose, but in a specialized hosting environment you must build a launcher
for them, that handles new uploads, handles broken scripts (those that die
after starting), and this system has to manage with ports associated with
users, like in the case of using thin and reverse proxies.)
___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list

Re: dead easy deployment / Camping on the fly

2012-04-02 Thread david costa
Yes thanks for this well I am pretty set with nginx + passenger. Once I
spent the week end digging into it I am pretty happy and it is the
recommended way to deploy by many so I will trust this setup for now. I
like this more than moving parts with reverse proxies and since it will end
up to me to manage this I want to keep it simple as time is scarce ;)


On Mon, Apr 2, 2012 at 11:08 AM, Nokan Emiro uzleep...@gmail.com wrote:

 On fastcgi - fastcgi is not a server in itself - you cannot connect to it
 with a web browser. Like Passenger, it's a way for a server like nginx or
 apache to launch and talk to processes which return webpages directly.


 FastCGI IS a server in itself - you can connect to it, but not with a web
 browser.  It's because it uses a protocol called fastcgi, not http.  (The
 easiest way to interact with it is to use the cgi-fcgi command from command
 line...)  It is not necessary to use the webserver to launch the fcgi
 processes, they can be configured just to connect to these servers, and you
 can run them whatever way you want.  (I use simple init scripts for this
 purpose, but in a specialized hosting environment you must build a launcher
 for them, that handles new uploads, handles broken scripts (those that die
 after starting), and this system has to manage with ports associated with
 users, like in the case of using thin and reverse proxies.)



 ___
 Camping-list mailing list
 Camping-list@rubyforge.org
 http://rubyforge.org/mailman/listinfo/camping-list

___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list

Re: dead easy deployment / Camping on the fly

2012-04-01 Thread david costa
Ah I forgot
you can compare camping running on thin here
http://run.camping.io:3301/
vs passenger at http://run.camping.io

apparently db has some problems with fusion passenger  (see
http://run.camping.io create HTML page and test HTML page. The same code on
thin works just fine... umhh oh no don't feel like more debugging ):



On Sun, Apr 1, 2012 at 9:51 AM, david costa gurugeek...@gmail.com wrote:

 Okay :D after many many hours of testing I am settled for nginx and
 passenger.
 live at http://run.camping.io/

 I did try every apache combination (with passenger, with cgi, etc. etc.)
 as is simply not really working fine.
 I tried some other obscure web servers too but apparently this seems to
 work fine for now :) other servers would run the app as CGI or FastCGI. I
 am not worried about speed just ease of deployment and nginx with passenger
 seems to do the job for now. The alternative is nginx as reverse proxy but
 as Jenna rightly pointed out it would spawn a lot of thin instances that
 might or might not be used.

 I did throw the sponge at Webdav on apache. It doesn't work as expected
 and not with all clients. It seems more suitable to store quick files than
 something else.
 Can try tomorrow with nginx but perhaps it would be nicer to have a quick
 camping hack to upload  a file etc. but you can't just automate it entirely
 else you can have people running malicious code automatically...

 I can do the shell scripts to create virtual users for nginx and dns.
 Another option is to give a normal hosting for camping users. It wouldn't
 be an issue to have 100-200 trusted users to have access to this e.g. we
 can build a camping fronted  for users to apply with a selection e.g. their
 github account, why they want the deployment hosting etc. and then once
 approved we would give them a normal account that would allow them to
 upload files on SFTP and may be even shell (which BTW is something you
 don't have on heroku and other services. Of course this could be protected
 for security or given only to active people.

 How does heroku screens against abuses?
 Anyway if some of you would like to be alpha users in this system let me
 know, I will be glad to set you up as soon as I am done testing subdomains
 etc. ;)
 And of course if you have a better idea for a setup let me know.

 Regards
 David




 On Sun, Apr 1, 2012 at 1:30 AM, Jenna Fox a...@creativepony.com wrote:

 WebDav for nginx: http://wiki.nginx.org/HttpDavModule

 Or you could implement webdav as an application nginx proxies to, just as
 it proxies to ruby instances.

 —
 Jenna

 On Sunday, 1 April 2012 at 2:11 AM, david costa wrote:

 On Sat, Mar 31, 2012 at 5:36 PM, Isak Andersson icepa...@lavabit.comwrote:

 ** Actually setting up a reverse proxy gives better performance for the
 end user As you can have some sort of buffer between them. The Unicorn
 server takes care of whatever nginx asks for, and while it waits it can
 server whatever unicorn outputs. It doesn't have to wait for what it
 outputs itself to get done because you have a queue. Or something like that.


 Mh I am not really sure it would be a better performance as it would be
 anyway more than one process. I think that phusion passenger is pretty much
 the most robust solution for this.


 Some people actually out Apache to do PHP stuff while nginx acts as a
 reverse proxy and actually shows things to the user in the same way you'd
 do with Unicorn/Thin


 Well this would be even more load as two web servers will run at the same
 time. Apache + Phusion passenger already lets you run .php or anything you
 want.

 But this is not the issue really. I think this is all fine in term of
 mono user. Question: if you have 100 users how do you configure it ?
 How can you add webdav support on the top of the Nginx + unicorn setup ?


 But perhaps That's too much for a server ment to serve other peoples
 applications! Then you have to scale down the resources used.


 I am open to anything but if I can't do something I might ask for some
 brave volunteers to set it up as I really never tried anything else beside
 for local/quick test deployment.
  ___
 Camping-list mailing list
 Camping-list@rubyforge.org
 http://rubyforge.org/mailman/listinfo/camping-list



 ___
 Camping-list mailing list
 Camping-list@rubyforge.org
 http://rubyforge.org/mailman/listinfo/camping-list



___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list

Re: dead easy deployment / Camping on the fly

2012-04-01 Thread david costa
Okay :D after many many hours of testing I am settled for nginx and
passenger.
live at http://run.camping.io/

I did try every apache combination (with passenger, with cgi, etc. etc.) as
is simply not really working fine.
I tried some other obscure web servers too but apparently this seems to
work fine for now :) other servers would run the app as CGI or FastCGI. I
am not worried about speed just ease of deployment and nginx with passenger
seems to do the job for now. The alternative is nginx as reverse proxy but
as Jenna rightly pointed out it would spawn a lot of thin instances that
might or might not be used.

I did throw the sponge at Webdav on apache. It doesn't work as expected and
not with all clients. It seems more suitable to store quick files than
something else.
Can try tomorrow with nginx but perhaps it would be nicer to have a quick
camping hack to upload  a file etc. but you can't just automate it entirely
else you can have people running malicious code automatically...

I can do the shell scripts to create virtual users for nginx and dns.
Another option is to give a normal hosting for camping users. It wouldn't
be an issue to have 100-200 trusted users to have access to this e.g. we
can build a camping fronted  for users to apply with a selection e.g. their
github account, why they want the deployment hosting etc. and then once
approved we would give them a normal account that would allow them to
upload files on SFTP and may be even shell (which BTW is something you
don't have on heroku and other services. Of course this could be protected
for security or given only to active people.

How does heroku screens against abuses?
Anyway if some of you would like to be alpha users in this system let me
know, I will be glad to set you up as soon as I am done testing subdomains
etc. ;)
And of course if you have a better idea for a setup let me know.

Regards
David




On Sun, Apr 1, 2012 at 1:30 AM, Jenna Fox a...@creativepony.com wrote:

 WebDav for nginx: http://wiki.nginx.org/HttpDavModule

 Or you could implement webdav as an application nginx proxies to, just as
 it proxies to ruby instances.

 —
 Jenna

 On Sunday, 1 April 2012 at 2:11 AM, david costa wrote:

 On Sat, Mar 31, 2012 at 5:36 PM, Isak Andersson icepa...@lavabit.comwrote:

 ** Actually setting up a reverse proxy gives better performance for the
 end user As you can have some sort of buffer between them. The Unicorn
 server takes care of whatever nginx asks for, and while it waits it can
 server whatever unicorn outputs. It doesn't have to wait for what it
 outputs itself to get done because you have a queue. Or something like that.


 Mh I am not really sure it would be a better performance as it would be
 anyway more than one process. I think that phusion passenger is pretty much
 the most robust solution for this.


 Some people actually out Apache to do PHP stuff while nginx acts as a
 reverse proxy and actually shows things to the user in the same way you'd
 do with Unicorn/Thin


 Well this would be even more load as two web servers will run at the same
 time. Apache + Phusion passenger already lets you run .php or anything you
 want.

 But this is not the issue really. I think this is all fine in term of mono
 user. Question: if you have 100 users how do you configure it ?
 How can you add webdav support on the top of the Nginx + unicorn setup ?


 But perhaps That's too much for a server ment to serve other peoples
 applications! Then you have to scale down the resources used.


 I am open to anything but if I can't do something I might ask for some
 brave volunteers to set it up as I really never tried anything else beside
 for local/quick test deployment.
  ___
 Camping-list mailing list
 Camping-list@rubyforge.org
 http://rubyforge.org/mailman/listinfo/camping-list



 ___
 Camping-list mailing list
 Camping-list@rubyforge.org
 http://rubyforge.org/mailman/listinfo/camping-list

___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list

Re: dead easy deployment / Camping on the fly

2012-04-01 Thread Peter Retief
Wonder if Google might help getting camping to run on app engine?

On 1 April 2012 10:03, david costa gurugeek...@gmail.com wrote:

 Ah I forgot
 you can compare camping running on thin here
 http://run.camping.io:3301/
 vs passenger at http://run.camping.io

 apparently db has some problems with fusion passenger  (see
 http://run.camping.io create HTML page and test HTML page. The same code
 on thin works just fine... umhh oh no don't feel like more debugging ):



 On Sun, Apr 1, 2012 at 9:51 AM, david costa gurugeek...@gmail.com wrote:

 Okay :D after many many hours of testing I am settled for nginx and
 passenger.
 live at http://run.camping.io/

 I did try every apache combination (with passenger, with cgi, etc. etc.)
 as is simply not really working fine.
 I tried some other obscure web servers too but apparently this seems to
 work fine for now :) other servers would run the app as CGI or FastCGI. I
 am not worried about speed just ease of deployment and nginx with passenger
 seems to do the job for now. The alternative is nginx as reverse proxy but
 as Jenna rightly pointed out it would spawn a lot of thin instances that
 might or might not be used.

 I did throw the sponge at Webdav on apache. It doesn't work as expected
 and not with all clients. It seems more suitable to store quick files than
 something else.
 Can try tomorrow with nginx but perhaps it would be nicer to have a quick
 camping hack to upload  a file etc. but you can't just automate it entirely
 else you can have people running malicious code automatically...

 I can do the shell scripts to create virtual users for nginx and dns.
 Another option is to give a normal hosting for camping users. It wouldn't
 be an issue to have 100-200 trusted users to have access to this e.g. we
 can build a camping fronted  for users to apply with a selection e.g. their
 github account, why they want the deployment hosting etc. and then once
 approved we would give them a normal account that would allow them to
 upload files on SFTP and may be even shell (which BTW is something you
 don't have on heroku and other services. Of course this could be protected
 for security or given only to active people.

 How does heroku screens against abuses?
 Anyway if some of you would like to be alpha users in this system let me
 know, I will be glad to set you up as soon as I am done testing subdomains
 etc. ;)
 And of course if you have a better idea for a setup let me know.

 Regards
 David




 On Sun, Apr 1, 2012 at 1:30 AM, Jenna Fox a...@creativepony.com wrote:

 WebDav for nginx: http://wiki.nginx.org/HttpDavModule

 Or you could implement webdav as an application nginx proxies to, just
 as it proxies to ruby instances.

 —
 Jenna

 On Sunday, 1 April 2012 at 2:11 AM, david costa wrote:

 On Sat, Mar 31, 2012 at 5:36 PM, Isak Andersson icepa...@lavabit.comwrote:

 ** Actually setting up a reverse proxy gives better performance for the
 end user As you can have some sort of buffer between them. The Unicorn
 server takes care of whatever nginx asks for, and while it waits it can
 server whatever unicorn outputs. It doesn't have to wait for what it
 outputs itself to get done because you have a queue. Or something like that.


 Mh I am not really sure it would be a better performance as it would be
 anyway more than one process. I think that phusion passenger is pretty much
 the most robust solution for this.


 Some people actually out Apache to do PHP stuff while nginx acts as a
 reverse proxy and actually shows things to the user in the same way you'd
 do with Unicorn/Thin


 Well this would be even more load as two web servers will run at the
 same time. Apache + Phusion passenger already lets you run .php or anything
 you want.

 But this is not the issue really. I think this is all fine in term of
 mono user. Question: if you have 100 users how do you configure it ?
 How can you add webdav support on the top of the Nginx + unicorn setup ?


 But perhaps That's too much for a server ment to serve other peoples
 applications! Then you have to scale down the resources used.


 I am open to anything but if I can't do something I might ask for some
 brave volunteers to set it up as I really never tried anything else beside
 for local/quick test deployment.
  ___
 Camping-list mailing list
 Camping-list@rubyforge.org
 http://rubyforge.org/mailman/listinfo/camping-list



 ___
 Camping-list mailing list
 Camping-list@rubyforge.org
 http://rubyforge.org/mailman/listinfo/camping-list




 ___
 Camping-list mailing list
 Camping-list@rubyforge.org
 http://rubyforge.org/mailman/listinfo/camping-list

___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list

Re: dead easy deployment / Camping on the fly

2012-04-01 Thread david costa
Umh I doubt it was already here
http://camping.io/Book/-Publishing-an-App#Using-Google-App-Engine
but is far from an automated, one line /one upload system


On Sun, Apr 1, 2012 at 10:23 AM, Peter Retief peterret...@gmail.com wrote:

 Wonder if Google might help getting camping to run on app engine?


 On 1 April 2012 10:03, david costa gurugeek...@gmail.com wrote:

 Ah I forgot
 you can compare camping running on thin here
 http://run.camping.io:3301/
 vs passenger at http://run.camping.io

 apparently db has some problems with fusion passenger  (see
 http://run.camping.io create HTML page and test HTML page. The same code
 on thin works just fine... umhh oh no don't feel like more debugging ):



 On Sun, Apr 1, 2012 at 9:51 AM, david costa gurugeek...@gmail.comwrote:

 Okay :D after many many hours of testing I am settled for nginx and
 passenger.
 live at http://run.camping.io/

 I did try every apache combination (with passenger, with cgi, etc. etc.)
 as is simply not really working fine.
 I tried some other obscure web servers too but apparently this seems to
 work fine for now :) other servers would run the app as CGI or FastCGI. I
 am not worried about speed just ease of deployment and nginx with passenger
 seems to do the job for now. The alternative is nginx as reverse proxy but
 as Jenna rightly pointed out it would spawn a lot of thin instances that
 might or might not be used.

 I did throw the sponge at Webdav on apache. It doesn't work as expected
 and not with all clients. It seems more suitable to store quick files than
 something else.
 Can try tomorrow with nginx but perhaps it would be nicer to have a
 quick camping hack to upload  a file etc. but you can't just automate it
 entirely else you can have people running malicious code automatically...

 I can do the shell scripts to create virtual users for nginx and dns.
 Another option is to give a normal hosting for camping users. It wouldn't
 be an issue to have 100-200 trusted users to have access to this e.g. we
 can build a camping fronted  for users to apply with a selection e.g. their
 github account, why they want the deployment hosting etc. and then once
 approved we would give them a normal account that would allow them to
 upload files on SFTP and may be even shell (which BTW is something you
 don't have on heroku and other services. Of course this could be protected
 for security or given only to active people.

 How does heroku screens against abuses?
 Anyway if some of you would like to be alpha users in this system let me
 know, I will be glad to set you up as soon as I am done testing subdomains
 etc. ;)
 And of course if you have a better idea for a setup let me know.

 Regards
 David




 On Sun, Apr 1, 2012 at 1:30 AM, Jenna Fox a...@creativepony.com wrote:

 WebDav for nginx: http://wiki.nginx.org/HttpDavModule

 Or you could implement webdav as an application nginx proxies to, just
 as it proxies to ruby instances.

 —
 Jenna

 On Sunday, 1 April 2012 at 2:11 AM, david costa wrote:

 On Sat, Mar 31, 2012 at 5:36 PM, Isak Andersson 
 icepa...@lavabit.comwrote:

 ** Actually setting up a reverse proxy gives better performance for
 the end user As you can have some sort of buffer between them. The Unicorn
 server takes care of whatever nginx asks for, and while it waits it can
 server whatever unicorn outputs. It doesn't have to wait for what it
 outputs itself to get done because you have a queue. Or something like 
 that.


 Mh I am not really sure it would be a better performance as it would be
 anyway more than one process. I think that phusion passenger is pretty much
 the most robust solution for this.


 Some people actually out Apache to do PHP stuff while nginx acts as a
 reverse proxy and actually shows things to the user in the same way you'd
 do with Unicorn/Thin


 Well this would be even more load as two web servers will run at the
 same time. Apache + Phusion passenger already lets you run .php or anything
 you want.

 But this is not the issue really. I think this is all fine in term of
 mono user. Question: if you have 100 users how do you configure it ?
 How can you add webdav support on the top of the Nginx + unicorn setup ?


 But perhaps That's too much for a server ment to serve other peoples
 applications! Then you have to scale down the resources used.


 I am open to anything but if I can't do something I might ask for some
 brave volunteers to set it up as I really never tried anything else beside
 for local/quick test deployment.
  ___
 Camping-list mailing list
 Camping-list@rubyforge.org
 http://rubyforge.org/mailman/listinfo/camping-list



 ___
 Camping-list mailing list
 Camping-list@rubyforge.org
 http://rubyforge.org/mailman/listinfo/camping-list




 ___
 Camping-list mailing list
 Camping-list@rubyforge.org
 

Re: dead easy deployment / Camping on the fly

2012-04-01 Thread Jenna Fox
Hm. I know the main guy responsible for App Engine, and, well, I certainly 
wouldn't build a platform atop it - even aside from the huge glaring issue that 
to have an app which can store data persistently, you need to use google's 
proprietary database software.

Heroku doesn't screen against abuse at all. Heroku is not a 'shared hosting' 
provider. Their systems use the very finest jailing techniques to lock the ruby 
process in to it's own little world. It has no writable filesystem and it can 
only read what it absolutely needs to be able to read to function. All data 
storage happens over the network on separated database servers. The only type 
of abuse they need to be weary of is people using their servers to do illegal 
things - bullying, sharing illegal content, that sort of thing. They deal with 
that the same way any provider does - wait till someone makes a complaint. 
Matz, inventor of ruby, works for heroku making exactly this sort of stuff work 
extremely well.

Still, it's not as friendly as it could be, and I personally think the trade 
offs on heroku are not very good for beginners (you have to use a complex 
database system, and cannot use the filesystem to store anything but static 
assets).

Good work getting this server up David! I'm pretty excited. It sounds like 
you're having some pretty annoying deployment issues. As it's being quite a 
hassle, perhaps we should be thinking more deeply about creating our own 
special server for this task - something like the modified unicorn I mentioned 
earlier somewhere.  

—
Jenna


On Sunday, 1 April 2012 at 6:23 PM, Peter Retief wrote:

 Wonder if Google might help getting camping to run on app engine?
  
 On 1 April 2012 10:03, david costa gurugeek...@gmail.com 
 (mailto:gurugeek...@gmail.com) wrote:
  Ah I forgot
  you can compare camping running on thin here
  http://run.camping.io:3301/
  vs passenger at http://run.camping.io
   
  apparently db has some problems with fusion passenger  (see 
  http://run.camping.io create HTML page and test HTML page. The same code on 
  thin works just fine... umhh oh no don't feel like more debugging ):  
   
   
   
  On Sun, Apr 1, 2012 at 9:51 AM, david costa gurugeek...@gmail.com 
  (mailto:gurugeek...@gmail.com) wrote:
   Okay :D after many many hours of testing I am settled for nginx and 
   passenger.
   live at http://run.camping.io/


   I did try every apache combination (with passenger, with cgi, etc. etc.) 
   as is simply not really working fine.  
   I tried some other obscure web servers too but apparently this seems to 
   work fine for now :) other servers would run the app as CGI or FastCGI. I 
   am not worried about speed just ease of deployment and nginx with 
   passenger seems to do the job for now. The alternative is nginx as 
   reverse proxy but as Jenna rightly pointed out it would spawn a lot of 
   thin instances that might or might not be used.

   I did throw the sponge at Webdav on apache. It doesn't work as expected 
   and not with all clients. It seems more suitable to store quick files 
   than something else.
   Can try tomorrow with nginx but perhaps it would be nicer to have a quick 
   camping hack to upload  a file etc. but you can't just automate it 
   entirely else you can have people running malicious code automatically... 


   I can do the shell scripts to create virtual users for nginx and dns. 
   Another option is to give a normal hosting for camping users. It wouldn't 
   be an issue to have 100-200 trusted users to have access to this e.g. we 
   can build a camping fronted  for users to apply with a selection e.g. 
   their github account, why they want the deployment hosting etc. and then 
   once approved we would give them a normal account that would allow them 
   to upload files on SFTP and may be even shell (which BTW is something you 
   don't have on heroku and other services. Of course this could be 
   protected for security or given only to active people.   

   How does heroku screens against abuses?   
   Anyway if some of you would like to be alpha users in this system let me 
   know, I will be glad to set you up as soon as I am done testing 
   subdomains etc. ;)
   And of course if you have a better idea for a setup let me know.

   Regards
   David




   On Sun, Apr 1, 2012 at 1:30 AM, Jenna Fox a...@creativepony.com 
   (mailto:a...@creativepony.com) wrote:
WebDav for nginx: http://wiki.nginx.org/HttpDavModule
 
Or you could implement webdav as an application nginx proxies to, just 
as it proxies to ruby instances.  
 
—
Jenna
 
 
On Sunday, 1 April 2012 at 2:11 AM, david costa wrote:
 
 
 On Sat, Mar 31, 2012 at 5:36 PM, Isak Andersson icepa...@lavabit.com 
 (mailto:icepa...@lavabit.com) wrote:
  Actually setting up a reverse proxy gives better performance for 
  the end user As you can have some sort of buffer between 

Re: dead easy deployment / Camping on the fly

2012-04-01 Thread Isak Andersson
Remember that we should pretty much make a Gemfile mandatory if the user makes 
use of gems other than Camping. For example, rack_csrf. And we should make sure 
that dependencies get installed. :)
-- 
Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.

Jenna Fox a...@creativepony.com skrev:

Hm. I know the main guy responsible for App Engine, and, well, I certainly 
wouldn't build a platform atop it - even aside from the huge glaring issue that 
to have an app which can store data persistently, you need to use google's 
proprietary database software.


Heroku doesn't screen against abuse at all. Heroku is not a 'shared hosting' 
provider. Their systems use the very finest jailing techniques to lock the ruby 
process in to it's own little world. It has no writable filesystem and it can 
only read what it absolutely needs to be able to read to function. All data 
storage happens over the network on separated database servers. The only type 
of abuse they need to be weary of is people using their servers to do illegal 
things - bullying, sharing illegal content, that sort of thing. They deal with 
that the same way any provider does - wait till someone makes a complaint. 
Matz, inventor of ruby, works for heroku making exactly this sort of stuff work 
extremely well.


Still, it's not as friendly as it could be, and I personally think the trade 
offs on heroku are not very good for beginners (you have to use a complex 
database system, and cannot use the filesystem to store anything but static 
assets).


Good work getting this server up David! I'm pretty excited. It sounds like 
you're having some pretty annoying deployment issues. As it's being quite a 
hassle, perhaps we should be thinking more deeply about creating our own 
special server for this task - something like the modified unicorn I mentioned 
earlier somewhere.


—

Jenna


On Sunday, 1 April 2012 at 6:23 PM, Peter Retief wrote:

Wonder if Google might help getting camping to run on app engine?

On 1 April 2012 10:03, david costa gurugeek...@gmail.com wrote:

Ah I forgot

you can compare camping running on thin here

http://run.camping.io:3301/

vs passenger at http://run.camping.io


apparently db has some problems with fusion passenger  (see 
http://run.camping.io create HTML page and test HTML page. The same code on 
thin works just fine... umhh oh no don't feel like more debugging ):




On Sun, Apr 1, 2012 at 9:51 AM, david costa gurugeek...@gmail.com wrote:

Okay :D after many many hours of testing I am settled for nginx and passenger.

live at http://run.camping.io/


I did try every apache combination (with passenger, with cgi, etc. etc.) as is 
simply not really working fine.

I tried some other obscure web servers too but apparently this seems to work 
fine for now :) other servers would run the app as CGI or FastCGI. I am not 
worried about speed just ease of deployment and nginx with passenger seems to 
do the job for now. The alternative is nginx as reverse proxy but as Jenna 
rightly pointed out it would spawn a lot of thin instances that might or might 
not be used.


I did throw the sponge at Webdav on apache. It doesn't work as expected and not 
with all clients. It seems more suitable to store quick files than something 
else.

Can try tomorrow with nginx but perhaps it would be nicer to have a quick 
camping hack to upload  a file etc. but you can't just automate it entirely 
else you can have people running malicious code automatically... 


I can do the shell scripts to create virtual users for nginx and dns. Another 
option is to give a normal hosting for camping users. It wouldn't be an issue 
to have 100-200 trusted users to have access to this e.g. we can build a 
camping fronted  for users to apply with a selection e.g. their github account, 
why they want the deployment hosting etc. and then once approved we would give 
them a normal account that would allow them to upload files on SFTP and may be 
even shell (which BTW is something you don't have on heroku and other services. 
Of course this could be protected for security or given only to active people. 


How does heroku screens against abuses?  

Anyway if some of you would like to be alpha users in this system let me know, 
I will be glad to set you up as soon as I am done testing subdomains etc. ;)

And of course if you have a better idea for a setup let me know.


Regards

David





On Sun, Apr 1, 2012 at 1:30 AM, Jenna Fox a...@creativepony.com wrote:

WebDav for nginx: http://wiki.nginx.org/HttpDavModule


Or you could implement webdav as an application nginx proxies to, just as it 
proxies to ruby instances.


—

Jenna


On Sunday, 1 April 2012 at 2:11 AM, david costa wrote:

On Sat, Mar 31, 2012 at 5:36 PM, Isak Andersson icepa...@lavabit.com wrote:

Actually setting up a reverse proxy gives better performance for the end user 
As you can have some sort of buffer between them. The Unicorn server takes care 
of whatever nginx asks for, 

Re: dead easy deployment / Camping on the fly

2012-04-01 Thread Jenna Fox
I don't think we need to go as far as automatically installing gems - securing 
ruby is a pretty big challenge, but securing gcc? no way.  

—
Jenna


On Sunday, 1 April 2012 at 8:25 PM, Isak Andersson wrote:

 Remember that we should pretty much make a Gemfile mandatory if the user 
 makes use of gems other than Camping. For example, rack_csrf. And we should 
 make sure that dependencies get installed. :)
 --  
 Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.
  
 Jenna Fox a...@creativepony.com (mailto:a...@creativepony.com) skrev:
  Hm. I know the main guy responsible for App Engine, and, well, I certainly 
  wouldn't build a platform atop it - even aside from the huge glaring issue 
  that to have an app which can store data persistently, you need to use 
  google's proprietary database software.
   
  Heroku doesn't screen against abuse at all. Heroku is not a 'shared 
  hosting' provider. Their systems use the very finest jailing techniques to 
  lock the ruby process in to it's own little world. It has no writable 
  filesystem and it can only read what it absolutely needs to be able to read 
  to function. All data storage happens over the network on separated 
  database servers. The only type of abuse they need to be weary of is people 
  using their servers to do illegal things - bullying, sharing illegal 
  content, that sort of thing. They deal with that the same way any provider 
  does - wait till someone makes a complaint. Matz, inventor of ruby, works 
  for heroku making exactly this sort of stuff work extremely well.
   
  Still, it's not as friendly as it could be, and I personally think the 
  trade offs on heroku are not very good for beginners (you have to use a 
  complex database system, and cannot use the filesystem to store anything 
  but static assets).
   
  Good work getting this server up David! I'm pretty excited. It sounds like 
  you're having some pretty annoying deployment issues. As it's being quite a 
  hassle, perhaps we should be thinking more deeply about creating our own 
  special server for this task - something like the modified unicorn I 
  mentioned earlier somewhere.  
   
  —
  Jenna
   
   
  On Sunday, 1 April 2012 at 6:23 PM, Peter Retief wrote:
   
   Wonder if Google might help getting camping to run on app engine?

   On 1 April 2012 10:03, david costa gurugeek...@gmail.com 
   (mailto:gurugeek...@gmail.com) wrote:
Ah I forgot
you can compare camping running on thin here
http://run.camping.io:3301/
vs passenger at http://run.camping.io
 
apparently db has some problems with fusion passenger  (see 
http://run.camping.io create HTML page and test HTML page. The same 
code on thin works just fine... umhh oh no don't feel like more 
debugging ):  
 
 
 
On Sun, Apr 1, 2012 at 9:51 AM, david costa gurugeek...@gmail.com 
(mailto:gurugeek...@gmail.com) wrote:
 Okay :D after many many hours of testing I am settled for nginx and 
 passenger.
 live at http://run.camping.io/
  
  
 I did try every apache combination (with passenger, with cgi, etc. 
 etc.) as is simply not really working fine.  
 I tried some other obscure web servers too but apparently this seems 
 to work fine for now :) other servers would run the app as CGI or 
 FastCGI. I am not worried about speed just ease of deployment and 
 nginx with passenger seems to do the job for now. The alternative is 
 nginx as reverse proxy but as Jenna rightly pointed out it would 
 spawn a lot of thin instances that might or might not be used.
  
 I did throw the sponge at Webdav on apache. It doesn't work as 
 expected and not with all clients. It seems more suitable to store 
 quick files than something else.
 Can try tomorrow with nginx but perhaps it would be nicer to have a 
 quick camping hack to upload  a file etc. but you can't just automate 
 it entirely else you can have people running malicious code 
 automatically...  
  
 I can do the shell scripts to create virtual users for nginx and dns. 
 Another option is to give a normal hosting for camping users. It 
 wouldn't be an issue to have 100-200 trusted users to have access to 
 this e.g. we can build a camping fronted  for users to apply with a 
 selection e.g. their github account, why they want the deployment 
 hosting etc. and then once approved we would give them a normal 
 account that would allow them to upload files on SFTP and may be even 
 shell (which BTW is something you don't have on heroku and other 
 services. Of course this could be protected for security or given 
 only to active people.   
  
 How does heroku screens against abuses?   
 Anyway if some of you would like to be alpha users in this system let 
 me know, I will be glad to set you up as soon as I am done testing 
 subdomains etc. ;)
 And 

Re: dead easy deployment / Camping on the fly

2012-04-01 Thread Isak Andersson
Well. Isn't it kind of possible to just hack the gem installation in using the 
ruby quotes that execute code on the system. I can't type them on the phone but 
I think you know what I mean. Kind of a security issue isn't it?

Anyways. Perhaps we could offer some Gems to pick from that we think are 
quality! (rack_csrf, scrypt).
-- 
Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.

Jenna Fox a...@creativepony.com skrev:

I don't think we need to go as far as automatically installing gems - securing 
ruby is a pretty big challenge, but securing gcc? no way. 


—

Jenna


On Sunday, 1 April 2012 at 8:25 PM, Isak Andersson wrote:

Remember that we should pretty much make a Gemfile mandatory if the user makes 
use of gems other than Camping. For example, rack_csrf. And we should make sure 
that dependencies get installed. :)
-- 
Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.

Jenna Fox a...@creativepony.com skrev:

Hm. I know the main guy responsible for App Engine, and, well, I certainly 
wouldn't build a platform atop it - even aside from the huge glaring issue that 
to have an app which can store data persistently, you need to use google's 
proprietary database software.


Heroku doesn't screen against abuse at all. Heroku is not a 'shared hosting' 
provider. Their systems use the very finest jailing techniques to lock the ruby 
process in to it's own little world. It has no writable filesystem and it can 
only read what it absolutely needs to be able to read to function. All data 
storage happens over the network on separated database servers. The only type 
of abuse they need to be weary of is people using their servers to do illegal 
things - bullying, sharing illegal content, that sort of thing. They deal with 
that the same way any provider does - wait till someone makes a complaint. 
Matz, inventor of ruby, works for heroku making exactly this sort of stuff work 
extremely well.


Still, it's not as friendly as it could be, and I personally think the trade 
offs on heroku are not very good for beginners (you have to use a complex 
database system, and cannot use the filesystem to store anything but static 
assets).


Good work getting this server up David! I'm pretty excited. It sounds like 
you're having some pretty annoying deployment issues. As it's being quite a 
hassle, perhaps we should be thinking more deeply about creating our own 
special server for this task - something like the modified unicorn I mentioned 
earlier somewhere.


—

Jenna


On Sunday, 1 April 2012 at 6:23 PM, Peter Retief wrote:

Wonder if Google might help getting camping to run on app engine?

On 1 April 2012 10:03, david costa gurugeek...@gmail.com wrote:

Ah I forgot

you can compare camping running on thin here

http://run.camping.io:3301/

vs passenger at http://run.camping.io


apparently db has some problems with fusion passenger  (see 
http://run.camping.io create HTML page and test HTML page. The same code on 
thin works just fine... umhh oh no don't feel like more debugging ):




On Sun, Apr 1, 2012 at 9:51 AM, david costa gurugeek...@gmail.com wrote:

Okay :D after many many hours of testing I am settled for nginx and passenger.

live at http://run.camping.io/


I did try every apache combination (with passenger, with cgi, etc. etc.) as is 
simply not really working fine.

I tried some other obscure web servers too but apparently this seems to work 
fine for now :) other servers would run the app as CGI or FastCGI. I am not 
worried about speed just ease of deployment and nginx with passenger seems to 
do the job for now. The alternative is nginx as reverse proxy but as Jenna 
rightly pointed out it would spawn a lot of thin instances that might or might 
not be used.


I did throw the sponge at Webdav on apache. It doesn't work as expected and not 
with all clients. It seems more suitable to store quick files than something 
else.

Can try tomorrow with nginx but perhaps it would be nicer to have a quick 
camping hack to upload  a file etc. but you can't just automate it entirely 
else you can have people running malicious code automatically... 


I can do the shell scripts to create virtual users for nginx and dns. Another 
option is to give a normal hosting for camping users. It wouldn't be an issue 
to have 100-200 trusted users to have access to this e.g. we can build a 
camping fronted  for users to apply with a selection e.g. their github account, 
why they want the deployment hosting etc. and then once approved we would give 
them a normal account that would allow them to upload files on SFTP and may be 
even shell (which BTW is something you don't have on heroku and other services. 
Of course this could be protected for security or given only to active people. 


How does heroku screens against abuses?  

Anyway if some of you would like to be alpha users in this system let me know, 
I will be glad to set you up as soon as I am done testing subdomains 

Re: dead easy deployment / Camping on the fly

2012-04-01 Thread Jenna Fox
@Isak Anything run with the `backticks operator` runs with the same privileges 
as the process which launched them, if using system level sandboxing, or if 
using some crazy sandbox built in to ruby (which probably wouldn't be very 
good, but maybe good enough) it'd probably just disable backticks feature.


On 01/04/2012, at 9:31 PM, Isak Andersson wrote:

 Well. Isn't it kind of possible to just hack the gem installation in using 
 the ruby quotes that execute code on the system. I can't type them on the 
 phone but I think you know what I mean. Kind of a security issue isn't it?
 
 Anyways. Perhaps we could offer some Gems to pick from that we think are 
 quality! (rack_csrf, scrypt).
 -- 
 Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.
 
 Jenna Fox a...@creativepony.com skrev:
 I don't think we need to go as far as automatically installing gems - 
 securing ruby is a pretty big challenge, but securing gcc? no way.
 
 —
 Jenna
 
 On Sunday, 1 April 2012 at 8:25 PM, Isak Andersson wrote:
 
 Remember that we should pretty much make a Gemfile mandatory if the user 
 makes use of gems other than Camping. For example, rack_csrf. And we should 
 make sure that dependencies get installed. :)
 -- 
 Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.
 
 Jenna Fox a...@creativepony.com skrev:
 
 Hm. I know the main guy responsible for App Engine, and, well, I certainly 
 wouldn't build a platform atop it - even aside from the huge glaring issue 
 that to have an app which can store data persistently, you need to use 
 google's proprietary database software.
 
 Heroku doesn't screen against abuse at all. Heroku is not a 'shared 
 hosting' provider. Their systems use the very finest jailing techniques to 
 lock the ruby process in to it's own little world. It has no writable 
 filesystem and it can only read what it absolutely needs to be able to read 
 to function. All data storage happens over the network on separated 
 database servers. The only type of abuse they need to be weary of is people 
 using their servers to do illegal things - bullying, sharing illegal 
 content, that sort of thing. They deal with that the same way any provider 
 does - wait till someone makes a complaint. Matz, inventor of ruby, works 
 for heroku making exactly this sort of stuff work extremely well.
 
 Still, it's not as friendly as it could be, and I personally think the 
 trade offs on heroku are not very good for beginners (you have to use a 
 complex database system, and cannot use the filesystem to store anything 
 but static assets).
 
 Good work getting this server up David! I'm pretty excited. It sounds like 
 you're having some pretty annoying deployment issues. As it's being quite a 
 hassle, perhaps we should be thinking more deeply about creating our own 
 special server for this task - something like the modified unicorn I 
 mentioned earlier somewhere.
 
 —
 Jenna
 
 On Sunday, 1 April 2012 at 6:23 PM, Peter Retief wrote:
 
 Wonder if Google might help getting camping to run on app engine?
 
 On 1 April 2012 10:03, david costa gurugeek...@gmail.com wrote:
 Ah I forgot
 you can compare camping running on thin here
 http://run.camping.io:3301/
 vs passenger at http://run.camping.io
 
 apparently db has some problems with fusion passenger  (see 
 http://run.camping.io create HTML page and test HTML page. The same code 
 on thin works just fine... umhh oh no don't feel like more debugging ):
 
 
 
 On Sun, Apr 1, 2012 at 9:51 AM, david costa gurugeek...@gmail.com wrote:
 Okay :D after many many hours of testing I am settled for nginx and 
 passenger.
 live at http://run.camping.io/
 
 I did try every apache combination (with passenger, with cgi, etc. etc.) 
 as is simply not really working fine.
 I tried some other obscure web servers too but apparently this seems to 
 work fine for now :) other servers would run the app as CGI or FastCGI. 
 I am not worried about speed just ease of deployment and nginx with 
 passenger seems to do the job for now. The alternative is nginx as 
 reverse proxy but as Jenna rightly pointed out it would spawn a lot of 
 thin instances that might or might not be used.
 
 I did throw the sponge at Webdav on apache. It doesn't work as expected 
 and not with all clients. It seems more suitable to store quick files 
 than something else.
 Can try tomorrow with nginx but perhaps it would be nicer to have a 
 quick camping hack to upload  a file etc. but you can't just automate it 
 entirely else you can have people running malicious code 
 automatically... 
 
 I can do the shell scripts to create virtual users for nginx and dns. 
 Another option is to give a normal hosting for camping users. It 
 wouldn't be an issue to have 100-200 trusted users to have access to 
 this e.g. we can build a camping fronted  for users to apply with a 
 selection e.g. their github account, why they want the deployment 
 hosting etc. and then once approved we would give 

Re: dead easy deployment / Camping on the fly

2012-04-01 Thread Isak Andersson
Okay then. But then we'd make sure that the applications don't have privilege 
to install gems then.
-- 
Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.

Jenna Fox a...@creativepony.com skrev:

@Isak Anything run with the `backticks operator` runs with the same privileges 
as the process which launched them, if using system level sandboxing, or if 
using some crazy sandbox built in to ruby (which probably wouldn't be very 
good, but maybe good enough) it'd probably just disable backticks feature.



On 01/04/2012, at 9:31 PM, Isak Andersson wrote:


Well. Isn't it kind of possible to just hack the gem installation in using the 
ruby quotes that execute code on the system. I can't type them on the phone but 
I think you know what I mean. Kind of a security issue isn't it?

Anyways. Perhaps we could offer some Gems to pick from that we think are 
quality! (rack_csrf, scrypt).
-- 
Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.

Jenna Fox a...@creativepony.com skrev:

I don't think we need to go as far as automatically installing gems - securing 
ruby is a pretty big challenge, but securing gcc? no way. 


—

Jenna


On Sunday, 1 April 2012 at 8:25 PM, Isak Andersson wrote:

Remember that we should pretty much make a Gemfile mandatory if the user makes 
use of gems other than Camping. For example, rack_csrf. And we should make sure 
that dependencies get installed. :)
-- 
Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.

Jenna Fox a...@creativepony.com skrev:

Hm. I know the main guy responsible for App Engine, and, well, I certainly 
wouldn't build a platform atop it - even aside from the huge glaring issue that 
to have an app which can store data persistently, you need to use google's 
proprietary database software.


Heroku doesn't screen against abuse at all. Heroku is not a 'shared hosting' 
provider. Their systems use the very finest jailing techniques to lock the ruby 
process in to it's own little world. It has no writable filesystem and it can 
only read what it absolutely needs to be able to read to function. All data 
storage happens over the network on separated database servers. The only type 
of abuse they need to be weary of is people using their servers to do illegal 
things - bullying, sharing illegal content, that sort of thing. They deal with 
that the same way any provider does - wait till someone makes a complaint. 
Matz, inventor of ruby, works for heroku making exactly this sort of stuff work 
extremely well.


Still, it's not as friendly as it could be, and I personally think the trade 
offs on heroku are not very good for beginners (you have to use a complex 
database system, and cannot use the filesystem to store anything but static 
assets).


Good work getting this server up David! I'm pretty excited. It sounds like 
you're having some pretty annoying deployment issues. As it's being quite a 
hassle, perhaps we should be thinking more deeply about creating our own 
special server for this task - something like the modified unicorn I mentioned 
earlier somewhere.


—

Jenna


On Sunday, 1 April 2012 at 6:23 PM, Peter Retief wrote:

Wonder if Google might help getting camping to run on app engine?

On 1 April 2012 10:03, david costa gurugeek...@gmail.com wrote:

Ah I forgot

you can compare camping running on thin here

http://run.camping.io:3301/

vs passenger at http://run.camping.io


apparently db has some problems with fusion passenger  (see 
http://run.camping.io create HTML page and test HTML page. The same code on 
thin works just fine... umhh oh no don't feel like more debugging ):




On Sun, Apr 1, 2012 at 9:51 AM, david costa gurugeek...@gmail.com wrote:

Okay :D after many many hours of testing I am settled for nginx and passenger.

live at http://run.camping.io/


I did try every apache combination (with passenger, with cgi, etc. etc.) as is 
simply not really working fine.

I tried some other obscure web servers too but apparently this seems to work 
fine for now :) other servers would run the app as CGI or FastCGI. I am not 
worried about speed just ease of deployment and nginx with passenger seems to 
do the job for now. The alternative is nginx as reverse proxy but as Jenna 
rightly pointed out it would spawn a lot of thin instances that might or might 
not be used.


I did throw the sponge at Webdav on apache. It doesn't work as expected and not 
with all clients. It seems more suitable to store quick files than something 
else.

Can try tomorrow with nginx but perhaps it would be nicer to have a quick 
camping hack to upload  a file etc. but you can't just automate it entirely 
else you can have people running malicious code automatically... 


I can do the shell scripts to create virtual users for nginx and dns. Another 
option is to give a normal hosting for camping users. It wouldn't be an issue 
to have 100-200 trusted users to have access to this e.g. we can build a 
camping fronted  

Re: dead easy deployment / Camping on the fly

2012-04-01 Thread Dave Everitt
A bit late in the day, but (quick and probably uninformed thought,  
given the volume of messages I just skimmed) might rvm help manage  
Ruby installs/updates/gems safely? - DaveE



Hello again ! :)
well in theory we can chrot jail users but the best way is to  
install the gems that people need perhaps the most used ones. It  
will then work system wide !
The big question is who will be your typical user. If is someone you  
trust then you can give them even limited ssh + sftp :)


Back to my ignorance: how do you folks run camping in a server ? do  
you use fcgi ? At work we used to run a fairly big production  
environment made of rails  running with lighthtp  and fcgi. If we  
were to run this as a dead simple fcgi setup did anyone set this up?  
I have tried all the instructions github on how to set this up with  
dispatcher.fcgi but failed miserably.


I would can get the server installed + fcgi but how to run camping  
apps from there is a bit of a mystery.


I am slightly frustrated because of passenger not making a simple  
create page/test page http://camping.sh/ working. I know is not the  
app as it works at http://camping.sh:3301/
Unicorn: I think you would be back to have nginx as a reverse proxy  
for that which can present some problems for example, default port  
is 3301 for camping. So you would need a script to check which port  
is free and run then camping --port so seems a bit complicated.


Thanks
David


On Sun, Apr 1, 2012 at 2:38 PM, Isak Andersson  
icepa...@lavabit.com wrote:
Okay then. But then we'd make sure that the applications don't have  
privilege to install gems then.


--
Skickat från min Android-telefon med K-9 E-post. Ursäkta min  
fåordighet.


Jenna Fox a...@creativepony.com skrev:
@Isak Anything run with the `backticks operator` runs with the same  
privileges as the process which launched them, if using system level  
sandboxing, or if using some crazy sandbox built in to ruby (which  
probably wouldn't be very good, but maybe good enough) it'd probably  
just disable backticks feature.



On 01/04/2012, at 9:31 PM, Isak Andersson wrote:

Well. Isn't it kind of possible to just hack the gem installation  
in using the ruby quotes that execute code on the system. I can't  
type them on the phone but I think you know what I mean. Kind of a  
security issue isn't it?


Anyways. Perhaps we could offer some Gems to pick from that we  
think are quality! (rack_csrf, scrypt).

--
Skickat från min Android-telefon med K-9 E-post. Ursäkta min  
fåordighet.


Jenna Fox a...@creativepony.com skrev:
I don't think we need to go as far as automatically installing gems  
- securing ruby is a pretty big challenge, but securing gcc? no way.


—
Jenna

On Sunday, 1 April 2012 at 8:25 PM, Isak Andersson wrote:

Remember that we should pretty much make a Gemfile mandatory if  
the user makes use of gems other than Camping. For example,  
rack_csrf. And we should make sure that dependencies get  
installed. :)

--
Skickat från min Android-telefon med K-9 E-post. Ursäkta min  
fåordighet.


Jenna Fox a...@creativepony.com skrev:


Hm. I know the main guy responsible for App Engine, and, well, I  
certainly wouldn't build a platform atop it - even aside from the  
huge glaring issue that to have an app which can store data  
persistently, you need to use google's proprietary database  
software.


Heroku doesn't screen against abuse at all. Heroku is not a  
'shared hosting' provider. Their systems use the very finest  
jailing techniques to lock the ruby process in to it's own little  
world. It has no writable filesystem and it can only read what it  
absolutely needs to be able to read to function. All data storage  
happens over the network on separated database servers. The only  
type of abuse they need to be weary of is people using their  
servers to do illegal things - bullying, sharing illegal content,  
that sort of thing. They deal with that the same way any provider  
does - wait till someone makes a complaint. Matz, inventor of  
ruby, works for heroku making exactly this sort of stuff work  
extremely well.


Still, it's not as friendly as it could be, and I personally  
think the trade offs on heroku are not very good for beginners  
(you have to use a complex database system, and cannot use the  
filesystem to store anything but static assets).


Good work getting this server up David! I'm pretty excited. It  
sounds like you're having some pretty annoying deployment issues.  
As it's being quite a hassle, perhaps we should be thinking more  
deeply about creating our own special server for this task -  
something like the modified unicorn I mentioned earlier somewhere.


—
Jenna

On Sunday, 1 April 2012 at 6:23 PM, Peter Retief wrote:


Wonder if Google might help getting camping to run on app engine?

On 1 April 2012 10:03, david costa gurugeek...@gmail.com wrote:

Ah I forgot
you can compare camping running on thin here
http://run.camping.io:3301/
vs passenger at 

Re: dead easy deployment / Camping on the fly

2012-04-01 Thread Jenna Fox
Oh gods not RVM. This setup does not need another layer of complexity.  

On my own server, I use five thins, which run all the time, on a set of five 
ports which nginx proxy to. To run hundreds of camping apps, this sort of 
persistent setup isn't viable. CGI would work, but could be a little slow for 
some more complex applications. A better solution is, in my opinion, to fork. 
thins or unicorns could be connected with a simple camping app which forks on 
each request, loads a users app in to that instance, runs it once, then closes. 
It would be faster than CGI, not too hard to implement, and wouldn't take more 
resources to install more apps on the server. It also makes for a convenient 
place to run code before the user's application runs, which maybe useful for 
sandboxing or setting up web accessible logging.

From what I've heard chroot isn't a good way to jail processes - it doesn't 
restrict network access, and it's often possible to escape the jail. Consider 
this: A script loads the socket library and opens port after port until 
computer fails. Disable the socket library? have the ruby process store a 
binary inside it, which it saves to a file, sets execute permission, then runs 
- it does the same thing. Another attack would be a fork bomb.

Security is really complex. How did dot geek deal with it? did you ever have 
trouble with malicious users?  

—
Jenna


On Monday, 2 April 2012 at 1:49 AM, david costa wrote:

 Hello again ! :)
 well in theory we can chrot jail users but the best way is to install the 
 gems that people need perhaps the most used ones. It will then work system 
 wide !
 The big question is who will be your typical user. If is someone you trust 
 then you can give them even limited ssh + sftp :)
  
 Back to my ignorance: how do you folks run camping in a server ? do you use 
 fcgi ? At work we used to run a fairly big production environment made of 
 rails  running with lighthtp  and fcgi. If we were to run this as a dead 
 simple fcgi setup did anyone set this up? I have tried all the instructions 
 github on how to set this up with dispatcher.fcgi but failed miserably.  
  
 I would can get the server installed + fcgi but how to run camping apps from 
 there is a bit of a mystery.
  
 I am slightly frustrated because of passenger not making a simple create 
 page/test page http://camping.sh/ working. I know is not the app as it works 
 at http://camping.sh:3301/  
 Unicorn: I think you would be back to have nginx as a reverse proxy for that 
 which can present some problems for example, default port is 3301 for 
 camping. So you would need a script to check which port is free and run then 
 camping --port so seems a bit complicated.
  
 Thanks
 David
  
  
 On Sun, Apr 1, 2012 at 2:38 PM, Isak Andersson icepa...@lavabit.com 
 (mailto:icepa...@lavabit.com) wrote:
  Okay then. But then we'd make sure that the applications don't have 
  privilege to install gems then.
   
  --  
  Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.
   
  Jenna Fox a...@creativepony.com (mailto:a...@creativepony.com) skrev:
   @Isak Anything run with the `backticks operator` runs with the same 
   privileges as the process which launched them, if using system level 
   sandboxing, or if using some crazy sandbox built in to ruby (which 
   probably wouldn't be very good, but maybe good enough) it'd probably just 
   disable backticks feature.


   On 01/04/2012, at 9:31 PM, Isak Andersson wrote:
Well. Isn't it kind of possible to just hack the gem installation in 
using the ruby quotes that execute code on the system. I can't type 
them on the phone but I think you know what I mean. Kind of a security 
issue isn't it?
 
Anyways. Perhaps we could offer some Gems to pick from that we think 
are quality! (rack_csrf, scrypt).
--  
Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.
 
Jenna Fox a...@creativepony.com (mailto:a...@creativepony.com) skrev:
 I don't think we need to go as far as automatically installing gems - 
 securing ruby is a pretty big challenge, but securing gcc? no way.  
  
 —
 Jenna
  
  
 On Sunday, 1 April 2012 at 8:25 PM, Isak Andersson wrote:
  
  Remember that we should pretty much make a Gemfile mandatory if the 
  user makes use of gems other than Camping. For example, rack_csrf. 
  And we should make sure that dependencies get installed. :)
  --  
  Skickat från min Android-telefon med K-9 E-post. Ursäkta min 
  fåordighet.
   
  Jenna Fox a...@creativepony.com (mailto:a...@creativepony.com) 
  skrev:
   Hm. I know the main guy responsible for App Engine, and, well, I 
   certainly wouldn't build a platform atop it - even aside from the 
   huge glaring issue that to have an app which can store data 
   persistently, you need to use google's proprietary database 
   software.

Re: dead easy deployment / Camping on the fly

2012-04-01 Thread david costa
On Mon, Apr 2, 2012 at 1:02 AM, Jenna Fox a...@creativepony.com wrote:

  Oh gods not RVM. This setup does not need another layer of complexity.

 On my own server, I use five thins, which run all the time, on a set of
 five ports which nginx proxy to. To run hundreds of camping apps, this sort
 of persistent setup isn't viable. CGI would work, but could be a little
 slow for some more complex applications. A better solution is, in my
 opinion, to fork. thins or unicorns could be connected with a simple
 camping app which forks on each request, loads a users app in to that
 instance, runs it once, then closes. It would be faster than CGI, not too
 hard to implement, and wouldn't take more resources to install more apps on
 the server. It also makes for a convenient place to run code before the
 user's application runs, which maybe useful for sandboxing or setting up
 web accessible logging.

 I am pretty ignorant on unicorn but I did fix the db error which was fixed
by adding
HomePage::Models::Base.establish_connection(
:adapter = 'sqlite3',
:database = '/home/gurugeek/.camping.db')

to the end of the file so now it is working with sqlite support
http://run.camping.io
Ironically this goes back to the first question I wrote to Isak on where
was the famous .camping.db that was mentioned in the blog example. For a
beginner it takes some googling to find out but now I know so not a big
deal !

So we have now a working system with nginx and passenger. This is extremely
simple as a user will have to upload the files on this folder and is ready
to go. I have already tested multiple host on nginx and it works fine and
is much easier to setup than apache. I already coded a add_camping_user
bash script to automate user creation + nginx configuration updating and
restart.  So I am open to any fork but we have a working system (currently
on linux but working fine also on mac see it running at http://basic.sh/)
that should work fine with any basic camping app + sqlite too.  I actually
think that the guys at phusion did a good job on passenger as it is well
documented, easy to install (if you use nginx it would even install nginx
for you if you want)  and they even included a camping example on the site.
 Whomever wants to try the system can email me and I will be glad to open
an account for testing purposes.

From what I've heard chroot isn't a good way to jail processes - it doesn't
 restrict network access, and it's often possible to escape the jail.
 Consider this: A script loads the socket library and opens port after port
 until computer fails. Disable the socket library? have the ruby process
 store a binary inside it, which it saves to a file, sets execute
 permission, then runs - it does the same thing. Another attack would be a
 fork bomb.

 Security is really complex. How did dot geek deal with it? did you ever
 have trouble with malicious users?

 You are very right on security :'(  The first idea is to create users
without shell so they can use sftp but not ssh. Then ssh could be granted
to admins or people helping in the project.  Now this doesn't solve
security entirely as you can still run malicious stuff via sftp.

In dotgeek we had a two tier screening process:
a) the online form asked  for an authorization key. This was given out on
IRC after people explained why they wanted the hosting etc to some admins;
b) the online form asked some general information about the user and why he
wanted the free hosting. Based on the reply we would activate the account
or not.

Now this was on the pre-github and Facebook era perhaps now it is a bit
easier to find out if someone is genuine or not. Still we had many issues
with dotgeek. We discovered some people running even paypal clones to grab
details from users. Emails was another issues we had to deal with and many
other small ones but in short the only way to keep it decent was to screen
people.

I am too new to ruby and camping to know what kind of hostile commands you
can run from a script but I guess it is as dangerous as php (or perhaps
not?).
If we want to automate some stuff I can easily build a script to find out
if an uploaded file is a camping script or not. At least from the
appearance.  You already told me how Heroku does it and seems pretty smart.
Is engine yard doing something similar ?

There are essentially two options:
a) Allow users to upload an app and their files via camping backed online
interface. This can be fairly easy and would have a zero knowledge
required. It would be somehow the opposite of other services that require
you to use git and similar.  The issue is how to evaluate what is uploaded.
If we have some details about the user we could run a manual check the
first 1-3 times and then set him/her free. If there is another way to
evaluate files securely (e.g. is a camping app and not something malicious)
it would be even better !
b) Open standard unix users. This is not an issue in terms of capacity but
more security in the sense of 

Re: dead easy deployment / Camping on the fly

2012-03-31 Thread Isak Andersson
Perhaps if this is working in time of the deployment screencast we can showcase 
this kind of deployment AND unicorn/nginx!
-- 
Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.

david costa gurugeek...@gmail.com skrev:

BTW if you want to point a  run.camping.io or host.camping.io or anything you 
like to  66.116.108.12 will then be able to show an (hopefully) working demo 
using the official domain ;)

On Sat, Mar 31, 2012 at 7:08 AM, david costa gurugeek...@gmail.com wrote:

oh sure ! for me is not a problem - love camping.io as a domain !


first worry is to have a working system that is fairly stable and usable albeit 
it might be launched as alpha/beta anyway :) 



On Sat, Mar 31, 2012 at 6:33 AM, Jenna Fox a...@creativepony.com wrote:

We can just use a *.camping.io catchall entry



On 31/03/2012, at 3:30 PM, david costa wrote:


Hello Jenna,

we could use host.camping.io or anything.camping.io for the frontend but if the 
server has to allow users to create myfancyapp.camping.io it would be 
complicated as I would need to run the camping.io DNS on the hosting server to 
create the sub domains on the fly. I started working on it more details on a 
separate email. 


I love your idea about the key-value database how can we implement this ?

Thanks

David



On Sat, Mar 31, 2012 at 12:21 AM, Jenna Fox a...@creativepony.com wrote:

Those both sound like brilliant servers! I'm not laughing at all. If my mac 
mini is good enough for sky rim, it's good enough for web hosting for sure!


Can we just use camping.io?


I think starting simple is a good idea. Databases are pretty cool among web 
developers for various reasons, but I think are totally unnecessary for most 
smaller experimental applications. For a beginner, I'm inclined to have 
key-value databases. A really simple key-value database would work like this:


sections = key.hash.to_s(36).scan(/.{0,3}/)

sections.delete 

Dir.mkdir sections[0…-1].join('/')

File.open(sections.join('/') + '-value', 'w') do |file|

  file.write JSON.generate(value)

end


add in some file locking, and everything is pretty cool. It splits up the kevin 
to a series of about four directories and then a file, and conveniently fff 
in base36 is 19995, which is a very nice maximum number of things you'd ever 
want to put in a single directory if using something like EXT4 or HFS+. Of 
course, if using a B-Tree filesystem like reiser, btrfs, zfs there is no such 
limitation so you can skip the scanning joining thing and just open 
database/#{key.hash} and put a value in that.


Pretty cool, no? It's really easy to turn something like that in to what seems 
from the outside to be a persistent hash.


I was working on another thing called ForeverHash, which was the same sort of 
idea, but used flat files. If people are interested I'd be curious enough to 
revive that project with more of a CouchDB inspired design.


I like all these filesystem based solutions (sqlite, crazy hash in folders, 
flat file key-value db's) because they can be backed up and restored via webdav 
or sftp or whatever, and you don't need to do any weird stuff of configuring 
which ports and usernames and passwords in your database abstraction. I prefer 
the idea of having a little key-value filesystem db written in clear straight 
forward ruby code, because it means kids learning can see how it works and hack 
at it - as nice as sqlite is, it is in no way transparent. You at least have to 
learn SQL if you want to play with it's innards, and possibly C. 


On 31/03/2012, at 3:22 AM, david costa wrote:


Hello all,

I am opening a separate topic just to brainstorm the idea of a free, simple 
camping deployment/hosting option.

Now this is not about re-inventing the wheel as heroku already supports camping 
apps too. So this would be the ground idea:


a) This would be entirely free - no paid plans to upgrade etc.;

b) Eventually users should be able to deploy a camping application by launching 
something like camping-fly myapp in the command line and it would simply work 
(through a git push or similar) and make it available live in a custom domain 
like camping.sh or ruby.am e.g. myfancyapp.camping.sh or myfancyapp.ruby.am

c) Database fanciness should also be available or at least sqlite/mysql


Suggestion and ideas on how to achieve this are welcome (or professionals with 
the expertise willing to do a simple project based on this )

servers I can make available for this: 


Debian 6

Intel Core i7 3930K (6 x 3,20 GHz)

RAM 64 GB

3000 GB HD + 256 MB SSD drive (very useful for databases, much faster)


OR (don't laugh)


Mac mini 

2.0GHz quad-core Intel Core i7

8GB memory

2X256GB Solid State Drive


of course we would need to limit this to screened applicants to avoid any 
spammers/troublemakers


Best Regards

David

___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list




Re: dead easy deployment / Camping on the fly

2012-03-31 Thread Jenna Fox
@David - sorted, both those subdomains now point to your machine. :)

—
Jenna


On Saturday, 31 March 2012 at 4:10 PM, david costa wrote:

 BTW if you want to point a  run.camping.io (http://run.camping.io) or 
 host.camping.io (http://host.camping.io) or anything you like to  
 66.116.108.12 will then be able to show an (hopefully) working demo using the 
 official domain ;)
  
 On Sat, Mar 31, 2012 at 7:08 AM, david costa gurugeek...@gmail.com 
 (mailto:gurugeek...@gmail.com) wrote:
  oh sure ! for me is not a problem - love camping.io (http://camping.io) as 
  a domain !
   
  first worry is to have a working system that is fairly stable and usable 
  albeit it might be launched as alpha/beta anyway :)  
   
   
  On Sat, Mar 31, 2012 at 6:33 AM, Jenna Fox a...@creativepony.com 
  (mailto:a...@creativepony.com) wrote:
   We can just use a *.camping.io (http://camping.io) catchall entry


   On 31/03/2012, at 3:30 PM, david costa wrote:  
Hello Jenna,
we could use host.camping.io (http://host.camping.io/) or 
anything.camping.io (http://anything.camping.io/) for the frontend but 
if the server has to allow users to create myfancyapp.camping.io 
(http://myfancyapp.camping.io/) it would be complicated as I would need 
to run the camping.io (http://camping.io/) DNS on the hosting server to 
create the sub domains on the fly. I started working on it more details 
on a separate email.  
 
I love your idea about the key-value database how can we implement this 
?
Thanks
David
 
 
On Sat, Mar 31, 2012 at 12:21 AM, Jenna Fox a...@creativepony.com 
(mailto:a...@creativepony.com) wrote:
 Those both sound like brilliant servers! I'm not laughing at all. If 
 my mac mini is good enough for sky rim, it's good enough for web 
 hosting for sure!  
  
 Can we just use camping.io (http://camping.io/)?
  
 I think starting simple is a good idea. Databases are pretty cool 
 among web developers for various reasons, but I think are totally 
 unnecessary for most smaller experimental applications. For a 
 beginner, I'm inclined to have key-value databases. A really simple 
 key-value database would work like this:  
  
 sections = key.hash.to_s(36).scan(/.{0,3}/)
 sections.delete 
 Dir.mkdir sections[0…-1].join('/')
 File.open(sections.join('/') + '-value', 'w') do |file|
   file.write JSON.generate(value)
 end
  
 add in some file locking, and everything is pretty cool. It splits up 
 the kevin to a series of about four directories and then a file, and 
 conveniently fff in base36 is 19995, which is a very nice maximum 
 number of things you'd ever want to put in a single directory if 
 using something like EXT4 or HFS+. Of course, if using a B-Tree 
 filesystem like reiser, btrfs, zfs there is no such limitation so you 
 can skip the scanning joining thing and just open 
 database/#{key.hash} and put a value in that.  
  
 Pretty cool, no? It's really easy to turn something like that in to 
 what seems from the outside to be a persistent hash.
  
 I was working on another thing called ForeverHash, which was the same 
 sort of idea, but used flat files. If people are interested I'd be 
 curious enough to revive that project with more of a CouchDB inspired 
 design.  
  
 I like all these filesystem based solutions (sqlite, crazy hash in 
 folders, flat file key-value db's) because they can be backed up and 
 restored via webdav or sftp or whatever, and you don't need to do any 
 weird stuff of configuring which ports and usernames and passwords in 
 your database abstraction. I prefer the idea of having a little 
 key-value filesystem db written in clear straight forward ruby code, 
 because it means kids learning can see how it works and hack at it - 
 as nice as sqlite is, it is in no way transparent. You at least have 
 to learn SQL if you want to play with it's innards, and possibly C.   
 On 31/03/2012, at 3:22 AM, david costa wrote:
  Hello all,
  I am opening a separate topic just to brainstorm the idea of a 
  free, simple camping deployment/hosting option.
  Now this is not about re-inventing the wheel as heroku already 
  supports camping apps too. So this would be the ground idea:
   
  a) This would be entirely free - no paid plans to upgrade etc.;
  b) Eventually users should be able to deploy a camping application 
  by launching something like camping-fly myapp in the command line 
  and it would simply work (through a git push or similar) and make 
  it available live in a custom domain like camping.sh 
  (http://camping.sh) or ruby.am (http://ruby.am/) e.g. 
  myfancyapp.camping.sh (http://myfancyapp.camping.sh/) or 
  myfancyapp.ruby.am (http://myfancyapp.ruby.am/)
  c) Database fanciness 

Re: dead easy deployment / Camping on the fly

2012-03-31 Thread Jenna Fox
Apache? What are your thoughts on that choice I am curious? :)  

—
Jenna


On Sunday, 1 April 2012 at 12:27 AM, david costa wrote:

 Thank you :D as soon as the DNS will propagate it should be live.
 Some updates: now added the design from camping.io (http://camping.io) 
 (working on the fonts) and I have narrowed down the probably easiest/best way 
 to do it:
 using Webdav module on apache. So there will be no issue with creating real 
 server users and it should really be easily accessible  by anyone, anywhere. 
 Working on some securities configurations to be sure that it works fine!
  
  
 On Sat, Mar 31, 2012 at 2:52 PM, Jenna Fox a...@creativepony.com 
 (mailto:a...@creativepony.com) wrote:
  @David - sorted, both those subdomains now point to your machine. :)
   
  —
  Jenna
   
   
  On Saturday, 31 March 2012 at 4:10 PM, david costa wrote:
   
   BTW if you want to point a  run.camping.io (http://run.camping.io) or 
   host.camping.io (http://host.camping.io) or anything you like to  
   66.116.108.12 will then be able to show an (hopefully) working demo using 
   the official domain ;)

   On Sat, Mar 31, 2012 at 7:08 AM, david costa gurugeek...@gmail.com 
   (mailto:gurugeek...@gmail.com) wrote:
oh sure ! for me is not a problem - love camping.io (http://camping.io) 
as a domain !
 
first worry is to have a working system that is fairly stable and 
usable albeit it might be launched as alpha/beta anyway :)  
 
 
On Sat, Mar 31, 2012 at 6:33 AM, Jenna Fox a...@creativepony.com 
(mailto:a...@creativepony.com) wrote:
 We can just use a *.camping.io (http://camping.io) catchall entry
  
  
 On 31/03/2012, at 3:30 PM, david costa wrote:  
  Hello Jenna,
  we could use host.camping.io (http://host.camping.io/) or 
  anything.camping.io (http://anything.camping.io/) for the frontend 
  but if the server has to allow users to create 
  myfancyapp.camping.io (http://myfancyapp.camping.io/) it would be 
  complicated as I would need to run the camping.io 
  (http://camping.io/) DNS on the hosting server to create the sub 
  domains on the fly. I started working on it more details on a 
  separate email.  
   
  I love your idea about the key-value database how can we implement 
  this ?
  Thanks
  David
   
   
  On Sat, Mar 31, 2012 at 12:21 AM, Jenna Fox a...@creativepony.com 
  (mailto:a...@creativepony.com) wrote:
   Those both sound like brilliant servers! I'm not laughing at all. 
   If my mac mini is good enough for sky rim, it's good enough for 
   web hosting for sure!  

   Can we just use camping.io (http://camping.io/)?

   I think starting simple is a good idea. Databases are pretty cool 
   among web developers for various reasons, but I think are totally 
   unnecessary for most smaller experimental applications. For a 
   beginner, I'm inclined to have key-value databases. A really 
   simple key-value database would work like this:  

   sections = key.hash.to_s(36).scan(/.{0,3}/)
   sections.delete 
   Dir.mkdir sections[0…-1].join('/')
   File.open(sections.join('/') + '-value', 'w') do |file|
 file.write JSON.generate(value)
   end

   add in some file locking, and everything is pretty cool. It 
   splits up the kevin to a series of about four directories and 
   then a file, and conveniently fff in base36 is 19995, which is 
   a very nice maximum number of things you'd ever want to put in a 
   single directory if using something like EXT4 or HFS+. Of course, 
   if using a B-Tree filesystem like reiser, btrfs, zfs there is no 
   such limitation so you can skip the scanning joining thing and 
   just open database/#{key.hash} and put a value in that.  

   Pretty cool, no? It's really easy to turn something like that in 
   to what seems from the outside to be a persistent hash.

   I was working on another thing called ForeverHash, which was the 
   same sort of idea, but used flat files. If people are interested 
   I'd be curious enough to revive that project with more of a 
   CouchDB inspired design.  

   I like all these filesystem based solutions (sqlite, crazy hash 
   in folders, flat file key-value db's) because they can be backed 
   up and restored via webdav or sftp or whatever, and you don't 
   need to do any weird stuff of configuring which ports and 
   usernames and passwords in your database abstraction. I prefer 
   the idea of having a little key-value filesystem db written in 
   clear straight forward ruby code, because it means kids learning 
   can see how it works and hack at it - as nice as sqlite is, it is 
   in no way transparent. You at least have to learn SQL if you want 
   to play with it's innards, and 

Re: dead easy deployment / Camping on the fly

2012-03-31 Thread david costa
Hello Jenna !
I think that run rack applications the most efficient way seems to be
phusion passenger that works with apache and nginx. It might work with
other setups but it is not documented.
The other alternative to serve a camping application is to use a standard
ruby webserver (thin, unicorn, etc.) and use either apache or nginx as
reverse proxy. This should be more resource consuming as you would have
both a thin/unicorn instance running and nginx.  The setup of passenger +
apache seems to be very easy as you just drop the file with the camping app
and it works. It can't really get more easier than this.

The camping file has to be called config.ru
http://www.modrails.com/documentation/Users%20guide%20Apache.html#_campingand
this is the only way it works on my tests but I am sure that there is
an easy way to work with several files or in a different way.

Now if we want to use webdav apache has the module and with a digest
authentication over ssl should be fairly secure. It also allows to limit
the upload file size which could be useful (e.g. if someone is obviously
trying to upload not a camping file !).

This is what I found so far as a possible solution but I am open to
anything. I did try also an image that was using git/capistrano for remote
deployment but somehow seemed an overkill to me and it didn't really work.
 All I am doing is highly experimental so I am more than happy to see other
idea/possibilities and see how far I can go with it.

I did think about webdav based on your idea which I think would make this
different than heroku etc. like some beginners would not know git and might
just like a little tent for their shiny camping app !

David




On Sat, Mar 31, 2012 at 3:43 PM, Jenna Fox a...@creativepony.com wrote:

  Apache? What are your thoughts on that choice I am curious? :)

 —
 Jenna

 On Sunday, 1 April 2012 at 12:27 AM, david costa wrote:

 Thank you :D as soon as the DNS will propagate it should be live.
 Some updates: now added the design from camping.io (working on the fonts)
 and I have narrowed down the probably easiest/best way to do it:
 using Webdav module on apache. So there will be no issue with creating
 real server users and it should really be easily accessible  by anyone,
 anywhere. Working on some securities configurations to be sure that it
 works fine!


 On Sat, Mar 31, 2012 at 2:52 PM, Jenna Fox a...@creativepony.com wrote:

 @David - sorted, both those subdomains now point to your machine. :)

 —
 Jenna

 On Saturday, 31 March 2012 at 4:10 PM, david costa wrote:

 BTW if you want to point a  run.camping.io or host.camping.io or anything
 you like to  66.116.108.12 will then be able to show an (hopefully) working
 demo using the official domain ;)

 On Sat, Mar 31, 2012 at 7:08 AM, david costa gurugeek...@gmail.comwrote:

 oh sure ! for me is not a problem - love camping.io as a domain !

 first worry is to have a working system that is fairly stable and usable
 albeit it might be launched as alpha/beta anyway :)


 On Sat, Mar 31, 2012 at 6:33 AM, Jenna Fox a...@creativepony.com wrote:

 We can just use a *.camping.io catchall entry


 On 31/03/2012, at 3:30 PM, david costa wrote:

 Hello Jenna,
 we could use host.camping.io or anything.camping.io for the frontend but
 if the server has to allow users to create myfancyapp.camping.io it would
 be complicated as I would need to run the camping.io DNS on the hosting
 server to create the sub domains on the fly. I started working on it more
 details on a separate email.

 I love your idea about the key-value database how can we implement this ?
 Thanks
 David


 On Sat, Mar 31, 2012 at 12:21 AM, Jenna Fox a...@creativepony.com wrote:

 Those both sound like brilliant servers! I'm not laughing at all. If my
 mac mini is good enough for sky rim, it's good enough for web hosting for
 sure!

 Can we just use camping.io?

 I think starting simple is a good idea. Databases are pretty cool among
 web developers for various reasons, but I think are totally unnecessary for
 most smaller experimental applications. For a beginner, I'm inclined to
 have key-value databases. A really simple key-value database would work
 like this:

 sections = key.hash.to_s(36).scan(/.{0,3}/)
 sections.delete 
 Dir.mkdir sections[0…-1].join('/')
 File.open(sections.join('/') + '-value', 'w') do |file|
   file.write JSON.generate(value)
 end

 add in some file locking, and everything is pretty cool. It splits up the
 kevin to a series of about four directories and then a file, and
 conveniently fff in base36 is 19995, which is a very nice maximum number
 of things you'd ever want to put in a single directory if using something
 like EXT4 or HFS+. Of course, if using a B-Tree filesystem like reiser,
 btrfs, zfs there is no such limitation so you can skip the scanning joining
 thing and just open database/#{key.hash} and put a value in that.

 Pretty cool, no? It's really easy to turn something like that in to what
 seems from the outside to 

Re: dead easy deployment / Camping on the fly

2012-03-31 Thread Nokan Emiro
Hi,

I run a few Camping apps in production with Rack's FastCGI handler.
This way it is completely separable from the webserver, which can be
nginx, apache, lighttpd, or anything else that implements the FastCGI
protocol.  On top of that it's more scalable, because you can run these
processes on different machines -- if you feel so.

...just an idea to think about, but better than using reverse proxies.



On Sat, Mar 31, 2012 at 4:29 PM, david costa gurugeek...@gmail.com wrote:

 Hello Jenna !
 I think that run rack applications the most efficient way seems to be
 phusion passenger that works with apache and nginx. It might work with
 other setups but it is not documented.
 The other alternative to serve a camping application is to use a standard
 ruby webserver (thin, unicorn, etc.) and use either apache or nginx as
 reverse proxy. This should be more resource consuming as you would have
 both a thin/unicorn instance running and nginx.  The setup of passenger +
 apache seems to be very easy as you just drop the file with the camping app
 and it works. It can't really get more easier than this.

 The camping file has to be called config.ru
 http://www.modrails.com/documentation/Users%20guide%20Apache.html#_campingand 
 this is the only way it works on my tests but I am sure that there is
 an easy way to work with several files or in a different way.

 Now if we want to use webdav apache has the module and with a digest
 authentication over ssl should be fairly secure. It also allows to limit
 the upload file size which could be useful (e.g. if someone is obviously
 trying to upload not a camping file !).

 This is what I found so far as a possible solution but I am open to
 anything. I did try also an image that was using git/capistrano for remote
 deployment but somehow seemed an overkill to me and it didn't really work.
  All I am doing is highly experimental so I am more than happy to see other
 idea/possibilities and see how far I can go with it.

 I did think about webdav based on your idea which I think would make this
 different than heroku etc. like some beginners would not know git and might
 just like a little tent for their shiny camping app !

 David




 On Sat, Mar 31, 2012 at 3:43 PM, Jenna Fox a...@creativepony.com wrote:

  Apache? What are your thoughts on that choice I am curious? :)

 —
 Jenna

 On Sunday, 1 April 2012 at 12:27 AM, david costa wrote:

 Thank you :D as soon as the DNS will propagate it should be live.
 Some updates: now added the design from camping.io (working on the
 fonts) and I have narrowed down the probably easiest/best way to do it:
 using Webdav module on apache. So there will be no issue with creating
 real server users and it should really be easily accessible  by anyone,
 anywhere. Working on some securities configurations to be sure that it
 works fine!


 On Sat, Mar 31, 2012 at 2:52 PM, Jenna Fox a...@creativepony.com wrote:

 @David - sorted, both those subdomains now point to your machine. :)

 —
 Jenna

 On Saturday, 31 March 2012 at 4:10 PM, david costa wrote:

 BTW if you want to point a  run.camping.io or host.camping.io or
 anything you like to  66.116.108.12 will then be able to show an
 (hopefully) working demo using the official domain ;)

 On Sat, Mar 31, 2012 at 7:08 AM, david costa gurugeek...@gmail.comwrote:

 oh sure ! for me is not a problem - love camping.io as a domain !

 first worry is to have a working system that is fairly stable and usable
 albeit it might be launched as alpha/beta anyway :)


 On Sat, Mar 31, 2012 at 6:33 AM, Jenna Fox a...@creativepony.com wrote:

 We can just use a *.camping.io catchall entry


 On 31/03/2012, at 3:30 PM, david costa wrote:

 Hello Jenna,
 we could use host.camping.io or anything.camping.io for the frontend but
 if the server has to allow users to create myfancyapp.camping.io it
 would be complicated as I would need to run the camping.io DNS on the
 hosting server to create the sub domains on the fly. I started working on
 it more details on a separate email.

 I love your idea about the key-value database how can we implement this ?
 Thanks
 David


 On Sat, Mar 31, 2012 at 12:21 AM, Jenna Fox a...@creativepony.com wrote:

 Those both sound like brilliant servers! I'm not laughing at all. If my
 mac mini is good enough for sky rim, it's good enough for web hosting for
 sure!

 Can we just use camping.io?

 I think starting simple is a good idea. Databases are pretty cool among
 web developers for various reasons, but I think are totally unnecessary for
 most smaller experimental applications. For a beginner, I'm inclined to
 have key-value databases. A really simple key-value database would work
 like this:

 sections = key.hash.to_s(36).scan(/.{0,3}/)
 sections.delete 
 Dir.mkdir sections[0…-1].join('/')
 File.open(sections.join('/') + '-value', 'w') do |file|
   file.write JSON.generate(value)
 end

 add in some file locking, and everything is pretty cool. It splits up the
 kevin to a series 

Re: dead easy deployment / Camping on the fly

2012-03-31 Thread david costa
Thanks for this but how would it run for multiple users on the same port
(80) like  yourname.camping.io yourname2.camping.io without having nginx or
apache as a reverse proxy ?

On Sat, Mar 31, 2012 at 4:44 PM, Nokan Emiro uzleep...@gmail.com wrote:

 Hi,

 I run a few Camping apps in production with Rack's FastCGI handler.
 This way it is completely separable from the webserver, which can be
 nginx, apache, lighttpd, or anything else that implements the FastCGI
 protocol.  On top of that it's more scalable, because you can run these
 processes on different machines -- if you feel so.

 ...just an idea to think about, but better than using reverse proxies.



 On Sat, Mar 31, 2012 at 4:29 PM, david costa gurugeek...@gmail.comwrote:

 Hello Jenna !
 I think that run rack applications the most efficient way seems to be
 phusion passenger that works with apache and nginx. It might work with
 other setups but it is not documented.
 The other alternative to serve a camping application is to use a standard
 ruby webserver (thin, unicorn, etc.) and use either apache or nginx as
 reverse proxy. This should be more resource consuming as you would have
 both a thin/unicorn instance running and nginx.  The setup of passenger +
 apache seems to be very easy as you just drop the file with the camping app
 and it works. It can't really get more easier than this.

 The camping file has to be called config.ru
 http://www.modrails.com/documentation/Users%20guide%20Apache.html#_campingand
  this is the only way it works on my tests but I am sure that there is
 an easy way to work with several files or in a different way.

 Now if we want to use webdav apache has the module and with a digest
 authentication over ssl should be fairly secure. It also allows to limit
 the upload file size which could be useful (e.g. if someone is obviously
 trying to upload not a camping file !).

 This is what I found so far as a possible solution but I am open to
 anything. I did try also an image that was using git/capistrano for remote
 deployment but somehow seemed an overkill to me and it didn't really work.
  All I am doing is highly experimental so I am more than happy to see other
 idea/possibilities and see how far I can go with it.

 I did think about webdav based on your idea which I think would make this
 different than heroku etc. like some beginners would not know git and might
 just like a little tent for their shiny camping app !

 David




 On Sat, Mar 31, 2012 at 3:43 PM, Jenna Fox a...@creativepony.com wrote:

  Apache? What are your thoughts on that choice I am curious? :)

 —
 Jenna

 On Sunday, 1 April 2012 at 12:27 AM, david costa wrote:

 Thank you :D as soon as the DNS will propagate it should be live.
 Some updates: now added the design from camping.io (working on the
 fonts) and I have narrowed down the probably easiest/best way to do it:
 using Webdav module on apache. So there will be no issue with creating
 real server users and it should really be easily accessible  by anyone,
 anywhere. Working on some securities configurations to be sure that it
 works fine!


 On Sat, Mar 31, 2012 at 2:52 PM, Jenna Fox a...@creativepony.com wrote:

 @David - sorted, both those subdomains now point to your machine. :)

 —
 Jenna

 On Saturday, 31 March 2012 at 4:10 PM, david costa wrote:

 BTW if you want to point a  run.camping.io or host.camping.io or
 anything you like to  66.116.108.12 will then be able to show an
 (hopefully) working demo using the official domain ;)

 On Sat, Mar 31, 2012 at 7:08 AM, david costa gurugeek...@gmail.comwrote:

 oh sure ! for me is not a problem - love camping.io as a domain !

 first worry is to have a working system that is fairly stable and usable
 albeit it might be launched as alpha/beta anyway :)


 On Sat, Mar 31, 2012 at 6:33 AM, Jenna Fox a...@creativepony.com wrote:

 We can just use a *.camping.io catchall entry


 On 31/03/2012, at 3:30 PM, david costa wrote:

 Hello Jenna,
 we could use host.camping.io or anything.camping.io for the frontend
 but if the server has to allow users to create myfancyapp.camping.io it
 would be complicated as I would need to run the camping.io DNS on the
 hosting server to create the sub domains on the fly. I started working on
 it more details on a separate email.

 I love your idea about the key-value database how can we implement this ?
 Thanks
 David


 On Sat, Mar 31, 2012 at 12:21 AM, Jenna Fox a...@creativepony.com wrote:

 Those both sound like brilliant servers! I'm not laughing at all. If my
 mac mini is good enough for sky rim, it's good enough for web hosting for
 sure!

 Can we just use camping.io?

 I think starting simple is a good idea. Databases are pretty cool among
 web developers for various reasons, but I think are totally unnecessary for
 most smaller experimental applications. For a beginner, I'm inclined to
 have key-value databases. A really simple key-value database would work
 like this:

 sections = 

Re: dead easy deployment / Camping on the fly

2012-03-31 Thread Nokan Emiro
This solution is almost the same as using reverse proxies, but between
the nginx and the Rack/Camping app you don't need HTTP traffic, just
FastCGI.  That means you can save one layer in the application, you
don't need a http server (thin, mongrel, etc.) that point.  Rack is a native
FastCGI speaker.  However this is the only difference, in other ways
it's the same as using reverse proxy.  The webserver (nging) knows
about the virtual hosts, and maps them into host:port pairs, where the
appropriate FastCGI server (the Rack itself) listens for connections.
You can call this reverse proxying too if you want, but in this case
there are different protocols on the client side (http) and the server
side (fcgi).


On Sat, Mar 31, 2012 at 4:51 PM, david costa gurugeek...@gmail.com wrote:

 Thanks for this but how would it run for multiple users on the same port
 (80) like  yourname.camping.io yourname2.camping.io without having nginx
 or apache as a reverse proxy ?


 On Sat, Mar 31, 2012 at 4:44 PM, Nokan Emiro uzleep...@gmail.com wrote:

 Hi,

 I run a few Camping apps in production with Rack's FastCGI handler.
 This way it is completely separable from the webserver, which can be
 nginx, apache, lighttpd, or anything else that implements the FastCGI
 protocol.  On top of that it's more scalable, because you can run these
 processes on different machines -- if you feel so.

 ...just an idea to think about, but better than using reverse proxies.



 On Sat, Mar 31, 2012 at 4:29 PM, david costa gurugeek...@gmail.comwrote:

 Hello Jenna !
 I think that run rack applications the most efficient way seems to be
 phusion passenger that works with apache and nginx. It might work with
 other setups but it is not documented.
 The other alternative to serve a camping application is to use a
 standard ruby webserver (thin, unicorn, etc.) and use either apache or
 nginx as reverse proxy. This should be more resource consuming as you would
 have both a thin/unicorn instance running and nginx.  The setup of
 passenger + apache seems to be very easy as you just drop the file with the
 camping app and it works. It can't really get more easier than this.

 The camping file has to be called config.ru
 http://www.modrails.com/documentation/Users%20guide%20Apache.html#_campingand
  this is the only way it works on my tests but I am sure that there is
 an easy way to work with several files or in a different way.

 Now if we want to use webdav apache has the module and with a digest
 authentication over ssl should be fairly secure. It also allows to limit
 the upload file size which could be useful (e.g. if someone is obviously
 trying to upload not a camping file !).

 This is what I found so far as a possible solution but I am open to
 anything. I did try also an image that was using git/capistrano for remote
 deployment but somehow seemed an overkill to me and it didn't really work.
  All I am doing is highly experimental so I am more than happy to see other
 idea/possibilities and see how far I can go with it.

 I did think about webdav based on your idea which I think would make
 this different than heroku etc. like some beginners would not know git and
 might just like a little tent for their shiny camping app !

 David




 On Sat, Mar 31, 2012 at 3:43 PM, Jenna Fox a...@creativepony.com wrote:

  Apache? What are your thoughts on that choice I am curious? :)

 —
 Jenna

 On Sunday, 1 April 2012 at 12:27 AM, david costa wrote:

 Thank you :D as soon as the DNS will propagate it should be live.
 Some updates: now added the design from camping.io (working on the
 fonts) and I have narrowed down the probably easiest/best way to do it:
 using Webdav module on apache. So there will be no issue with creating
 real server users and it should really be easily accessible  by anyone,
 anywhere. Working on some securities configurations to be sure that it
 works fine!


 On Sat, Mar 31, 2012 at 2:52 PM, Jenna Fox a...@creativepony.com wrote:

 @David - sorted, both those subdomains now point to your machine. :)

 —
 Jenna

 On Saturday, 31 March 2012 at 4:10 PM, david costa wrote:

 BTW if you want to point a  run.camping.io or host.camping.io or
 anything you like to  66.116.108.12 will then be able to show an
 (hopefully) working demo using the official domain ;)

 On Sat, Mar 31, 2012 at 7:08 AM, david costa gurugeek...@gmail.comwrote:

 oh sure ! for me is not a problem - love camping.io as a domain !

 first worry is to have a working system that is fairly stable and
 usable albeit it might be launched as alpha/beta anyway :)


 On Sat, Mar 31, 2012 at 6:33 AM, Jenna Fox a...@creativepony.com wrote:

 We can just use a *.camping.io catchall entry


 On 31/03/2012, at 3:30 PM, david costa wrote:

 Hello Jenna,
 we could use host.camping.io or anything.camping.io for the frontend
 but if the server has to allow users to create myfancyapp.camping.ioit 
 would be complicated as I would need to run the
 camping.io DNS on the hosting 

Re: dead easy deployment / Camping on the fly

2012-03-31 Thread david costa
On Sat, Mar 31, 2012 at 5:36 PM, Isak Andersson icepa...@lavabit.comwrote:

 ** Actually setting up a reverse proxy gives better performance for the
 end user As you can have some sort of buffer between them. The Unicorn
 server takes care of whatever nginx asks for, and while it waits it can
 server whatever unicorn outputs. It doesn't have to wait for what it
 outputs itself to get done because you have a queue. Or something like that.


Mh I am not really sure it would be a better performance as it would be
anyway more than one process. I think that phusion passenger is pretty much
the most robust solution for this.


 Some people actually out Apache to do PHP stuff while nginx acts as a
 reverse proxy and actually shows things to the user in the same way you'd
 do with Unicorn/Thin


Well this would be even more load as two web servers will run at the same
time. Apache + Phusion passenger already lets you run .php or anything you
want.

But this is not the issue really. I think this is all fine in term of mono
user. Question: if you have 100 users how do you configure it ?
How can you add webdav support on the top of the Nginx + unicorn setup ?


But perhaps That's too much for a server ment to serve other peoples
 applications! Then you have to scale down the resources used.


I am open to anything but if I can't do something I might ask for some
brave volunteers to set it up as I really never tried anything else beside
for local/quick test deployment.
___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list

Re: dead easy deployment / Camping on the fly

2012-03-31 Thread Jenna Fox
Oh whoops! I forgot to press the save button on the dns management page. Should 
go through now, certainly within the next hour.

On fastcgi - fastcgi is not a server in itself - you cannot connect to it with 
a web browser. Like Passenger, it's a way for a server like nginx or apache to 
launch and talk to processes which return webpages directly.

The easiest way to run camping apps for many different users would be regular 
CGI. You might think this as being terribly slow - but I assure you, if ruby 
and it's libraries are stored on a fast SSD disk, ruby launches incredibly 
quickly - further, the operating system's disk cache creates an in-ram copy of 
popular applications and ruby libraries, allowing the more heavily used hosted 
camping apps to become even more responsive. CGI certainly not worth ruling 
out. PHP works like this - loading and recompiling each of it's source code 
files for each request, unless special optimisation is done - like facebook's 
php to c compiler.

If CGI is too slow or consumes too many resources, there's also a middle ground 
worth exploring - Unicorn uses a forking system, which is rather cool because 
it launches new ruby instances very very quickly - practically instant. It 
wouldn't be all that difficult to make a forking server variant which forks on 
each request and loads up a user's application, runs it, then closes (or maybe 
idles out after five minutes). There are all sorts of interesting ways we could 
optimise existing server ideas to work very well with small infrequently used 
applications on different domains for different fully isolated users, rather 
like the ways PHP tends to be hosted which make it so practical for large 
numbers of users running infrequently accessed applications.

Sandboxing is also something worth investigating.
___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list


Re: dead easy deployment / Camping on the fly

2012-03-31 Thread Jenna Fox
The main downside to passenger, is that when things go wrong, it can be a bit 
'thar be monsters in here!'

It's a bit of a mysterious technology which isn't very well documented when 
stuff doesn't work, or at least it wasn't when I was playing with it about 8 
months ago. I ended up settling on thins to get away from passenger, though for 
a while I was using passenger on my local mac apache instance for testing.  

—
Jenna


On Sunday, 1 April 2012 at 2:11 AM, david costa wrote:

 On Sat, Mar 31, 2012 at 5:36 PM, Isak Andersson icepa...@lavabit.com 
 (mailto:icepa...@lavabit.com) wrote:
  Actually setting up a reverse proxy gives better performance for the end 
  user As you can have some sort of buffer between them. The Unicorn server 
  takes care of whatever nginx asks for, and while it waits it can server 
  whatever unicorn outputs. It doesn't have to wait for what it outputs 
  itself to get done because you have a queue. Or something like that.
  
 Mh I am not really sure it would be a better performance as it would be 
 anyway more than one process. I think that phusion passenger is pretty much 
 the most robust solution for this.
   
  Some people actually out Apache to do PHP stuff while nginx acts as a 
  reverse proxy and actually shows things to the user in the same way you'd 
  do with Unicorn/Thin
  
 Well this would be even more load as two web servers will run at the same 
 time. Apache + Phusion passenger already lets you run .php or anything you 
 want.  
  
 But this is not the issue really. I think this is all fine in term of mono 
 user. Question: if you have 100 users how do you configure it ?  
 How can you add webdav support on the top of the Nginx + unicorn setup ?
  
  
  But perhaps That's too much for a server ment to serve other peoples 
  applications! Then you have to scale down the resources used.
   
  
 I am open to anything but if I can't do something I might ask for some brave 
 volunteers to set it up as I really never tried anything else beside for 
 local/quick test deployment.
 ___
 Camping-list mailing list
 Camping-list@rubyforge.org (mailto:Camping-list@rubyforge.org)
 http://rubyforge.org/mailman/listinfo/camping-list
  
  


___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list

Re: dead easy deployment / Camping on the fly

2012-03-31 Thread Jenna Fox
WebDav for nginx: http://wiki.nginx.org/HttpDavModule

Or you could implement webdav as an application nginx proxies to, just as it 
proxies to ruby instances.  

—
Jenna


On Sunday, 1 April 2012 at 2:11 AM, david costa wrote:

 On Sat, Mar 31, 2012 at 5:36 PM, Isak Andersson icepa...@lavabit.com 
 (mailto:icepa...@lavabit.com) wrote:
  Actually setting up a reverse proxy gives better performance for the end 
  user As you can have some sort of buffer between them. The Unicorn server 
  takes care of whatever nginx asks for, and while it waits it can server 
  whatever unicorn outputs. It doesn't have to wait for what it outputs 
  itself to get done because you have a queue. Or something like that.
  
 Mh I am not really sure it would be a better performance as it would be 
 anyway more than one process. I think that phusion passenger is pretty much 
 the most robust solution for this.
   
  Some people actually out Apache to do PHP stuff while nginx acts as a 
  reverse proxy and actually shows things to the user in the same way you'd 
  do with Unicorn/Thin
  
 Well this would be even more load as two web servers will run at the same 
 time. Apache + Phusion passenger already lets you run .php or anything you 
 want.  
  
 But this is not the issue really. I think this is all fine in term of mono 
 user. Question: if you have 100 users how do you configure it ?  
 How can you add webdav support on the top of the Nginx + unicorn setup ?
  
  
  But perhaps That's too much for a server ment to serve other peoples 
  applications! Then you have to scale down the resources used.
   
  
 I am open to anything but if I can't do something I might ask for some brave 
 volunteers to set it up as I really never tried anything else beside for 
 local/quick test deployment.
 ___
 Camping-list mailing list
 Camping-list@rubyforge.org (mailto:Camping-list@rubyforge.org)
 http://rubyforge.org/mailman/listinfo/camping-list
  
  


___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list

Re: dead easy deployment / Camping on the fly

2012-03-30 Thread Dave Everitt

oops - should have put my last reply here... - DaveE


Hello all,
I am opening a separate topic just to brainstorm the idea of a free,  
simple camping deployment/hosting option.
Now this is not about re-inventing the wheel as heroku already  
supports camping apps too. So this would be the ground idea:


a) This would be entirely free - no paid plans to upgrade etc.;
b) Eventually users should be able to deploy a camping application  
by launching something like camping-fly myapp in the command line  
and it would simply work (through a git push or similar) and make it  
available live in a custom domain like camping.sh or ruby.am e.g.  
myfancyapp.camping.sh or myfancyapp.ruby.am
c) Database fanciness should also be available or at least sqlite/ 
mysql


Suggestion and ideas on how to achieve this are welcome (or  
professionals with the expertise willing to do a simple project  
based on this )

servers I can make available for this:

Debian 6
Intel Core i7 3930K (6 x 3,20 GHz)
RAM 64 GB
3000 GB HD + 256 MB SSD drive (very useful for databases, much faster)

OR (don't laugh)

Mac mini
2.0GHz quad-core Intel Core i7
8GB memory
2X256GB Solid State Drive

of course we would need to limit this to screened applicants to  
avoid any spammers/troublemakers


Best Regards
David
___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list


___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list

Re: dead easy deployment / Camping on the fly

2012-03-30 Thread Isak Andersson
+9 this :)
-- 
Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.

david costa gurugeek...@gmail.com skrev:

Hello all,

I am opening a separate topic just to brainstorm the idea of a free, simple 
camping deployment/hosting option.

Now this is not about re-inventing the wheel as heroku already supports camping 
apps too. So this would be the ground idea:


a) This would be entirely free - no paid plans to upgrade etc.;

b) Eventually users should be able to deploy a camping application by launching 
something like camping-fly myapp in the command line and it would simply work 
(through a git push or similar) and make it available live in a custom domain 
like camping.sh or ruby.am e.g. myfancyapp.camping.sh or myfancyapp.ruby.am

c) Database fanciness should also be available or at least sqlite/mysql


Suggestion and ideas on how to achieve this are welcome (or professionals with 
the expertise willing to do a simple project based on this )

servers I can make available for this: 


Debian 6

Intel Core i7 3930K (6 x 3,20 GHz)

RAM 64 GB

3000 GB HD + 256 MB SSD drive (very useful for databases, much faster)


OR (don't laugh)


Mac mini 

2.0GHz quad-core Intel Core i7

8GB memory

2X256GB Solid State Drive


of course we would need to limit this to screened applicants to avoid any 
spammers/troublemakers


Best Regards

David

Dcouvre tous les secrets de la Magie. Clique Ici!

http://click.lavabit.com/hmfehg75rumtxy6e9birp9px66eqeqn1cjxgcxtdp648siroyzcb/ 

___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list

Re: dead easy deployment / Camping on the fly

2012-03-30 Thread david costa
Here is my progress on the server :)
Spent several hours to try to work on a nginx + passenger setup on the
cloud even using some pre-made ami with no success. It was also fairly slow
vs. a real server (even on an XLarge instance).

So I went back to one spare brand new mac mini server quadcore i7 and I did
install passenger on apache 2 without any major problem.  All is fine and
camping runs well pretty much on the fly by simply uploading your camping
file in the relevant directory (which is pretty much what I wanted to
achieve!)

the sample fine (very rough I know) runs fine on the preview at
http://bash.is/ :)

Some small things you might have some ideas for:
-On Passenger apparently camping runs without issues as config.ru (camping
code on the config.ru file directly)
see
http://www.modrails.com/documentation/Users%20guide%20Apache.html#_camping
I did try to use the camping book instructions (dreamhost) but for a reason
or another it doesn't work. This is not a main issue thou as, if we allow
to test 1 file apps automagically it can be renamed to config.ru as
passenger wants but I am sure there is another way to do it perhaps;
- I am getting the nasty internal error if I call a page like
http://bash.is/lsdlksd but I do get a nice camping error for something like
http://bash.is/blahh.html I am sure I can fix this small cosmetic thing
easily thou need to dig a bit more on apache config

TODO from my side:
- If this testing would not include mysql or a db beside sqlite or flat
would be probably easier as I won't need to make a script to set a db user
etc.
- A simple ruby or shell script to test quick upload and deployment of
camping apps (this should required the creation of a new user + allow the
user to connect and upload the files I guess).  An alternative would be to
have no new user created but, via a unique key, allow the user to see his
app/change it etc. in his/her app sub-domain (myappl.domain.something)
- Testing, Testing, Testing :)

It looks exciting and I am sure it can come up as a pretty good solution.
Webdav shouldn't be difficult at all and perhaps is the best way to do it
so it would be way less geeky than heroku  and well on one or more mac
minis is fairly hedgy !

Cheers
David




On Sat, Mar 31, 2012 at 6:30 AM, david costa gurugeek...@gmail.com wrote:

 Hello Jenna,
 we could use host.camping.io or anything.camping.io for the frontend but
 if the server has to allow users to create myfancyapp.camping.io it would
 be complicated as I would need to run the camping.io DNS on the hosting
 server to create the sub domains on the fly. I started working on it more
 details on a separate email.

 I love your idea about the key-value database how can we implement this ?
 Thanks
 David


 On Sat, Mar 31, 2012 at 12:21 AM, Jenna Fox a...@creativepony.com wrote:

 Those both sound like brilliant servers! I'm not laughing at all. If my
 mac mini is good enough for sky rim, it's good enough for web hosting for
 sure!

 Can we just use camping.io?

 I think starting simple is a good idea. Databases are pretty cool among
 web developers for various reasons, but I think are totally unnecessary for
 most smaller experimental applications. For a beginner, I'm inclined to
 have key-value databases. A really simple key-value database would work
 like this:

 sections = key.hash.to_s(36).scan(/.{0,3}/)
 sections.delete 
 Dir.mkdir sections[0…-1].join('/')
 File.open(sections.join('/') + '-value', 'w') do |file|
   file.write JSON.generate(value)
 end

 add in some file locking, and everything is pretty cool. It splits up the
 kevin to a series of about four directories and then a file, and
 conveniently fff in base36 is 19995, which is a very nice maximum number
 of things you'd ever want to put in a single directory if using something
 like EXT4 or HFS+. Of course, if using a B-Tree filesystem like reiser,
 btrfs, zfs there is no such limitation so you can skip the scanning joining
 thing and just open database/#{key.hash} and put a value in that.

 Pretty cool, no? It's really easy to turn something like that in to what
 seems from the outside to be a persistent hash.

 I was working on another thing called ForeverHash, which was the same
 sort of idea, but used flat files. If people are interested I'd be curious
 enough to revive that project with more of a CouchDB inspired design.

 I like all these filesystem based solutions (sqlite, crazy hash in
 folders, flat file key-value db's) because they can be backed up and
 restored via webdav or sftp or whatever, and you don't need to do any weird
 stuff of configuring which ports and usernames and passwords in your
 database abstraction. I prefer the idea of having a little key-value
 filesystem db written in clear straight forward ruby code, because it means
 kids learning can see how it works and hack at it - as nice as sqlite is,
 it is in no way transparent. You at least have to learn SQL if you want to
 play with it's innards, and possibly C.

 On