Citadel: A Bastion of Groupware Functionality
The FOSS (Free/Open Source) world has inspired a large number of excellent groupware and messaging servers. These offer nice, large feature sets: shared calendars and contacts, meeting planners, e-mail, file sharing, instant messaging, and lots more. A lot of them are commercial products that also have "open source" versions. While they like to boast of their open source cred and use as much FOSS code as they can, there are significant feature gaps between the commercial and free versions. The free versions are missing things like Outlook connectors (which to me is a pro, not a con), management consoles, and decently integrated installation packages.
The genuine open source products, such as eGroupWare and PHPGroupWare, are pretty nice, but they also have their itchy bits. They require LAMP stacks, so you have all the fun of harmonizing PHP with with the other pieces, the initial installation and setup are time-consuming and plagued with dependency conflicts, and you have to keep track of an entire herd of passwords. I have my own reservations about PHP, so I avoid running PHP-based applications as much as possible.
Storming the Citadel
Which brings us to my favorite groupware and messaging server, Citadel BBS. Citadel is 100% GPL, and doesn't play games with making either binary or source downloads easily available. If I had to describe Citadel in a word, it would be "simplicity". It is a complex application with a lot of power and flexibility, but it's easy to install and administer. It has an excellent installation script that builds the whole works from source code, and the same script is also an upgrader. Unnecessary complexity may wow the PHB set, but we real people know that simplifying the management of a complex application takes some real engineering skills.
The feature set is typical of groupware and messaging servers:
- email and Webmail
- calendaring and scheduling
- mail list server
- instant messaging
- forums and chat
- contacts directories
- RSS feeds
You get public folders, LDAP integration, TLS/SSL, authenticated SMTP, and anti-spam tools. But that's not all. I have a special fondness for Citadel because it has remained true to its BBS (Bulletin Board Service) roots. Y'all crusty old geekbeards remember the glorious BBS days of yore, before the Worldwide Wait and AOHell arose to dominance. (Wikipedia's bulletin board system entry is a good overview.) Citadel supports both telnet and Web browser access to its BBS, which you can view in action at Uncensored!. Uncensored! is pretty limited compared to the great BBS back in the olden days. All you can do is a forum-style chat, or start a live chat with someone. The BBS that I grew up with also offered games and file downloads. BBS were the major distributors for shareware, and MUDs (Multi-User Domains) were the homes of online role-playing games like Legend of the Red Dragon, Planets, Dungeons and Dragons, Zork, Rogue, and DragonMUD.
Citadel is organized in the style of a classic oldtime BBS, and the bulletin board component is an obvious ancestor to today's Web forums. You post a message, then wait for someone to respond. Just like modern forums, only faster and more efficient, and not larded up with pointless fancy scripting tricks.
If you're getting impatient with this little trip down memory lane, it does have a purpose. Citadel is a good, efficient communication tool for your users. When you compare it to modern forums, most of them do not compare favorably. They are slow and overly-complex, and don't offer any more functionality — they're still just text messages in a flat file format. Citadel is fast and reliable, and it supports both Web and text clients with equal ease.
Citadel's BBS roots influence its user interface, which is very user-focused. Your users can log in and do their work without Citadel getting in their way. It uses the old BBS concepts of "floors" and "rooms", which you use to organize your server resources in whatever way works for you. A floor contains any number of rooms, and a room is an email folder or bulletin board, a calendar, address book, task list, or notes page. The bulletin board view is flexible, and you can use it for jobs like file sharing and RSS feeds. Citadel handles large loads, and it's easy to expand by adding additional servers, so you can share resources across multiple servers.
Installation is super-easy. Visit Easy Install Instructions and do what it says. Say "yes" to having Citadel manage its own user accounts; don't use Linux system accounts. Say yes to installing WebCit, because this is the integrated HTTP server that powers the AJAX-based Web client interface. WebCit also supports Webcal and GroupDAV, so you can connect any PIM (Personal Information Manager) client that supports these.
The longest part of the installation is waiting for everything to download. When it's finished, you need to log in and create an administrative WebCit user. You can log in on the command line by running /usr/local/citadel/citadel, and then follow the prompts to create a new user. Point your local Web browser to http://localhost:2000/ (or whatever address the setup program tells you to use) to use the Web interface. You can log in from a neighboring PC using your server's hostname or IP address, such as http://192.168.10.174:2000/. Citadel automatically sets up TLS/SSL at installation, so you could choose a secure connection by using https://192.168.10.174/ instead.
When you log in for the first time, whether it's via the Web interface or command line, you'll have to create a new Citadel user. This user is given access level 6, Aide, which gives this user full administrative powers. It can add and remove users, create and remove floors and rooms, create and manage mailing lists, and perform most server administration chores.
Citadel listens on a lot of ports, so if you have to pass through a firewall to get to your Citadel server visit the Administration -> Edit site-wide configuration -> Network tab to see which ports Citadel is using. This does not show TCP port 2000, which is the default port for WebCit, so be sure this is not blocked. netstat -untap shows all listening ports on your system.
If you want to get rid of Citadel, delete /usr/local/citadel, /usr/local/webcit, and /usr/local/ctdlsupport, and remove the "citadel" and "webcit" entries from /etc/init.d.
Assuming you haven't removed Citadel and want to learn more, come back next week to set up e-mail, and we'll build some floors and rooms.