NearlyFreeSpeech.net is a good simple, bare-bones fit for a Jekyll site once everything is set up. The price can't be beat, you can put down a $10 payment and just try it out. With a Jekyll site, that $10 investment should last a while!
Set Up SSH Alias
The first thing to do is set up an ssh alias in your .bashrc file. The hostname and username that are assigned at nfsn are generally pretty easy to forget, so I always create an alias for them, like:
Once you save the .bashrc file, you can source it with:
and then test that it works with by running it.
Aside: Public, Private, Protected Directories
On a nfsn site, there are 3 directories in your /home folder.
The /home/public folder is your public facing directory. This is your website's public Document Root.
The /home/private folder is your private folder where you can store git repos, your ruby gems, anything private you need to use or back up.
The /home/protected: let me know if find a use for this.
Set Up Git on NFSN
Once you are ssh'd into nfsn, cd into /home/private and create a directory for your git repositories and create a bare git repository for your site.
cd /home/private mkdir git cd git mkdir mysite.git cd mysite.git git init --bare
Now you have a bare git repository for your jekyll site. The following script will create a git post-receive hook, that will run every time you push to your git repository.
#!/bin/sh REPONAME=mysite.git GIT_REPO=$HOME/git/$REPONAME TMP_GIT_CLONE=$HOME/git/tmp_deploy/$REPONAME PUBLIC_WWW=/home/public # clone the git repo into the tmp_deploy directory. git clone $GIT_REPO $TMP_GIT_CLONE # jekyll-ify the site and place html files in /home/public jekyll --no-auto $TMP_GIT_CLONE $PUBLIC_WWW rm -Rf $HOME/git/tmp_deploy/$REPONAME/.git/objects rm -Rf $HOME/git/tmp_deploy/$REPONAME/.git rm -Rf $HOME/git/tmp_deploy/$REPONAME exit
Be sure to chmod +x the file:
chmod ug+x /home/private/git/mysite.git/post-receive
Now, every time you "git push" into nfsn this post-receive hook will auto-regenerate your jekyll site.
Set Up a Git Remote to NFSN
Back on your home computer or wherever you are building your jekyll site, you need to create a git remote for your nsfn git repository.
cd ~/projects/mysite.git # substitute in your username, sitename and nfsn hostname git remote add nfsn ssh://<nsfnusername>-<sitename>@ssh.<hostname>.nearlyfreespeech.net/home/private/git/mysite.git
Now that you have a git remote set up for your jekyll site, you can
Create a page in your jekyll "_post" directory.
Run "jekyll --server" to test it locally at http://localhost:4000.
If it looks good, add it to your git repository.
git commit -am "new brilliant post!"
Next, push it to your website on nfsn.
git push nfsn master
The post-receive script you created earlier will generate your new public jekyll website automatically.
Test it and enjoy!