Using Jekyll on NearlyFreeSpeech.net
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:
alias sshnfsn='username_sitename@ssh.yourhostname.nearlyfreespeech.net';
Once you save the .bashrc file, you can source it with:
. ~/.bashrc
and then test that it works with by running it.
sshnfsn
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.
jekyll --server
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!