apple / ccs-calendarserver

The Calendar and Contacts Server.
https://www.calendarserver.org
Apache License 2.0
485 stars 136 forks source link

Installation guide #488

Closed aeifn closed 5 years ago

aeifn commented 7 years ago

Where can I get full installation guide to build and install from source?

doc/admin/guide.rst is incomplete!

dreness commented 7 years ago

Yes, it is incomplete. There is no full installation guide. Sorry :/

Not that it matters in this context, but just for the sake of knowledge: historically, the primary vehicle for the software in this repo was a 'turnkey' product for which no documentation was required or expected. Of course, getting this to work outside of that product is not an easy task, and one that certainly does require either documentation, or familiarity with Python. I will say that the code itself is generally pretty well documented, although code comments don't even try to deal with general administration topics.

I updated Guide.rst by lightly filling out the "Installation" section. Mostly it just says: use ./bin/package.

If you would like to contribute to this guide, please feel free to do so by sending a pull request :)

lloydsargent commented 5 years ago

Of course, the downside is that it is no longer a ‘turnkey’ product and Apple is telling everyone “it is open source and all you have to do is go here” — which doesn’t really help because there isn’t a full installation guide.

Seriously, how difficult is it to write an installation manual so Apple customers can get the services they USED to have with MacOS Server?

I have familiarity with Python. But, let me iterate what has been said for nigh 40 years, CODE IS NOT DOCUMENTATION. Especially not Python code.

I could go on for pages pointing out the discrepancies in Apple’s current API code documentation (which is pretty miserable compared to previous iterations).

But removing ccs-calendarserver from MacOS Server and to add insult to injury to excuse it with “oh, we never expected it to not be a turnkey product” does not excuse that lack of documentation for installation.

dreness commented 5 years ago

@lloydsargent It's pretty difficult, for all the reasons that macOS Server itself was a complex and challenging product - from an engineering perspective; macOS Server users were shielded from the vast majority of that complexity. That said, there was a document produced specifically for the situation you describe, and that can be found here: https://developer.apple.com/support/macos-server/macOS-Server-Service-Migration-Guide.pdf - it is linked from https://support.apple.com/en-us/HT20831. For the CalendarServer portion of that guide, there are both step-by-step instructions for doing the migration manually, and also instructions for running a migration tool that exists in this repo that aims to automate most of those steps. I would opine that achieving a successful result from either path assumes that the person behind the keyboard has substantially more knowledge and awareness compared to the target macOS Server user - there's just no avoiding it, because simplicity was the major feature of macOS Server. (I keep using the past tense, but macOS Server still exists, just in a much slimmed-down form that provides Profile Manager and not much else.)

To be clear, I never intended to imply that code is a substitute for actual documentation, and I 100% agree with you that it's not, especially for something as complex as CalendarServer. Also please be aware that commitments for support and maintenance are quite different between commercial Apple products and open source projects (this is meant not as a stick-in-the-eye, but merely to help ensure accurate expectations).

I'll also add that you can find a recipe for installing a functional CalendarServer, but it's still not documentation - it's a Dockerfile. Actually it's two different somewhat overlapping Dockerfiles, from two different PRs: 513 and 489. This is not at all intended for the specific case of migrating from macOS Server, but maybe one or both of these will be useful to you.

... and FWIW, I agree that there is still a place for more expository, long-form documentation (the vast majority of which on Apple's site is now deemed 'legacy') to compliment the new task-oriented content. If you are finding errors in any of the new stuff, I would encourage you to file bugs at https://bugreporter.apple.com. If it helps you decide where to aim that feedback, I'll add that from my perspective, none of the developer.apple.com stuff is related to either macOS Server or CalendarServer, despite the migration guide linked previously being hosted at developer.apple.com.

I write all these words not with the expectation of solving your problem (although I do hope it helps!), but rather because some information is better than less information.

essandess commented 5 years ago

@lloydsargent @dreness FWIW, Thanks to clues from this thread and elsewhere, I’ve been able to build and deploy a working CalendarServer on a new macOS Mojave install, independent of Server.app, using MacPorts-installed virtualenv, OpenSSL, and PostgreSQL. I have it wrapped in an Nginx reverse proxy to (sort of) isolate the Python 2.7 base from the internet and use modern crypto for the front-end.

I really like ccs-calendarserver and hope it gets some support love now that we’re post-Server.app and soon-to-be post-Python 2.7.

Here are the details. I’ll post config files for caldavd and Nginx after I battle-test it for a bit and maybe attack the TODO of adding APNS using certs issued from an extant Server.app v5.7. The configs are pretty obvious amalgamations of caldavd-apple.plist, caldavd-server.plist, and caldavd-test.plist, as well as some calendarserver-specific header mods in Nginx.

https://github.com/essandess/macOS-Open-Source-Server#calendar-and-contacts