aboutsummaryrefslogtreecommitdiff
path: root/content/blog/2023-06-08-self-hosting-baikal-server.md
diff options
context:
space:
mode:
authorChristian Cleberg <hello@cleberg.net>2024-03-04 22:34:28 -0600
committerChristian Cleberg <hello@cleberg.net>2024-03-04 22:34:28 -0600
commit797a1404213173791a5f4126a77ad383ceb00064 (patch)
treefcbb56dc023c1e490df70478e696041c566e58b4 /content/blog/2023-06-08-self-hosting-baikal-server.md
parent3db79e7bb6a34ee94935c22d7f0e18cf227c7813 (diff)
downloadcleberg.net-797a1404213173791a5f4126a77ad383ceb00064.tar.gz
cleberg.net-797a1404213173791a5f4126a77ad383ceb00064.tar.bz2
cleberg.net-797a1404213173791a5f4126a77ad383ceb00064.zip
initial migration to test org-mode
Diffstat (limited to 'content/blog/2023-06-08-self-hosting-baikal-server.md')
-rw-r--r--content/blog/2023-06-08-self-hosting-baikal-server.md159
1 files changed, 0 insertions, 159 deletions
diff --git a/content/blog/2023-06-08-self-hosting-baikal-server.md b/content/blog/2023-06-08-self-hosting-baikal-server.md
deleted file mode 100644
index f83a9e9..0000000
--- a/content/blog/2023-06-08-self-hosting-baikal-server.md
+++ /dev/null
@@ -1,159 +0,0 @@
-+++
-date = 2023-06-08
-title = "Self-Hosting Baikal Server (CalDAV & CardDAV)"
-description = "A guide to self-hosting the Baikal application on your own server."
-+++
-
-## What is Baikal?
-
-[Baikal](https://sabre.io/baikal/) is a lightweight CalDAV + CardDAV
-server that you can self-host on your own machine. While I have tried (&
-failed) to get this CalDAV + CardDAV server running before, it was quite
-easy this time. Not really sure what I did differently this time, but
-I'm documenting my process here to ensure I don't forget.
-
-## Installation
-
-First, create a folder on your server and open a
-`docker-compose.yml` file for editing:
-
-```sh
-mkdir baikal && cd baikal
-nano docker-compose.yml
-```
-
-Within this file, you'll need to paste the information below. You can
-customize the `ports` section to use any port on your server
-to pass through to port 80 in the container. You can also edit the
-`volumes` section to use docker volumes instead of local
-folders.
-
-```conf
-version: "2"
-services:
- baikal:
- image: ckulka/baikal:nginx
- restart: always
- ports:
- - "8567:80"
- volumes:
- - ./config:/var/www/baikal/config
- - ./data:/var/www/baikal/Specific
-```
-
-Once finished with editing, save and close the file. Then, launch the
-docker container:
-
-```sh
-sudo docker-compose up -d
-```
-
-## Intial Setup
-
-As long as no issues came up when starting the container, you should be
-able to visit the server's set-up page at
-`http://<server_ip>:<port>`. The application will ask you to
-create an administrator account and choose the database type for your
-storage. Personally, I opted to use SQLite.
-
-Make sure the administrator credentials are adequate to protect against
-common attacks.
-
-## Creating Users
-
-Once you've set up the application, you will be greeted by the
-Dashboard page, which will show the version of the app, status of the
-admin/CalDAV/CardDAV services, and the number of users, calendars,
-events, address books, and contacts.
-
-![Baikal
-Dashboard](https://img.cleberg.net/blog/20230608-baikal/baikal-dashboard.png)
-
-To create a new user, navigate to the `Users and resources`
-page. This process is as simple as entering a username, password, and
-email.
-
-Once a user has been created, you can create any number of calendars and
-address books for user, as well as inspect their information.
-
-## Setting Up a Public URL
-
-Once your application is working locally, you can open access remotely
-via a URL by using a reverse-proxy like Nginx.
-
-As a prerequisite, you must own a domain name and set up DNS records to
-point a domain name to the server hosting Baikal.
-
-Start by navigating to your web server's configuration directory and
-create a new file for this application.
-
-```sh
-cd /etc/nginx/sites-available/
-nano dav
-```
-
-Within this file, paste in the configuration from below and change
-`dav.example.com` to match the URL you'll be using.
-
-```conf
-server {
- if ($host ~ ^[^.]+\.example\.com$) {
- return 301 https://$host$request_uri;
- }
-
- listen [::]:80;
- listen 80;
- server_name dav.example.com;
- return 404;
-}
-
-server {
- listen [::]:443 ssl http2;
- listen 443 ssl http2;
- server_name dav.example.com;
- access_log /var/log/nginx/dav.access.log;
- error_log /var/log/nginx/dav.error.log;
-
- location / {
- proxy_http_version 1.1;
- proxy_pass http://localhost:8567;
- proxy_set_header Host $host;
- }
-
- ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
- ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
- include /etc/letsencrypt/options-ssl-nginx.conf;
- ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
-}
-```
-
-For Nginx on Ubuntu, you'll need to symlink the configuration file to
-the `sites-enabled` directory and then restart Nginx.
-
-```sh
-sudo ln -s /etc/nginx/sites-available/dav /etc/nginx/sites-enabled/dav
-sudo systemctl restart nginx.service
-```
-
-At this point, the Baikal server should be available over the internet
-at the URL configured above!
-
-## Configuring Clients
-
-Lastly, configuring clients and applications is essential to making sure
-the DAV server is being fully utilized.
-
-You can also use the `Users and resources` page to inspect a
-user's personal link to their calendars and address books by clicking
-the info (i) button. It will show a URI like
-`/dav.php/calendars/your-user/default/`.
-
-However, I found that the following URL works for most applications:
-`/dav.php/principals/your-user/`.
-
-I used the `principals` URL above for Thunderbird (calendar,
-tasks, and contacts), as well as iOS (calendar, tasks, and contacts) and
-everything works flawlessly so far.
-
-Syncing is quick between the server and clients, and I haven't seen any
-disruptions in the service or data integrity.