Wiki Services in Leopard Server Overview
Volume Number: 24 (2008)
Issue Number: 07
Column Tag: Wiki
Wiki Services in Leopard Server Overview
A "fast" introduction to wiki and blog services in OS X Server for the SysAdmin
by Ben Greisler
Wiki Wiki!
"Quick! Quick!" That is the rough translation of "wiki wiki" from the Hawaiian language, and we can thank Ward Cunningham for its inclusion in our daily lives.
By providing a quick way for groups to collaborate, and individuals to speak out, wiki and blog technologies have grown in popularity very quickly, no pun intended. People have found their voice and companies have found an effective way to provide communications amongst their employees. Apple has fed this need by providing wiki and blog services in Mac OS X 10.5 Server. We will take a look at these services, discuss some features and considerations for deployment.
Wiki Planning and Setup
There are several prerequisites when setting up wiki and blog services on Leopard Server:
The first gotcha is that the machine hosting the service needs to have a local OD Master running on it. Note, though, that the machine can also be connected to another directory service, too.
You need to have a website set up to present your wiki info. Protect this site the same way you would any other site, such as VPN-only access, or by using SSL.
Plan your storage. As you may find your users storing a lot of data as attachments to their blogs and wikis, make sure you have an appropriate amount of storage set aside.
Each website can be enabled for wiki and blog services. In Server Admin, go to Web and then pick the site you wish to enable. From there you can chose which wiki and blog services you want to enable and if you want to restrict to certain individuals and groups. In Workgroup Manager, pick which Groups are to have wiki and blog services and enable them in the Basic tab.
Fig. 1: Setting up wiki and blog services in Server Admin
Fig. 2: Enabling wiki services for a group in Workgroup Manager
File Locations
Wiki content is stored in /Library/Collaboration (default) with the following specific locations:
Group's services:
/Library/Collaboration/Groups/groupname/
Wiki page components:
/Library/Collaboration/Groups/groupname/wiki/pagename.page/
Main text, html content:
/Library/Collaboration/Groups/groupname/wiki/pagename.page/page.html
Metadata:
/Library/Collaboration/Groups/groupname/wiki/pagename.page/page.plist
Version history database:
/Library/Collaboration/Groups/groupname/wiki/pagename.page/revisions.db
Graphics:
/Library/Collaboration/Groups/groupname/pagename.page/images/
Attachments:
/Library/Collaboration/Groups/groupname/pagename.page/attachments/
Wiki folder structure:
# ls -l
total 8
drwxr-x 2 _teamsserver _teamsserver 68 Apr 5 16:56 ArchivedGroups
drwxr-x 3 _teamsserver _teamsserver 102 Apr 5 16:59 Groups
drwxr-x 2 _teamsserver _teamsserver 68 Apr 5 16:56 Users
-rw-r 1 _teamsserver _teamsserver 249 Apr 5 16:56 dataVersion.plist
# cd Groups/
# ls -l
total 0
drwxr-x 10_teamsserver _teamsserver 340 Apr 5 16:59 wikigroup
# cd wikigroup/
# ls -l
total 24
drwxr-x 3 _teamsserver _teamsserver 102 Apr 5 16:59 discussion
-rw-r 1 _teamsserver _teamsserver 5120 Apr 5 16:59 index.db
drwxr-x 2 _teamsserver _teamsserver 68 Apr 5 16:59 mailinglist
-rw-r 1 _teamsserver _teamsserver 432 Apr 5 16:59 metadata.plist
drwxr-x 2 _teamsserver _teamsserver 68 Apr 5 16:59 public
drwxr-x 2 _teamsserver _teamsserver 68 Apr 5 16:59 resources
drwxr-x 2 _teamsserver _teamsserver 68 Apr 5 16:59 weblog
drwxr-x 3 _teamsserver _teamsserver 102 Apr 5 16:59 wiki
# cd wiki/
# ls -l
total 0
drwxr-x 7 _teamsserver _teamsserver 238 Apr 5 16:59 welcome.page
# cd welcome.page/
# ls -l
total 32
drwxr-x 2 _teamsserver _teamsserver 68 Apr 5 16:59 attachments
drwxr-x 2 _teamsserver _teamsserver 68 Apr 5 16:59 images
-rw-r 1 _teamsserver _teamsserver 427 Apr 5 16:59 page.html
-rw-r 1 _teamsserver _teamsserver 730 Apr 5 16:59 page.plist
-rw-r 1 _teamsserver _teamsserver 5120 Apr 5 16:59 revisions.db
Blog content is stored in /Library/Collaboration (default) with the following specific locations:
User's blog:
/Library/Collaboration/Users/(username)/
Blog folder structure:
# cd /Library/Collaboration/Users/
# ls -l
total 0
drwxr-x 8 _teamsserver _teamsserver 272 Apr 5 17:09 wikiuser1
# cd wikiuser1/
# ls -l
total 24
drwxr-x 2 _teamsserver _teamsserver 68 Apr 5 17:09 discussion
-rw-r 1 _teamsserver _teamsserver 5120 Apr 5 17:09 index.db
-rw-r 1 _teamsserver _teamsserver 479 Apr 5 17:10 metadata.plist
drwxr-x 2 _teamsserver _teamsserver 68 Apr 5 17:09 public
drwxr-x 2 _teamsserver _teamsserver 68 Apr 5 17:09 resources
drwxr-x 2 _teamsserver _teamsserver 68 Apr 5 17:09 weblog
Other files:
Note: These files may be overwritten during software updates and any modifications made in these directories might be nullified at that time.
Client side code:
/usr/share/collaboration/
Python code, help files, templates, etc:
/usr/share/wikid/
Wiki and Blog Security and Control
Being a web based technology, standard web security techniques can be used such as SSL. From the user control perspective you can control wiki access in the Web services list by placing the users and groups you want to allow. You can also use Service Access Control Lists (SACL's) from within Server Admin to determine which users and groups may or may not get access to blogs.
When enabling the group's access to web services in Workgroup Manger, you need to pick which website hosts the desired wiki, and then set the permissions for the group. There are pull-down menus for allowing who can edit the services and who can view then. The choices are:
Group members only: This will allow all users in the group access.
Some group members: Only group members with editing privileges can edit.
Authenticated users: Only users than can authenticate against the directory service.
Anyone: No authentication needed.
Fig. 3: Turn on SSL in Web services in Server Admin
Fig. 4: Setting up a Service Access Control List for blogs in Server Admin
Wiki Templates
Apple provides a set of themes and templates to provide a starting point for wikis and blogs. If you choose to modify a theme, make a copy of it and change the copy, not the original. Apple warns that the originals can be replaced or modified during a software update. It is also suggested to start with the wireframe template located at:
/Library/Application/Support/Apple/WikiServer/Themes/wireframe.wikitheme/
Fig. 5: Setting up the default template, attachment size and data store in Web services in Server Admin
Fig. 6: Default blog interface
Fig. 7: Default wiki interface
Storage Considerations
Blog and wiki entries can contain more than just text. You will find users placing pictures, video and audio into their posts. When you estimate your storage needs, also consider using some form of shared storage, such as Xsan2, if you will want some type of failover or redundant environment for hosting wiki and blog services.
Active Directory Integration Considerations
It is possible to use AD users with wiki and blogs, but due to the fact that the wiki server uses CRAM-MD5 authentication, and the AD plug-in for Open Directory doesn't, you need to allow clear text passwords for wikid. This would be the case if you have your wiki server bound to AD and running as an OD master. Keep in mind that to protect your users, you should be running SSL on the site hosting the wiki.
To enable clear text passwords for wikid, use "serveradmin" to run the following commands:
sudo serveradmin settings teams:enableClearTextAuth = yes
?sudo serveradmin stop teams
?sudo serveradmin start teams
Additional Gotcha's
While Apache2 is the default webserver in Leopard Server, it is possible to use Apache 1.3. If you choose to do this be aware that you shouldn't use SSL, as it will produce pages with http:// rather than https://. With SSL disabled you lose a front-line security defense.
To disable blog service while maintaining wikis, go to Workgroup Manager (with Inspector enabled) and pick Groups from the pulldown menu. Find the ServicesLocator attribute and click the disclosure triangle. Delete the entry that ends with ":blog" and save the changes.
Conclusion
From my experience out in the field, wiki and blog services, collaboration services in general, have really pushed the adoption of Leopard Server. In the past I have found people hesitant to update their server OS early in the new OS cycle, but the collaboration services in Leopard have made people take the chance and become early adopters.
There is more to be learned about wiki and blog services and it is maturing quickly. I have seen direct Apple responses in various lists and discussions and that indicates to me that Apple is taking wiki and blog services very seriously. We will see more development from Apple and third parties. I expect to see new templates become available from the aftermarket much like what we saw with Keynote.
I also expect we will learn more about wiki and blog services, such as the tidbit I heard that you may not need to run it on a local OD Master, but simply doing a trusted bind between your wiki and blog server to an OD Master may be enough. I haven't tested it at the time of the writing of the article, but I expect it will work.
Please provide your feedback to me so I may include it in future articles. You can send the feedback to: ben@kadimac.com
Ben Greisler is a Certified Apple Consultant and Trainer based in the Philadelphia metro area. He consults and teaches nationally and is a regular speaker at MacWorld. He has worked on major Apple deployments both nationally and internationally for schools, government, and enterprise-level organizations.