Baikalは、CardDAVとCalDAVのファイルをオンラインで同期できるシンプルなカレンダーソフトです。Googleカレンダーとは異なり、異なるクライアントやデバイス間でカレンダーファイルをシームレスに同期することができます。また、マルチユーザーインスタンスに対応しているため、Googleカレンダーのように他の人とBaikalを使い、カレンダーイベントを共有することが可能です。例えば、友人や家族、同僚のために、個人的なBaikalサーバーをホストすることができます。

前提条件

Baikal をインストールする前に、以下のリソースを準備してください。

ホームネットワークの外からアクセスできるマシン:ポートが開放されているホームサーバか、現在借りている専用VPSのいずれかになります。

これらの要因を考慮し、このチュートリアルではDigitalOceanのDebian 11 VPSにBaikalをインストールすることのみに焦点を当てます。

Baikalの依存関係のインストール

プロセス中のミスやエラーがシステム全体に影響しないように、マシンに別のユーザーアカウントを作成することから始めてください。

sudo useradd -s /bin/bash -d /home/baikal -m -G sudo baikal
sudo passwd baikal









![](/uploads/install-baikal-linux-04-create-new-user.jpg)
これで、`su baikal`を実行して、この新しいユーザーに切り替わります。ここから、以下のコマンドを実行して、Baikalの依存関係をインストールすることができる。

sudo apt install php php7.4-fpm php7.4-xml php-sqlite3 sqlite3 nginx certbot python3-certbot-nginx iptables iptables-persistent ufw net-tools unzip



![](/uploads/install-baikal-linux-05-install-dependencies.jpg)
## サーバーのファイアウォールの設定


マシンのファイアウォールを設定することは、サーバーへの不要なリクエストを確実にブロックするために必要です。これを設定するために、以下のコマンドを実行します。

sudo ufw allow 80

sudo ufw allow 443


上記のコマンドは、外部接続のためにポート80と443を開き、マシンのすべてのネットワークポートを閉じます。



![](/uploads/install-baikal-linux-06-enable-server-firewall.jpg)
## Baikal 用 Nginx のセットアップ


Baikalでは様々なウェブサーバを利用することができますが、ここではNginxと一緒に設定することを中心に説明します。


まず、"/etc/nginx/sites-available" の下にサイト設定ファイルを作成します。

sudo nano/etc/nginx/sites-available/baikal



![](/uploads/install-baikal-linux-07-create-nginx-config.png)
そこから、この新しい設定ファイルの中に `server{}` ブロックを記述します。以下は、箱から出してすぐに動作する基本的な設定です。

server {

listen 80; server_name yetanotherbaikalserver.xyz;

root /var/www/baikal/html; index index.php;

rewrite ^/.well-known/caldav /dav.php リダイレクト。 rewrite ^/.well-known/carddav /dav.php redirect; リライトします。

charset utf-8。

location ~ /(.ht|Core|Specific|config) { {. 全て拒否する。 return 404; }

location ~ ^(.+.php)(.*)$ { try_files $fastcgi_scripts try_files $fastcgi_script_name =404; include /etc/nginx/fastcgi_params; fastcgi_split_path_info ^(.+.php)(.*)$; fastcgi_pass unix:/var/run/php/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_sample_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_INFO $fastcgi_path_info; } }


Nginxはホスト名 "yetanotherbaikalserver.xyz "のポート80で接続を待ち受けています。クライアントが接続すると、Webサーバはこの接続をBaikalのルートディレクトリにリダイレクトし、Nginxはすべての.phpファイルに対してUNIXソケットを開き、Webアプリケーションとして実行できるようにします。


## Baikal の入手と解凍


Baikalをダウンロードしてインストールするには、まずWebのルートディレクトリを作成し、そこに移動してください。

sudo mkdir -p /var/www/ && cd /var/www/


次に、`wget` を使って、Baikal の最新のバイナリリリースを取得します。

sudo wget rel="noopener" target="_blank"

https://github.com/sabre-io/Baikal/releases/download/0.9.2/baikal-0.9.2.zip



![](/uploads/install-baikal-linux-08-download-binary-archive.jpg)
ここから、以下のコマンドを使用してバイナリアーカイブを解凍し、Webアプリケーションをインストールします。

sudo unzip ./baikal-0.9.2.zip



![](/uploads/install-baikal-linux-09-unzip-binary-archive.jpg)
最後に、"baikal "フォルダで `chown` を実行して、Nginx が Baikal のルートディレクトリに対して読み書きできることを確認します。

sudo chown -R www-data:www-data ./baikal


## Nginxの再起動とSSLのインストール


これで、"/etc/nginx/sites-enabled" へのシンボリックリンクを作成することで、Nginx の設定ファイルを有効にすることができます。その後、新しい設定を適用するために Nginx を再読み込みする必要もあります。以下のコマンドを実行して、これら2つのアクションを実行します。

sudo ln -s /etc/nginx/sites-available/baikal /etc/nginx/sites-enabled

sudo systemctl restart nginx



![](/uploads/install-baikal-linux-10-restart-nginx.jpg)
次に、Let's Encrypt を使用するか、OpenSSL を使用して手動でインストールすることにより、サーバーの SSL を有効にします。今回は、Let's Encryptのcertbotユーティリティを使用します。


Let's Encryptの証明書をインストールするには、以下のコマンドを実行します。

certbot –nginx yetanotherbaikalserver.xyz


## Baikal セットアップの最終確認


セットアップをまとめるために、ウェブブラウザを開き、ドメイン名からウェブサイトにアクセスします。私の場合、"yetanotherbaikalserver.xyz "にアクセスします。


そこに行くと、Baikalはその管理インストールページにリダイレクトし、あなたのインスタンスに設定する必要がある多くのサーバー固有のオプションを尋ねてきます。


まず始めに、マシンのタイムゾーンを入力します。VPSを使用している場合は、そのVPSのタイムゾーンを入力してください。



![](/uploads/install-baikal-linux-11-default-settings.png)
私のVPSはシンガポールにあるので、"Asia/Singapore "を選択しています。



![](/uploads/install-baikal-linux-12-set-timezone.png)
次に、インスタンスに必要な機能を選択します。サーバーのカレンダーとアドレス帳のサポートを有効にしたい場合は、CalDAVとCardDAVの両方にチェックを入れます。



この後、[](/uploads/install-baikal-linux-13-install-new-features.png)をクリックしてください。
また、インスタンスの電子メールアドレスを提供するオプションもあります。これを動作させるには、お使いのサーバーがTLS上でSMTPメッセージを送信できる必要があります。メール送信を無効にするため、ここは空白にしています。



![](/uploads/install-baikal-linux-14-remove-email-address.png)
次に、インスタンスの認証形式を選択します。ほとんどの場合、ダイジェスト形式がそのまま使えるはずです。また、管理者アカウントのパスワードを入力する必要があります。その後、"Save changes "を押してください。



![](/uploads/install-baikal-linux-15-authentication-method.png)
最後に、Baikalはあなたのインスタンスのデータベース設定を聞いてきます。ほとんどの場合、このページで設定を変更する必要はありません。もう一度「変更を保存」を押して、インストールを終了します。



![](/uploads/install-baikal-linux-16-default-database-settings.png)
## 最初のBaikalユーザーを追加する


Baikalが起動したら、管理者パネルに戻って、"Users and resources "を選択して、最初のユーザーを作成できます。



![](/uploads/install-baikal-linux-17-select-users-tab.png)
次の画面で、"Add user "を選択すると、簡単な作成ページが表示され、新しいユーザーの詳細を入力することができます。例えば、自分用の新しいユーザーを作成することができます。



![](/uploads/install-baikal-linux-18-new-user-details.png)
## Thunderbird と Baikal の連携


Baikalのユーザーアカウントができたので、ThunderbirdなどCalDAVやCardDAVをサポートするスケジュール管理プログラムと連携させます。


Thunderbirdでバイカルを使うには、メールクライアントのホーム画面で「カレンダー」オプションをクリックします。



![](/uploads/install-baikal-linux-19-select-calendar-thunderbird.png)
小さなウィンドウが表示され、クライアントがカレンダーファイルの場所を尋ねます。ネットワーク上」を選択し、「次へ」をクリックして次に進みます。



![](/uploads/install-baikal-linux-20-link-calendar-to-network.png)
Thunderbirdがバイカルアカウントのユーザー名とURLを聞いてくるので、それらを入力して "Find Calendars "を押します。URLは、サーバーのアドレスの後に"/dav.php "を入力します。



![](/uploads/install-baikal-linux-21-server-details-thunderbird.png)
クライアントがあなたのバイカルアカウントのカレンダーファイルをすべて取得すると、それらのリストが表示され、"Calendar Type "を尋ねられます。CalDAV "を選択し、"Subscribe "をクリックします。



![](/uploads/install-baikal-linux-22-set-calendar-type.png)
これでBaikalサーバーは使用可能です。


## よくある質問



### Nginxが "failed to bind "とSystemctlで表示されます。

 

いいえ!"failed to bind "エラーは、プログラムが特定のネットワークポートの制御に失敗したときに発生します。この例では、Nginxがポート80または443で、あなたのマシンの既存のサービスと競合しています。このコマンドを実行することで、どのプログラムがこのリソースを占有しているかを特定することができます。netstat -tulpn | grep -e :80 -e :443`.


どのプログラムがエラーの原因になっているかがわかったら、`apt remove` か `systemctl disable` を実行してそのプログラムを停止してください。


例えば、Apache は Nginx と同じポートを取る一般的なプログラムです。Debianでは、以下のコマンドを実行してこれを無効にすることができます。sudo systemctl disable apache2`.






### 私のウェブサーバは Baikal をセットアップした後も Debian の歓迎ページを表示したままです。どうすれば直せますか?

 

この問題は、Nginx の設定ファイルが競合していることが原因である可能性が高いです。デフォルトでは、Debian は "/etc/nginx/sites-enabled" に設定ファイルを含む基本的な Nginx のセットアップを提供します。このコマンドを実行して、その特定のファイルを削除する必要があります。sudo rm /etc/nginx/sites-enabled/default`を実行してください。






### カレンダーを同期させることができません。

 

いいえ。"DOM Error "は、BaikalサーバーのPHPバックエンドにXMLモジュールが欠けていることを示しています。これを解決するには、PHP を再インストールするか、XML モジュールを手動でインストールします。例えば、Debianでは以下のコマンドを実行することで、足りないモジュールをインストールできます: `sudo apt install php7.4-xml`.





画像引用:Unsplash と Sabre 全ての改変とスクリーンショットは Ramces Red によるものです。

Akira
Akiraは情熱的なゲーマーであり、製品レビュアーです。ゲームをしていないときは、最新のゲーミングアクセサリーを試したり、製品のレビューをしていることが多い。彼の分かりやすいスタイルは、ゲーマーが自分のニーズに最も適した製品を簡単に判断できるようにするものです。また、技術的な問題にも精通しており、その解決方法も知っている。