3

I need a simple (reliable) calendar server on my server that will preferable integrates with Mozilla Thunderbird email client that I already use.

Also a Android client?

user1797147
  • 465
  • 1
  • 5
  • 10
  • 1
    This may help you https://wiki.ubuntu.com/CalendarServer I have not tried it myself but it is Apples calender service, so it should be pretty good. – Mark Kirby Sep 09 '16 at 08:20

2 Answers2

2

You can install owncloud. https://owncloud.org/

Or:

  • 1
    Owncloud is just another catch.. like google or microsoft. Looks nice at first look, but for free version you have to pay $$$ for mobile clients, etc, etc. In addition, Owncloud costs 3600$ for 50 users.. hmmm... does'it worth it? – user1797147 Sep 09 '16 at 08:01
  • @user1797147 Owncloud supports the caldav protocol and can be used on android with all caldav clients. I agree that it probably does not fit the requirement "simple", but "just another catch" sounds rather harsh. – Bruni Sep 09 '16 at 09:41
2

Radicale as a Simple, Reliable Calendar Server

Copied and abridged from https://github.com/Kozea/Radicale/wiki/Simple-installation

Simple to Install

##### Install dependencies for Radicale
ServerUSER@Server:~$ sudo apt-get install python3-pip
##### Install dependencies for bcrypt encryption method
ServerUSER@Server:~$ sudo python3 -m pip install --upgrade passlib bcrypt
##### -H flag uses root's home rather than USER's home
ServerUSER@Server:~$ sudo -H python3 -m pip install --upgrade radicale

Simple to Configure

##### Put user "fakeuser" in a new "users" file
ServerUSER@SERVER:~$ sudo htpasswd -B -c /etc/radicale/users fakeuser
New password:
Re-type new password:
##### Add another user
ServerUSER@SERVER:~$ sudo htpasswd -B /etc/radicale/users user2
New password:
Re-type new password:
##### Install dependencies for bcrypt encryption method
ServerUSER@SERVER:~$ sudo python3 -m pip install --upgrade passlib bcrypt

Edit the Configuration File

ServerUSER@SERVER:~$ sudo nano /etc/radicale/config

Tell Radicale where to find users

##### Add these lines under relevant portions of [auth] section
type = htpasswd
htpasswd_filename = /etc/radicale/users
# encryption method used in the htpasswd file
htpasswd_encryption = bcrypt

Add some safety limits

##### Add these lines under relevant portions of [server] section
max_connections = 20
# 1 Megabyte
max_content_length = 10000000
# 10 seconds
timeout = 10

##### Add these lines under relevant portions of [auth] section
# Average delay after failed login attempts in seconds
delay = 1

Edit files to allow SSL/TLS connections from other machines

##### Add these lines under relevant portions of [server] section
hosts = 0.0.0.0:5232
##### By setting ssl = True, Radicale no longer responds to HTTP requests.
ssl = True
certificate = /etc/ssl/radicale.cert.pem
key = /etc/ssl/radicale.key.pem

SSL/TLS keys

Make a Self-Signed SSL/TLS Certificate to allow HTTPS connection to your Radical Service on Server

##### You can hit enter as an answer to all the questions to set the default except this one: 
##### "Common Name (eg, YOUR name) []:" where you will enter your domain name or dns record 
##### used for your development server, or in case of wildcard certificates, 
##### use an astrisk, like this: *.mycompany.com 
##### By using a self-signed certificate, your browser should warn you of this fact.
##### Confirm exception as you wish, but this exception is necessary to visit page.
ServerUSER@Server:~$ openssl req -nodes -newkey rsa:2048 -keyout /etc/ssl/radicale.key.pem -out /etc/ssl/radicale.cert.pem -x509 -days 365

Common Name (eg, YOUR name) []: developmentserver12345

Radicale Service

Set Up Service on Server to allow Radicale to run in background all the time

##### Create "radicale" user and group for Radicale service
ServerUSER@Server:~$ sudo useradd --system --home-dir / --shell /sbin/nologin radicale
##### Make storage folder writable by user "radicale"
ServerUSER@Server:~$ sudo mkdir -p /var/lib/radicale/collections
ServerUSER@Server:~$ sudo chown -R radicale:radicale /var/lib/radicale/collections
##### Make storage folder non-readable by others
ServerUSER@Server:~$ sudo chmod -R o= /var/lib/radicale/collections

Create the file /etc/systemd/system/radicale.service

ServerUSER@Server:~$ sudo nano /etc/systemd/system/radicale.service

Cut and paste and save the following into the /etc/systemd/system/radicale.service blank nano screen

[Unit]
Description=A simple CalDAV (calendar) and CardDAV (contact) server
After=network.target
Requires=network.target

[Service]
ExecStart=/usr/bin/env python3 -m radicale
Restart=on-failure
User=radicale
# Deny other users access to the calendar data
UMask=0027
# Optional security settings
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
PrivateDevices=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
NoNewPrivileges=true
ReadWritePaths=/var/lib/radicale/collections

[Install]
WantedBy=multi-user.target

Start the Service Manually (Service will start automatically on failure and/or Server restart)

# Enable the service
ServerUSER@Server:~$ sudo systemctl enable radicale
# Start the service
ServerUSER@Server:~$ sudo systemctl start radicale
# Check the status of the service
ServerUSER@Server:~$ sudo systemctl status radicale
# View all log messages
ServerUSER@Server:~$ sudo journalctl --unit radicale.service

Connects to Thunderbird

Create New Calendar in Thunderbird (Public.IP.Address Server)

  • Open Thunderbird
    • Click "Events and Tasks > Calendar"
    • Click "File > New > Calendar" [or right-click "Calendar Pane > Calendar List" area and select "New Calendar"]
    • Select "On the Network" in the dialog box and click "Next"
    • Select a Format and Location and click "Next"
    • Enter a Name, Color, and Thunderbird email account and click "Next"
      • Name: TB to Server Real Radicale Calendar (TSRRC)
      • Color: [color you would like to indicate an event on TSRRC]
      • Email: [default]
    • Click "Finish"

Connects to Android

Create New Calendar in Android (Public.IP.Address Server)

jtd
  • 2,375
  • 2
  • 23
  • 31