aboutsummaryrefslogtreecommitdiff
path: root/blog/2023-06-08-self-hosting-baikal-server.org
diff options
context:
space:
mode:
authorChristian Cleberg <hello@cleberg.net>2023-12-02 23:27:35 -0600
committerChristian Cleberg <hello@cleberg.net>2023-12-02 23:27:35 -0600
commit3d4da5ac6000a4871c5caa80d1e61f2782da3069 (patch)
tree29f36b50823d22f4c7df0a3db3ede83192ae649f /blog/2023-06-08-self-hosting-baikal-server.org
parentdcf0186e16b6ac8f0e00a3aeb9734421ce548177 (diff)
downloadcleberg.net-3d4da5ac6000a4871c5caa80d1e61f2782da3069.tar.gz
cleberg.net-3d4da5ac6000a4871c5caa80d1e61f2782da3069.tar.bz2
cleberg.net-3d4da5ac6000a4871c5caa80d1e61f2782da3069.zip
feat: finish converting md to org
Diffstat (limited to 'blog/2023-06-08-self-hosting-baikal-server.org')
-rw-r--r--blog/2023-06-08-self-hosting-baikal-server.org183
1 files changed, 96 insertions, 87 deletions
diff --git a/blog/2023-06-08-self-hosting-baikal-server.org b/blog/2023-06-08-self-hosting-baikal-server.org
index d35e5b3..14a616b 100644
--- a/blog/2023-06-08-self-hosting-baikal-server.org
+++ b/blog/2023-06-08-self-hosting-baikal-server.org
@@ -1,34 +1,34 @@
-+++
-date = 2023-06-08T21:48:00Z
-title = "Self-Hosting Baïkal Server (CalDAV & CardDAV)"
-description = "A quick guide on install Baïkal with docker-compose."
-+++
-
-## What is Baïkal?
-
-[Baïkal](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:
-
-```bash
+#+title: Self-Hosting Baïkal Server
+#+date: 2023-06-08
+
+** What is Baïkal?
+:PROPERTIES:
+:CUSTOM_ID: what-is-baïkal
+:END:
+[[https://sabre.io/baikal/][Baïkal]] 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
+:PROPERTIES:
+:CUSTOM_ID: installation
+:END:
+First, create a folder on your server and open a =docker-compose.yml=
+file for editing:
+
+#+begin_src sh
mkdir baikal && cd baikal
nano docker-compose.yml
-```
+#+end_src
-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.
+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
+#+begin_src conf
version: "2"
services:
baikal:
@@ -39,61 +39,68 @@ services:
volumes:
- ./config:/var/www/baikal/config
- ./data:/var/www/baikal/Specific
-```
+#+end_src
-Once finished with editing, save and close the file. Then, launch the docker
-container:
+Once finished with editing, save and close the file. Then, launch the
+docker container:
-```bash
+#+begin_src 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
+#+end_src
+
+** Intial Setup
+:PROPERTIES:
+:CUSTOM_ID: intial-setup
+:END:
+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.
+** Creating Users
+:PROPERTIES:
+:CUSTOM_ID: creating-users
+:END:
+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.
-![Baïkal Dashboard](https://img.cleberg.net/blog/20230608-baikal/baikal-dashboard.png "Baïkal Dashboard")
+#+caption: Baïkal 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.
+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.
+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
+** Setting Up a Public URL
+:PROPERTIES:
+:CUSTOM_ID: setting-up-a-public-url
+:END:
+Once your application is working locally, you can open access remotely
+via a URL by using a reverse-proxy like Nginx.
-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 Baïkal.
-As a prerequisite, you must own a domain name and set up DNS records
-to point a domain name to the server hosting Baïkal.
+Start by navigating to your web server's configuration directory and
+create a new file for this application.
-Start by navigating to your web server's configuration directory and create a
-new file for this application.
-
-```bash
+#+begin_src sh
cd /etc/nginx/sites-available/
nano dav
-```
+#+end_src
-Within this file, paste in the configuration from below and change
-`dav.example.com` to match the URL you'll be using.
+Within this file, paste in the configuration from below and change
+=dav.example.com= to match the URL you'll be using.
-```conf
+#+begin_src conf
server {
if ($host ~ ^[^.]+\.example\.com$) {
return 301 https://$host$request_uri;
@@ -123,35 +130,37 @@ server {
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
-```
+#+end_src
-For Nginx on Ubuntu, you'll need to symlink the configuration file to the
-`sites-enabled` directory and then restart Nginx.
+For Nginx on Ubuntu, you'll need to symlink the configuration file to
+the =sites-enabled= directory and then restart Nginx.
-```bash
+#+begin_src sh
sudo ln -s /etc/nginx/sites-available/dav /etc/nginx/sites-enabled/dav
sudo systemctl restart nginx.service
-```
-
-At this point, the Baïkal server should be available over the internet at the
-URL configured above!
+#+end_src
-## Configuring Clients
+At this point, the Baïkal server should be available over the internet
+at the URL configured above!
-Lastly, configuring clients and applications is essential to making sure the DAV
-server is being fully utilized.
+** Configuring Clients
+:PROPERTIES:
+:CUSTOM_ID: configuring-clients
+:END:
+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/`.
+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/`.
+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.
+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
+Syncing is quick between the server and clients, and I haven't seen any
disruptions in the service or data integrity.