Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Setting up Journey
This page will show you how to set up Journey. Please read all steps before using Journey in production.
NOTE: If you'd like to set up Journey on a linux server, head over to Installing Journey on Ubuntu Server for a step-by-step tutorial.
1. Install Journey
Go to https://github.com/kabukky/journey/releases and download the latest Journey release package for your platform. Then extract the zip file anywhere you like (e.g. in you users home folder).
In your Terminal, navigate to your Journey folder (e.g. /home/youruser/journey/) and start Journey by typing
when using Linux, Mac OS X, or another Unix
when using Windows. Alternatively, you can just double-click the executable.
Journey is now running.
To visit your Journey blog, open
in your browser. You probably haven't written any blog posts to display yet. Let's change that.
in your browser. Fill out the information to create your Journey admin account. In the next step, log in using the user name and password you just provided.
From the admin area you can:
- create, edit, and delete blog posts
- edit your blog settings
- edit your user settings
2. Configure Journey
NOTE: Journey needs to be restarted for the config.json to take effect. Stop Journey by using Ctrl+C in your terminal or closing the terminal window, then start it again. Journey will load its configuration from the config.json.
By editing the "config.json" file in your Journey root directory, you'll change the following settings:
This will change the port the Journey HTTP server is listening on. If you don't want to bind to a particular ip address, writing just ":port number" as the value is fine (e.g. ":8084")
NOTE: If you want to change the port to 80 (HTTP default) Journey will probably need root privileges. There are at least three possibilities to run Journey and bind to a lower port: 1) run Journey as root (bad idea!), 2) use something like setcap (sudo setcap 'cap_net_bind_service=+ep' /path/to/journey/executable) to grant Journey root privileges only for binding (good idea!), or 3) set your firewall to redirect from port 80 to your higher Journey port (good idea!).
This will change the port the Journey HTTPS server is listening on. If you don't want to bind to a particular ip address, writing just ":port number" as the value is fine (e.g. ":8085")
NOTE: If you want to change the port to 443 (HTTPS default) Journey will probably need root privileges. There are at least three possibilities to run Journey and bind to a lower port: 1) run Journey as root (bad idea!), 2) use something like setcap (sudo setcap 'cap_net_bind_service=+ep' /path/to/journey/executable) to grant Journey root privileges only for binding (good idea!), or 3) set your firewall to redirect from port 443 to your higher Journey port (good idea!).
This will change the HTTPS setting of your Journey blog. There are three possible values:
- Your Journey blog and admin area will only be accessible by HTTP, NO HTTPS support is available.
- Your admin area will ONLY be accessible by HTTPS (HTTP connections will be redirected to HTTPS), your Journey blog will be accessible by both HTTP and HTTPS.
- Your Journey blog and admin area will ONLY be accessible by HTTPS (HTTP connections will be redirected to HTTPS).
NOTE: For a minimum of security, "HttpsUsage" should always be set to at least "AdminOnly" to ensure your login credentials and cookies are being sent using an encrypted connection.
When HTTPS is enabled ("HttpsUsage" is not set to "None"), you have to provide files containing a certificate and matching private key for the server.
Those files have to be placed in the content/https folder (e.g. /home/youruser/journey/content/https) as cert.pem and key.pem.
If HTTPS is enabled and the cert.pem and cert.key files are not present in this directory, Journey will generate new cert.pem and cert.key files upon startup.
Replace those files with your own as soon as possible and don't use them in production.
Head over to Using a StartSSL Server Certificate with Journey for detailed instructions on how to set up a free and widely trusted server certificate that you can use in production.
This will change the url of your Journey blog. Change this to the host name the blog is supposed to be reachable under (e.g. "http://www.myblog.com"). This can be a HTTP or HTTPS address.
The "Url" setting is used to generate links to the blog (rss feeds and @blog.url helper).
This will change the HTTPS url of your Journey blog. Change this to the host name the blog is supposed to be reachable under (e.g. "https://www.myblog.com"). On a production server, this is usually set to the same value as Url, but always an HTTPS address (the Url value could be either HTTP or HTTPS). It will probably only differ when you do not use the standard HTTPS port (443).
The "HttpsUrl" setting is used to redirect incoming HTTP connections to HTTPS.
If true, Journey will automatically get the required HTTPS certificates from Let's Encrypt. You need to run Journey on a publicly accessible domain for it to work. The domain must be specified in "HttpsUrl".
3. Choose a theme
The Promenade theme is included by default to make Journey work out of the box. However, it is only intended to be used on a one author, personal website.
For a fully fledged blog experience try the Casper theme from the makers of Ghost.
Download it and place the Casper directory in the content/themes folder of your Journey installation (e.g. /home/youruser/journey/content/themes). Then select Casper in your admin panel under Settings/Blog.
After that, try some other themes! There's a whole world of Ghost themes out there. Find the one you like best.
4. Write your own theme or plugin
Finally, you can always write your own theme and use it with Journey. Start by visiting http://themes.ghost.org and by reading one of the many tutorials that show you how to create a Ghost theme!
If you're interested in writing a plugin, head over to Creating a Journey Plugin!