Install Marco Arment’s Second Crack in a few simple steps.

I’ve been interested in Second Crack ever since I heard Marco Arment discuss it on Build and Analyze. After writing more frequently both here and at Hack/Make, I became frustrated with the workflow of writing in Byword or BBEdit then having to copy and paste into Tumblr. I was a little hesitant getting into hosting my own blogging engine since my sysadmin skills aren’t great but I was familiar enough with it that I thought I’d give it a shot. When I set out to implement Second Crack, I wanted to do it in a way that could be replicated so that other who aren’t total neck-beard Unix nerds could roll out Second Crack on their own and benefit from it’s simple publishing without struggling with the worst parts of server administration. What I came out with, after a weekend wrestling with shell scripts, folder permissions, and Dropbox daemons, is deploysecondcrack—a simple four step process that anyone who can copy and paste can use to roll out Second Crack on their own server.

If you’re familiar with servers, jump straight to deploysecondcrack on Github. deploysecondcrack is optimized to run on CentOS 6. I chose this since Marco is running CentOS and will probably provide the best long-term compatibility.

If you’re not familiar with servers, let’s go through the set up process in a little more detail than what’s in the README on Github.

1. Get a cloud server account

Second Crack is self-hosted so you’ll need your own server. For this, I suggest Rackspace Cloud. A Rackspace account is free and you pay for servers by the hour. The smallest CentOS instance on Rackspace (which is likely enough for most low-traffic blogs is $0.015/hour. This adds up to about $10 a month. They provide amazing support, which is a great thing to have if you aren’t very comfortable with servers. Amazon Web Services would work fine and prices are generally comparable but Rackspace’s fanatical support is a great thing to have.

2. Create a second Dropbox account (optional)

I have about 40GB of data in Dropbox that I don’t want syncing to my server. I created a second Dropbox account specifically for my blog and shared the folder that will be created automatically later in the process with the other Dropbox account I use. Now’s a good time to create this account before we get too deep into the server stuff.

3. Launch a cloud instance

Once you’ve created your account and it’s been verified over the phone by a cheery Rackspace employee, you can go into your control panel and in Hosting > Cloud Servers, add a new server. Here, choose CentOS 6 then name your server and chose a size. Pick a server based on your needs and how much you want to spend but a 256MB or 512MB box will probably be enough. Second Crack serves cached static HTML files which doesn’t require a lot of memory to be quick and handle a decent amount of traffic. When you click “Create Server” it’ll start spinning up a cloud instance and then email you with and IP address and password for you to SSH into your shiny new server when it’s done building. If you’re unsure whether you want to commit to using Second Crack, you can spin up a server with very little commitment since you’re billed by the hour. If you can’t get things running or get it going but don’t like it, just delete the server and you’ll only be out a few cents.

4. SSH into your server

Once you have the IP address and password for your server, we can access it from the command line to install Second Crack. Open up Terminal (or PuTTY if you’re still on Windows) and SSH into your server with the command ssh root@12.34.56.78 using your IP address. Type yes when prompted to add your RSA and then the password you were emailed. When you see the [root@servername ~]# prompt, we’re ready to go.

5. Deploy Second Crack

Head to the Github page for deploysecondcrack where you’ll find the steps to install and configure the server environment, all dependancies, Dropbox, and Second Crack. These steps are mostly copy and paste, but there are a couple places you’ll need to use the command line text editor Vim. There’re a few basic commands you’ll need to know to use it. You can look at the full Vim cheat sheet if you need, but you’ll be able to get the job done with a few commands. You can move around the file using the arrow keys. To edit the file, press the i key to enter into insert mode. Make any changes you need the press esc to leave insert mode. You can jump to certain line numbers by typing :42 and pressing enter to jump that that line. You can search by pressing / and then typing in your term and pressing enter. n will jump to the next result. Once you’re done editing a file, press esc to get to the command mode and you :wq to save and exit the file. If you screw up and want to start over, :q! will close the file without saving. You shouldn’t need it in the standard set up, but a few basic commands if you run into troubles and need to troubleshoot: pwd (print working directory) will show you the path of your current location, cd /path/to/folder will change the directory you’re into the one you specify. If something happens and you aren’t give the command prompt (the $), hitting ctrl-c should usually get you there. When you’re done with the steps on Github, come back here to finish things off.

6. Configure your DNS

You’ll need to set up the DNS for your domain name to the IP address of your server. If you don’t have a domain, use a service like Namecheap to register one. To point your domain to the server, add an A RECORD that points to your IP address and wait a few minutes. You should be able to then access your new blog from your domain.

7. Post something

Posting is really easy with Second Crack and the main reason I moved it it. All you need to do is save a markdown file in your Dropbox in the _publish-now folder with the formatting as specified in the Second Crack documentation on Github.

8. Add some styling

deploysecondcrack includes a very basic stylesheet to get you started. There’s enough there to dive into and start styling your blog. If you don’t know CSS, now’s a great time to learn.

Notes:

  • I’ve tested this fairly thoroughly and I’m hoping it will work for you but I can’t guarantee it. If you need some help, let me know on Twitter but there’s no promises I’ll be able to help.
  • As outlined in the Github README, this install does not include any security or firewall. Be aware of this.