Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


Newbie question: What's required to set up a server to be a provider of Ghost blogs?
New on LowEndTalk? Please Register and read our Community Rules.

All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.

Newbie question: What's required to set up a server to be a provider of Ghost blogs?

This offer got me thinking about something I've been curious for a while.

Let's say I have a dedicated server and want to set it up to be a provider of Ghost blogs. It would be for personal/beta use at first and then maybe something commercial. Other than the Ghost application and Nginx, what other applications would be required? I'd like to keep everything open source if possible. Are we talking about just a control panel? I understand this is a newbie question and semi-open ended, but I can refine the question if you could provide some guidance.

Comments

  • Node.js and SQLite are required although you can use an alternate database. Because of the way it works you will need to give people some sort of shell access or a control panel yet to exist that allows the service to be started and stopped as a minimum.

    One of the pains of Ghost at the moment is that if you add a new theme or make changes to the code the whole thing needs to be restarted for the changes to be effected.

    You should also allow for a minimum of 256MB of RAM for each blog, as it progresses that will increase and I suspect substantially once the plugins modules come along.

    It's a market ready to be exploited however because of the way it works and the requirements for each blog it's easy to see why it hasn't been yet.

    Thanked by 1sumo
  • W1V_Lee said: It's a market ready to be exploited however because of the way it works and the requirements for each blog it's easy to see why it hasn't been yet.

    A bit off topic but related. Is it possible to re-write Ghost to PHP? Is there a particular feature in Node.js that the blog used that is hard to implement in PHP?

  • If you rewrote it in PHP it wouldn't be Ghost anymore, it would be something new. You could use some of the same ideas, concepts, and goals but it would not be Ghost.

    Thanked by 1jcaleb
  • SilvengaSilvenga Member
    edited September 2014

    jcaleb said: A bit off topic but related. Is it possible to re-write Ghost to PHP? Is there a particular feature in Node.js that the blog used that is hard to implement in PHP?

    You could recode Ghost in MVC and it wouldn't be "hard", but it would be time consuming. PHP lacks many of the libraries the Node.js has access too (not to mention Node.js more like MVC than PHP). Node.js also has a bunch of development tools that makes developing in it so much quicker (grunt, npm, etc.). Javascript IDE's have been out for a long time (most free) - can't really say that about PHP.

    If we want to get technical, Node.js has a bunch of features that PHP lacks (and vise versa). One of Node.js's features is the speed of asynchronous IO (using Chrome's V8 engine). This can never be implemented in PHP.

    If we want to compare languages, Javascript is used more than PHP. More people know how to use it without first programing with Node.js. That's to say Javascript has a much larger community than PHP every will.

    I'm betting that Node.js will become the "new" PHP, but that's just my experience. :P

    Thanked by 1jcaleb
  • Back to the topic.

    Shell access is not necessary if you implement a simple panel that allows users to restart their instances.

    So an ideal configuration would be, Node.js, MySQL (for better performance), Nginx, and a self-implemented panel to restart per-user instance.

    Thanked by 2sumo Silvenga
  • @W1V_Lee said:
    Node.js and SQLite are required although you can use an alternate database. Because of the way it works you will need to give people some sort of shell access or a control panel yet to exist that allows the service to be started and stopped as a minimum.

    One of the pains of Ghost at the moment is that if you add a new theme or make changes to the code the whole thing needs to be restarted for the changes to be effected.

    You should also allow for a minimum of 256MB of RAM for each blog, as it progresses that will increase and I suspect substantially once the plugins modules come along.

    It's a market ready to be exploited however because of the way it works and the requirements for each blog it's easy to see why it hasn't been yet.

    Agreed on the market. I think it can be quite large in a couple of years. Similar to some of the managed WP services. Was hoping to get in early and see for myself.

  • @msg7086 said:
    Back to the topic.

    Shell access is not necessary if you implement a simple panel that allows users to restart their instances.

    So an ideal configuration would be, Node.js, MySQL (for better performance), Nginx, and a self-implemented panel to restart per-user instance.

    Any recommendations on a panel that could do that? I'm assuming each user would have their own virtualized environment/container, e.g. OpenVZ?

  • sumo said: Any recommendations on a panel that could do that? I'm assuming each user would have their own virtualized environment/container, e.g. OpenVZ?

    I don't think you would need to use full virtualization. Ghost includes its' own web server that runs in Node. Usually, you use Nginx to reverse proxy to this server. There would be one Node process per site as a result of this. The panel would simply need to kill and re-launch the Ghost server process on a per-site basis.

  • We're about to release a product line of Ghost appliances for our OpenNebula Cloud.

  • @sumo said:
    ?

    What alexh said. It shall be easy for you to write a simple panel, and it just kill and restart the process based on the user/site.

    If you are not sure about what's going on here, I suggest you try building up a Ghost site yourself before considering a multi-user environment.

    Install Nginx, MySQL, Node.js, and deploy it using FastCGI or reverse proxy.

  • raindog308raindog308 Administrator, Veteran

    The first thing you need is a massive server.

    The way ghost is architected, every blog has its own Node.js process. You can't just put a webserver that is shared among all blogs (typical shared hosting scenario). Instead each blog has its own Node.js, which consumes RAM, CPU, etc. 24x7. It does not scale in the same way that 500 Wordpress blogs on a server can. You're essentially running many instances that don't share resources.

    I looked into hosted ghost once:

    https://vpsboard.com/topic/3504-free-hosted-ghost/

    As I wrote there:

    Such a strange project, Ghost is...

    "We want to be just blogging...because blogs are important". But they're building on a platform that requires dedicated, unsharable resources which means it'll be limited to (a) technophiles who run their own VPSes, or (B) richer people who can afford managed VPS hosting. (Or I suppose will pay ghost.org to host it for them, which sounds more like a commercial enterprise/startup than a crowdfunded world-improver).

    Meanwhile, the platform they say has gotten away from its roots and is no longer focused on blogging can be run anywhere much more cheaply, appealing to...well, bloggers.

    Thanked by 2sumo obakfahad
  • @alexh said:
    I don't think you would need to use full virtualization. Ghost includes its' own web server that runs in Node. Usually, you use Nginx to reverse proxy to this server. There would be one Node process per site as a result of this. The panel would simply need to kill and re-launch the Ghost server process on a per-site basis.

    Got that, thank you. Just wondering if I had to write the extension to the panel or there was one included. A couple of posts down answered that question.

  • @msg7086 said:
    What alexh said. It shall be easy for you to write a simple panel, and it just kill and restart the process based on the user/site.

    >

    If you are not sure about what's going on here, I suggest you try building up a Ghost site yourself before considering a multi-user environment.

    >

    Install Nginx, MySQL, Node.js, and deploy it using FastCGI or reverse proxy.

    Thank you, was just wondering if I had to write the panel myself or if there was one out of the box.

    I've installed Ghost on several sites before, albeit with SQLite and not MySQL. Will see if the new update allows MySQL as an option.

  • @raindog308 said:
    The first thing you need is a massive server.

    The way ghost is architected, every blog has its own Node.js process. You can't just put a webserver that is shared among all blogs (typical shared hosting scenario). Instead each blog has its own Node.js, which consumes RAM, CPU, etc. 24x7. It does not scale in the same way that 500 Wordpress blogs on a server can. You're essentially running many instances that don't share resources.

    I looked into hosted ghost once:

    https://vpsboard.com/topic/3504-free-hosted-ghost/

    As I wrote there:

    Thank you for the link. That's helpful. Part of the problem I had in thinking about Ghost hosting versus WordPress hosting is that WordPress has a multisite version. The only thing I could come up with was that each instance of Ghost would require a separate environment equipped with its own Node.js. At least it looks like the different instances can share one instance of Nginx and one instance of MySQL.

    I think at some point, Ghost will have to come out with a multisite version. It took WordPress quite a number of years to do that as well. I stopped using Ghost as it was pretty light, but now that multi-users are available, I figured I'll go revisit it.

  • There is no out of the box panel for Ghost as yet. You would need to write one which essentially is not going to be to difficult for someone who knows what they are doing.

    There are a number of tools already out there such as PM2 and forever which can be used to start, stop, restart and monitor your blog from the command line, perhaps worth looking into.

    Softaculous has managed to get it working on cPanel, it's a bit crude though and I am sure it requires you having to do something with a cron job to stop and start but it does work as I have tried it.

    Thanked by 1sumo
  • @W1V_Lee said:
    There is no out of the box panel for Ghost as yet. You would need to write one which essentially is not going to be to difficult for someone who knows what they are doing.

    There are a number of tools already out there such as PM2 and forever which can be used to start, stop, restart and monitor your blog from the command line, perhaps worth looking into.

    Softaculous has managed to get it working on cPanel, it's a bit crude though and I am sure it requires you having to do something with a cron job to stop and start but it does work as I have tried it.

    Thank you for clearing a couple of things up, it makes sense. PM2 is new for me and looks like a good service to look at further.

  • Just to be fair, I run several wordpress sites, but never figured out how to run WordPress Mu. Each of them is run in a dedicated php-fpm pool for better isolation. So in reality, the ghost approach is not particularly bad.

Sign In or Register to comment.