Confluence on Windows Azure

I’m a big fan of Atlassian products, particularly their Confluence wiki. Since leaving a job where I was the Confluence administrator, I’ve really missed the ease of its use, compared to the SharePoint piece of crap at my current job. So I decided to set up my own instance on a Windows Azure server.

First off, let me say that I am by no means knowledgeable about Azure. In large part, this is an opportunity for me to learn more about it (and then share what I learn!).

I built a basic A2 (2 cores, 3.5 GM memory) Windows Server 2012 R2 server with Microsoft SQL Server 2014 pre-installed. I then downloaded the 64-bit Confluence installation to my local machine because I got fed up with the default security on the server’s Internet Explorer. So my first problem was how to transfer the file. I solved that by editing the Remote Desktop Connection to include local drives in the connection. After the transfer completed, the application installation went smoothly.

RDP Configuration

RDP Configuration

Following the configuration instructions, I created a new database with the necessary collation and a database owner login and user. I put this information into the JDBC connection settings and watched the database be built.

Once the configuration completed, I logged in with the administrator account and set up a new user. Not surprisingly, when I tried to connect to the website from my local machine, the operation timed out. Now, as I’ve said, I’m not a Azure expert. How do you configure security in Azure?

Googling around, I finally discovered endpoints. By default, Confluence uses the 8090 port, so there needs to be an endpoint defined to connect to that port internally. It is possible to change Confluence’s port with a minor tweak of its server.xml file.

Endpoint screenshot

Azure endpoint configuration for Confluence

After configuring this endpoint, I still couldn’t connect, but this time it was connection refused. Progress, at least. More hunting around. The tip-off came from one minor line in the Azure documentation:

Ensure that the firewall on the virtual machine has been configured to allow the traffic corresponding to the protocol and private port.

Bingo! The missing link. After configuring a firewall port, I was able to connect successfully.

firewall settings

Confluence firewall protocol

I am thrilled to once again have access to a Confluence instance. At this point I’m not sure what the cost will be, but extrapolating from one day, it should be less than $40 a month. I have an MSDN subscription with $110 credit per month, so that seems like a right good deal to me!

Now I just have to convince my employer that it’s superior to SharePoint’s sorry excuse for a wiki.

Is this the best way to set it up? I have no idea! If you’re an Azure expert and want to give me a tip on how to do it better, leave a comment!

Customizing Confluence User Interface Text

Boilerplate text for Confluence pages is stored in a single file that can be modified. The file contains a long list of key value pairs. To determine the key value of the test you wish to change, append ?i18ntranslate=on to the page URL to see the key values displayed.

e.g. http://<host name>/dashboard.action?i18ntranslate=on

The file containing the boilerplate text is ConfluenceActionSupport.properties, and it’s packed in a jar file. To unpack the file, copy <confluence install>\confluence\WEB-INF\classes\confluence-x.x.x.jar into a different folder and run the following:

“C:\Program Files\Java\jdk1.7.0_25\bin\jar” xf confluence-x.x.x.jar”

Modify the path to the JDK appropriately, as well as the name of the jar file with your particular version. This command will unpack a few thousand files in multiple subfolders into the folder where you copied the jar file. DO NOT extract the jar file in the installation directory!

Before making modifications to the default file, check to be sure there isn’t already a customized file. A customized file could have been repacked into the jar file, but it’s easier just to place the customized file in the regular file system, and it will override the version in the jar file. Look in \confluence\WEB-INF\classes\com\atlassian\confluence\core. If the core folder and ConfluenceActionSupport.properties file do not exist, the jar file is not being overridden.

Open ConfluenceActionSupport.properties in a text editor and search for the key value that you found earlier. As an example, the following change will customize the text on the login screen and the name of the dashboard.

login.name=Log in using your Active Directory credentials
title.dashboard=Confluence Portal

Once edited, place ConfluenceActionSupport.properties at the following location, which may necessitate creating the core folder:

<confluence install>\confluence\WEB-INF\classes\com\atlassian\confluence\core

This location is based on the file’s location in the packed jar file.

Note: These instructions were tested on Confluence version 5.4.2.

Hide Child Page List

A source of annoyance for me on our internal Confluence installation is the default list of child pages at the bottom of every page. I finally found a solution on Sarah Maddox’s blog post Confluence tip – how to hide child pages in the Documentation theme.

child pages

Caveat

These instructions are tested on the Documentation space theme. If you are using a different theme in your space, it may not work.

Pre-requisite

You must be the space administrator to make this change. If you’re not the administrator, suggest this to the administrator.

Steps

  1. Go to Browse > Space Admin > Stylesheet.
  2. Add/edit the stylesheet.
  3. Paste this code in the box.
  4. #children-section{display:none;}

  5. Save and rejoice!

Check out Sarah Maddox’s awesome Confluence book Confluence, Tech Comm, Chocolate: A Wiki as Platform Extraordinaire for Technical Communication (affliate link).

Sticky Wikis

John Rotenstein, Business Intelligence Manager at Atlassian, made a presentation at the Atlassian Summit in San Francisco on how Atlassian makes its Confluence wiki “sticky.” As an international organization, Atlassian expects its employees to “live in” Confluence all day as the single point of access for corporate knowledge, collaboration and communication.

A couple of the highlights:

Adding wiki search to the browser

In Chrome, right-click on the search bar and select ‘Edit search engines…’ Scroll to the bottom of the list and add a new search engine. Set the keyword to something obvious (I picked ‘mywiki’) and the URL to:

http://my-wiki/dosearchsite.action?queryString=%s.

Replace my-wiki with the DNS name of your Confluence site. It will look like this:

searchengine

Now you can open a new tab and type in the search bar “mywiki[space][search term]”. Check out what happens once you hit the space bar:

search bar

Then, continue typing the search term:

display

And see the results:

output

Sharing pages

Sharing pages with co-workers is a great way of alerting someone to content that they might find useful, or request a review or comment. Every page and blog post has a Share link in the top right corner. Add the recipients and a personalized note, and they will receive it as an email, with a link right to the page.

share dialog

You can view the slides from the presentation at http://www.slideshare.net/GoAtlassian/collab-06-john-rotenstein-final.

Atlassian to make big announcement!

On October 25, 2011, Atlassian is hosting a world-wide party to announce a new product launch. You can sign up to attend the Edmonton party on the Facebook event page. Come out and meet other Atlassian users in Edmonton!

There will be snacks, pool and prizes.