Ever since the dawn of computing, us poor oppressed users have been asking for just one thing. It seems such a small thing: a shared calendar and contacts manager. Oh I know, a plain text file set to mode 0666 was good enough for grandma, but these days it's OK to want more. Just a simple way for us to easily share calendars and addresses with our simple, humble friends and co-workers.
But what did we get? We did not get our simple shared calendar and contacts, oh no. We were punished for our effrontery for even asking with awful punishments like Lotus Notes, Microsoft Exchange, and Novell GroupWise, which were larded with so many Features and Productivity Thingies they couldn't get out of their own way. But we were not silenced, and continued to politely clamor for what we really really wanted.
Linux to the Rescue?
You'd think that the FOSS (Free/Open Source) world would be all over this, but it seems that FOSS has the same feature-itis affliction. In my quest I found groupware servers galore, but hardly any standalone shared calendars or address books. Google was not very helpful, so I consulted Debian instead:
$ apt-cache search calendar $ apt-cache search address book $ apt-cache search contact
On the theory that if I can't install it with aptitude, I don't want to bother. yum search [foo]does the same job on Fedora. I weeded down the results to a few interesting-looking candidates, and decided to try these:
Fedora doesn't appear to include either PHPGroupware or eGroupWare. Both sites include downloads and installation instructions for Fedora and other Linuxes. PHPGroupware and eGroupWare are modular and endlessly-extensible- you get to choose which bits to install, rather than being stuck with the whole works. If you spend any time with them you'll notice the two are remarkably similar, which is doubtless due to eGroupWare being a fork of PHPGroupware.
Kronolith is the calendar portion of the Horde groupware suite. Webcalendar is an excellent standalone calendar with more features than the others. Neither one of these includes an address book. In fact I did not find any standalone shared contacts managers. Which doesn't mean they're not out there somewheres, they're just very shy.
Too Many LAMPs
None of these are simple to install, not even on Debian. They require an HTTP server, a database backend, and PHP. Or, for the acronym fans, a LAMP stack. It sounds simple enough, but getting all the necessary pieces without conflict is harder than it sounds. Debian doesn't offer much flexibility- you get Apache and PostgreSQL whether you want them or not, even if you would rather use Lighttpd and SQLite. A source installation would provide more control, but sheesh, that's so last-millennium. I like a nice package manager that does the work and makes for easy updates, especially since PHP's notorious friendliness to exploits means you need to be continually on top of security updates.
After hours of bloody combat, I discovered BitRock Web Stacks. That's right, nice prefab LAMP stacks. Now all of you who were dying to email me and tell me about BitRock can relax. But if you know of other easy ways to light a LAMP, feel free to tell me about it.
PHPGroupware Slough of Despond
My Debian PHPGroupware installation died in a welter of conflicting dependencies. Another time, perhaps. And so by a very scientific process of elimination, we arrive at
eGroupWare's Web site almost chased me away with their use of horrid shadowed text. Yes, I know I'm old-fashioned to prefer readability, but at my advanced age I'm not about to change. I tried this one on Kubuntu because Debian Etch seemed to have misplaced its eGroupWare packages. This one also nearly died in a tangle of package conflicts. The showstopper was PostgreSQL. There was an old, unsupported version of PostgreSQL lurking on my system (7.4); the current supported version is 8.1, but trying to remove 7.4 and install 8.1 became an unwinnable rasslin' match. Finally I got tired of getting beat up and installed MySQL. Then I figured out how to get rid of PostgreSQL anyway. (Reinstall the dumb thing, which replaced a missing file. It was going to be removed anyway, why did that file need to be there?)
Kubuntu, just like its parent Debian, tries heroically to satisfy all dependencies, but it leaves out a few essential bits. This is no big deal because eGroupWare has a built-in tester that tells you what remaining pieces are needed. This is what worked for me:
# aptitude install mysql-server mysql-client
The installer prompts you to create a MySQL user and password. I used mysql with no password. Then to complete the installation:
# aptitude install egroupware-addressbook egroupware-calendar egroupware-manual
This pulls in all kinds of stuff, including Apache2. There is a short post-installation configuration: you'll have to create a "header admin" user and password. You'll be creating a lot of different administrative users, so keep track.
Now you can fire up a Web browser and go to http://localhost/egroupware/setup. If your Apache server uses your domain name, use that instead. The IP address should also work. Use your header admin user and password to log in, then run the installation checker. If you see a warning that you need a MySQL extension, that means you need to install php4-mysql or php5-mysql, whichever one matches your PHP version. On my system that was php4-mysql.
You can ignore warnings that don't apply to you, such as missing Oracle or MS-SQL extensions. Once you have eliminated errors and are left with only unimportant warnings, you can go to the next page.
Setting Up eGroupWare
There are a lot of options on the setup page, but you can accept most of the defaults. Enter the password for your header admin user and password, then create a DB User and a Configuration User. The Configuration User can be the same as the header admin. Make sure the DB Type is correct. Then click "Write Configuration."
You'll probably wind up on a page warning you that your database has not been initialized. Follow the instructions to do this- eGroupWare thoughtfully spells them out for you.
After your database is initialized, you'll be prompted to install some additional applications, and to create an admin account. Yes, one more admin account! This account does not log in on the setup screen, but on the login screen that all users use. When you are finished with this page, open a Web browser to http://localhost/egroupware, or log in from a neighboring PC. Log in with the last admin user that you created, and at last you looking at the main eGroupWare interface! Hurrah!
Now you can add your users, view logs, customize the interface, perform backups and restores, and all kinds of fun administrative chores. You won't need the Setup screen again, unless you want to create additional databases or add more applications.
Now that you have done all that, it's easy.
This isn't a very secure setup. The Install & Security HowTogoes into detail on making your installation more secure.
Moral of the Story
An ace administrator of LAMP stacks will go far, given the proliferation of Web-based applications. It takes a lot of hard work to make an interface where users can go happily pointy-clicky and be contented with their simple, humble shared calendar and contacts.
- eGroupWare's manual is included in the Setup interface, and also online at eGroupWare Wiki, along with other documentation