> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sync.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# サーバーの設定

export const companyNameLower = "cdata";

export const companyName = "CData";

export const siteNameShortLower = "sync";

export const siteNameShort = "Sync";

export const siteName = "CData Sync";

<Note>このページには、{siteNameShort} セルフホスト環境にのみ適用されるコンテンツが含まれています。</Note>

{siteName} には組み込みEclipse Jetty Web サーバーが含まれ、外部サーバー構成なしで{siteNameShort} を実行できます。組み込みJetty サーバーの使用には、Java Development Kit（JDK）17 またはそれ以上のバージョンがマシンにインストールされている必要があります。

## Windows

Windows の場合、{siteName} はサービスとしてデフォルトでインストールされます。アプリケーションにアクセスするには、まず、サービスが起動していることを確認する必要があります。サービスが起動したら、Web ブラウザを開いてURL に[http://localhost:8181/](http://localhost:8181/) を入力すると、{siteName} 管理コンソールにアクセスできます。

また、サービスを使用せずに`java` コマンドを介してアプリケーションを実行することもできます。{companyName} はサービスの利用を推奨していますが、特定の構成ではこちらの方法が有効です。

### サービスの起動と停止

サービスの開始と停止は、次のいずれかの方法で行います。

* [スタートメニューのショートカット](#スタートメニューのショートカット)（推奨）
* [サービス管理コンソール](#サービス管理コンソール)
* [コマンドプロンプト](#コマンドプロンプト)コマンド

#### スタートメニューのショートカット

{siteName} インストーラーは、アプリケーションを簡単に使用できるスタートメニューのショートカットを作成します。以下のショートカットが利用可能です。

* **Start {siteName}**：{siteName} サービスを開始します。デフォルトでは、このサービスはWindows 起動時に実行されます。そのため、アプリケーションを実行するたびにこのコマンドを実行する必要はありません。
* **Stop {siteName}**：{siteName} サービスを停止します。このアクションは、[{siteNameShort} のアップグレード](../software-upgrades)時に必要です。

#### サービス管理コンソール

サービス管理コンソールを開くには、スタートメニューを開き*サービス*と入力します。表示された**サービス**アプリケーションを選択します。

**{siteName}** というサービスが表示されるまでスクロールダウンします。サービスが起動している場合は、**状態**カラムに**実行中**と表示されます。サービスを右クリックすると、**開始**、**停止**、および**再起動**のオプションを利用できます。

#### コマンドプロンプト

高度なユーザーは、Windows のコマンドプロンプトを使用して、サービスに対して手動でコマンドを発行することができます。コマンドプロンプトを開き、ディレクトリをインストールフォルダに変更します（デフォルトは`C:\Program Files\CData\CData Sync` です）。

<Note>Microsoft PowerShell ウィンドウを使用してこれらのコマンドを発行することもできますが、構文が若干異なります。PowerShell を使用する際は、コマンドを適宜修正してください。</Note>

{siteName} サービスを開始するには、次のコマンドを実行します。

```sh theme={null}
sync.exe -start
```

以下のコマンドで、サービスを再起動または停止できます。

```sh theme={null}
sync.exe --restart --ServiceName "CData Sync"
sync.exe --stop --ServiceName "CData Sync"
```

### サービスを使わずに起動

サービスを開始せずに{siteName} を実行するには、インストールフォルダでコマンドプロンプトを開きます。アプリケーションを開始するには、次のコマンドを実行します。

```sh theme={null}
java -jar sync.jar
```

## Linux

[任意の場所に{siteName} をインストール](./installation-configuration#linux)したら、{siteName} をサービスとして実行するか、アプリケーションを手動で実行することができます。{companyName} は、重要なアプリケーションに{siteNameShort} を使用する場合は、サービスの使用をお勧めします。

### {siteNameShort} をサービスとして実行

{siteName} をサービスとして実行すると、アプリケーションをユーザープロセスから独立して実行し、再起動時に自動的に再起動することができます。

{siteNameShort} のLinux インストールがサービスとして期待どおりに機能するよう、以下の手順を実行してください：

1. {siteNameShort} をインストールする際は、インストールを実行するユーザーがインストールディレクトリに対する読み取りおよび書き込み権限を持っていることを確認してください。root ユーザーであれば問題ありません。
2. **service.sh** スクリプトを実行します。このスクリプトは、展開したセットアップアーカイブのルートに配置されています。例えば、アーカイブを `/opt/sync` に展開した場合、スクリプトは `/opt/sync/service.sh` に配置されています。
3. **service.sh** を実行した後、お使いのLinux ディストリビューションで使用されているサービスマネージャーに従って、サービスを有効化して起動します：
   1. 次のコマンドを実行してサービスを有効化します：

      `systemctl enable cdatasync`

   2. サービスマネージャーを有効化します：

      **init.d** の場合は、次のコマンドを実行します：

      `sudo service cdatasync start`

      **systemd** の場合は、次のコマンドを実行します：

      `sudo systemctl start cdatasync`

<Note>{siteNameShort} のデプロイ方法にかかわらず、*`ApplicationDirectory`* 内のファイルおよびフォルダは、アプリケーションを実行するユーザーが読み取りおよび書き込みできる必要があります。Java エディションのセットアップに含まれるサービスインストーラーは、このユーザーとして **cdatasync** を使用します。</Note>

アプリケーションが以前に別のユーザーアカウントで実行されていて、**cdatasync** ユーザーがアプリケーションを実行するために必要な権限を復元する必要がある場合は、次のコマンドを実行してください（必要に応じてディレクトリパスを変更してください）：

`sudo chown -R cdatasync:cdatasync /opt/sync`

### スタンドアロンアプリケーションの実行

サービスを作成せずに{siteName} を開始するには、ターミナルでインストールディレクトリのsync.jar ファイルを開き、次のように設定ファイルを引数として指定します。

```sh theme={null}
java -jar sync.jar
```

## 組み込みJetty サーバーの構成

{siteName} は、あらゆる環境ですぐに動作するようあらかじめ設定されています。ただし、{siteName} インストールディレクトリにsync.properties ファイルを生成することで、{siteNameShort} で公開されているデータへのアクセス方法をカスタマイズできます（Windows の場合、インストールディレクトリのデフォルトは`C:\Program Files\CData\CData Sync` です）。

### sync.properties ファイルの生成

組み込みJetty サーバーをカスタマイズする前に、sync.properties ファイルを作成する必要があります。これを行うには、{siteNameShortLower}.jar ファイルがあるインストールディレクトリ（*`InstallationDirectory`*）で以下のコマンドを実行します。

```
java -jar sync.jar -GenerateProperties
```

<Note>sync.properties ファイルを生成すると、{siteNameShort} をアップグレードしてもこのファイルは上書きされません。</Note>

sync.properties ファイルには、次のセクションで説明するように、ポートを変更したりTLS / SSL を有効にするために変更できるパラメータが含まれています。

<Note>sync.properties ファイルに機密性の高い値を平文ではなく暗号化された形式で保存できます。詳細については、[機密設定値の暗号化](#機密設定値の暗号化)を参照してください。</Note>

### ポートの変更

組み込みサーバーがリッスンするポートを設定するには、

1. *`InstallationDirectory`* にあるsync.properties ファイルを見つけ、テキストエディタで開きます。

2. ポートが設定されている次の行を探します。

   `cdata.http.port=8181`

3. この値を、希望するポート番号に変更します。

### 非アクティブ時タイムアウトの変更

デフォルトでは、{siteNameShort} の非アクティブ（セッション）タイムアウトは10分（600秒）です。

タイムアウト値を変更するには、以下のようにsync.properties ファイルの`cdata.session.timeout` プロパティを設定します。

`cdata.session.timeout=1200`

### SSL / TLS の有効化

SSL / TLS 接続（HTTPS）を有効化する場合にも、以下のように、*`InstallationDirectory`* のsync.properties ファイルを修正します。

1. `cdata.tls.keyStoreType` 設定を、使用するキーストアのタイプに設定します。有効な値には、**jks**、**pkcs12**、および**jceks** が含まれます。
2. `cdata.tls.keyStorePath` 設定を、使用するキーストアのパスに設定します。*\${'{'}cdata.home{'}'}* は、*`InstallationDirectory`* を参照するために使用される場合があることに注意してください。
3. `cdata.tls.keyStorePassword` 設定を、キーストアのパスワードに設定します。セキュリティを強化するために、この値をsync.properties に暗号化された形式で保存できます。
4. `cdata.tls.port` 設定を、サーバーをホストするために使用するポートに設定します。
5. （オプション）`cdata.http.port` 設定を、プレーンテキスト接続を無効にするために空の文字列に設定します。

最終的にはこの例のようになります：

```
;; HTTP
cdata.http.port=

;; TLS
cdata.tls.port=8443
cdata.tls.keyStoreType=PKCS12
cdata.tls.keyStorePath=${cdata.home}/mycertificate.pfx
cdata.tls.keyStorePassword=MyPassword
```

<Note><span>{siteNameShort} で設定するために外部秘密鍵を取得する場合は、必ず証明書の所有者を{siteNameShort} をホストするために使用されるサービスアカウント（<code style={{padding: "0"}}>cdata{siteNameShortLower}:cdata{siteNameShortLower}</code>）に変更してください。</span></Note>

### LDAP 認証の有効化

{siteNameShort} はLDAP 認証の使用をサポートしています。LDAP 認証を有効にするには、LDAP ユーザーと一致するユーザーが{siteNameShort} で定義されている必要があります。{siteNameShort} でユーザーを作成する方法については、[ユーザーを追加](../administration/settings-page/user-management/user-management#ユーザーを追加)を参照してください。

LDAP 認証を有効化する場合は、以下のように、*`InstallationDirectory`* のsync.properties ファイルを修正します。

1. `ldap.hostname` をLDAP サーバーのドメイン名またはIP アドレスに設定します。
2. `ldap.port` をLDAP サーバーが実行されているポートに設定します。
3. `ldap.authenticatedMethod` をLDAP サーバーに接続するときに使用する認証メカニズムに設定します。オプションは**none** および**simple** です。
4. `ldap.bindDn` と`ldap.bindPassword` を、LDAP サーバーを認証するユーザーの識別名とパスワードに設定します。セキュリティを強化するために、パスワードの値をsync.properties に暗号化された形式で保存できます。
5. `ldap.debug` には、サーバーログにデバッグ情報を追加するかどうかについて設定します。オプションは**true** または**false** です。
6. `ldap.user*` には、ユーザーエントリを検索するために使用するプロパティを設定します。
7. `ldap.role*` には、ロールエントリを検索するために使用するプロパティを設定します。

最終的にはこの例のようになります：

```
;; LDAP 
cdata.loginService.ldap.enabled=true 
cdata.loginService.ldap.hostname="Server" 
cdata.loginService.ldap.bindDn="CN=CommonName,CN=CommonUsers,DC=ka,DC=com" 
cdata.loginService.ldap.bindPassword="Password" 
cdata.loginService.ldap.debug=true 
cdata.loginService.ldap.port="Port" 
cdata.loginService.ldap.authenticationMethod="AuthMechanism" 
cdata.loginService.ldap.userBaseDn="DC=DomainComponent,DC=DomainComponent" 
cdata.loginService.ldap.userObjectClass="organizationalPerson" 
cdata.loginService.ldap.userRdnAttribute="cn" 
cdata.loginService.ldap.userIdAttribute="sAMAccountName" 
cdata.loginService.ldap.userPasswordAttribute="userPassword" 
cdata.loginService.ldap.forceBindingLogin="true" 
cdata.loginService.ldap.roleBaseDn="DC=ka,DC=com" 
cdata.loginService.ldap.roleNameAttribute="cn" 
cdata.loginService.ldap.roleMemberAttribute="member" 
cdata.loginService.ldap.roleObjectClass="group" 
cdata.loginService.ldap.useLdaps="false"
```

## アプリケーションディレクトリの設定

{siteNameShort} *`ApplicationDirectory`* フォルダには、アプリケーションで使用されるすべてのデータ（設定データ、アプリケーションデータ、ログデータ、証明書など）が格納されます。*`ApplicationDirectory`* のデフォルトの場所は、{siteNameShort} が組み込みWeb サーバー経由でホストされているか、外部のJava サーブレットコンテナ経由でホストされているかによって異なります。

組み込みWeb サーバーの場合、*`ApplicationDirectory`* は *`InstallationDirectory`* と同じです。デフォルトの場所は次のとおりです。

```bash theme={null}
/opt/sync
```

{siteNameShort} が外部のJava サーブレットコンテナにホストされている場合、*`ApplicationDirectory`* はサーバーを実行しているユーザーのホームディレクトリからの相対パスです。

`~/sync`

このパスでは、'\~' はアプリケーションをホストするサーバーを実行しているユーザーのホームディレクトリに解決します。

*`ApplicationDirectory`* フォルダを構成でき、これはさまざまなシナリオで役立ちます。

* {siteNameShort} の複数インスタンスのクラスタリング
* アプリケーションデータ用の共有ネットワークドライブの使用
* 同じフォルダにアクセスする他のシステム内への{siteNameShort} の組み込み

*`ApplicationDirectory`* を変更すると、アプリケーションのデータファイルが移動します。ただし、EXE ファイルやJAR ファイルなどの他のアプリケーションリソースは移動しません。これらのリソースは *`InstallationDirectory`* フォルダに格納されます。このフォルダは *`ApplicationDirectory`* と同じ場合がありますが、*`ApplicationDirectory`* を変更しても、これらのリソースの場所は変わりません。

{siteNameShort} を組み込みJetty サーバーで使用する場合、*`ApplicationDirectory`* は *`InstallationDirectory`* にあるsync.properties ファイルに設定されます。このサーバー設定ファイル内で、`cdata.app.directory` の設定に希望するディレクトリのパスを設定する必要があります。次の例は、マウントされたドライブ上の共有フォルダにデータディレクトリを設定した場合を示しています。

```bash theme={null}
cdata.app.directory=/mnt/shared/sync
```

{siteNameShort} が`cdata.app.directory` のパスを見つけることができ、そのパスで読み取りと書き込みができる適切なアクセス許可を持つ場合、指定したディレクトリ内にデータフォルダを作成します。

## アプリケーションデータベースの設定

バージョン26.2 以降、{siteNameShort} はデフォルトのアプリケーションデータベースとして *`ApplicationDirectory`* にある組み込みH2 データベースを使用します。

既存のインストールでは、引き続きレガシーの組み込みDerby データベースを使用します。{siteNameShort} は既存のインストールをH2 に自動的に移行しません。

{siteNameShort} のアプリケーションデータベースは、以下のようなアプリケーションデータの複数のテーブルを保存します。

* ジョブ
* タスク
* 接続
* 履歴（ジョブとタスク両方）
* アプリケーションログ（アプリケーションレベルのエラーとイベント）
* 監査ログ（ユーザーによる{siteNameShort} の設定変更）

組み込みデータベースを使用する場合、アプリケーションデータベースは *`ApplicationDirectory`* に存在します。

また、Microsoft SQL Server、PostgreSQL、MySQL などのエンタープライズデータベースを使用するよう{siteNameShort} を設定することもできます。外部データベースを設定する別の方法もありますが（例えば、[AWS-AMI 版](./aws-ami-edition#アプリケーションデータベース)で説明されているように）、推奨されるアプローチは[移行ドキュメント](../administration/settings-page/migration)の手順に従うことです。

### 組み込みJava サーバー

{siteNameShort} を組み込みJetty サーバーで使用する場合、アプリケーションデータベースは *`InstallationDirectory`* にあるsync.properties ファイルに設定されます。このサーバー設定ファイル内で、`cdata.app.db` の設定に、希望するデータベースの適切な接続パラメータを含むJava Database Connectivity (JDBC) 接続文字列を設定する必要があります。次の例は、この設定をMySQL、PostgreSQL、およびSQL データベースについて示しています。

**MySQL**

```
cdata.app.db=jdbc:cdata:mysql:server=localhost;port=3306;database=mysql;user=MyUserName;password=MyPassword
```

**PostgreSQL**

```
cdata.app.db=jdbc:cdata:postgresql:server=localhost;port=5432;database=postgresql;user=MyUserName;password=MyPassword
```

**SQL Server**

```
cdata.app.db=jdbc:cdata:sql:server=localhost;database=sqlserver;user=MyUserName;password=MyPassword
```

{siteNameShort} が`cdata.app.db` 接続文字列で正常に接続を確立できる場合、そのデータベースをアプリケーションデータベースとして使用します。

## 機密設定値の暗号化

{siteName} は、sync.properties ファイルに機密性の高い設定値を暗号化された形式で保存することをサポートしています。機密設定値を暗号化することで、通常の設定動作を維持しながら、sync.properties 内の認証情報を保護できます。

組み込みWeb サーバーは、設定を読み取る際に暗号化された値を自動的に復号化します。平文の値を暗号化された同等の値に置き換えた後、追加の手順は必要ありません。

以下の設定プロパティに暗号化された値を使用できます。

* アプリケーションデータベース接続：`cdata.app.db`
* TLS キーストアパスワード：`cdata.tls.keyStorePassword`
* LDAP ログインサービスの設定：`cdata.loginService.ldap.*`

これらのプロパティはそれぞれ、平文の値または暗号化された値を受け入れます。暗号化された値が指定された場合、{siteNameShort} は実行時に{siteNameShort} が値を使用する前に復号化します。

`-EncryptConnectionString` パラメーターを使用して、コマンドラインから暗号化された値を生成できます。このパラメーターは、接続文字列だけでなく任意の文字列を受け入れます。

**例：**

```sh theme={null}
java -jar sync.jar -EncryptConnectionString "YourSensitiveValue"
```

この例では、暗号化された値をコンソールに出力します。出力の最後の行に暗号化された文字列が含まれます。

**出力：**

```
Encrypting value...
Encryption successful.
SECURE:AbCdEfGhIjKlMnOpQrStUvWxYz1234567890==
```

暗号化された値をコピーして、sync.properties ファイル内の対応する平文の値と置き換えます。

{siteNameShort} が{siteNameShortLower}.properties から設定値を読み取る際、`SECURE:` または `ENCRYPTEDA:` プレフィックスを確認します。プレフィックスが存在する場合、{siteNameShort} は内部で値が使用される前に復号化します。

暗号化された値は、設定の処理およびシリアライズ中も保持されます。この動作により、設定データが書き込まれ再読み込みされる際も、機密性の高い設定が暗号化されたままになります。

## ログインのロックアウト

{siteNameShort} は、ブルートフォースアタックを防ぐために、不正なパスワードを何度も入力するユーザーを自動的にロックアウトします。デフォルトでは、5分以内に6回不正なパスワードを入力したユーザーは30分間ロックアウトされます。

Web サーバーの動作を規定するXML 設定ファイルを編集することで、ロックアウトの設定を変更できます。この3つの設定はロックアウトに関係します。

* LockoutFailedAttempts - ロックアウトのトリガーとなる不正なパスワードの数。ロックアウトを無効にするには、LockoutFailedAttempts を0に設定します。
* LockoutMinutes - ロックアウトする時間。デフォルトは30分です。
* LockoutTimeCheckPeriod - 失敗した試行回数を0にリセットするまでの時間。デフォルトは5分です。

組み込みJetty サーバーの場合、sync.properties ファイル内のロックアウト設定を変更するには、以下のように、*name:value* ペアのカンマ区切りのリストを`initParameters` に追加します。

```bash theme={null}
cdata.initParameters=LockoutFailedAttempts:0
```

## 一般的な課題と解決方法

このセクションでは、Java 環境に{siteNameShort} をデプロイする際に遭遇する可能性がある一般的な課題をリストアップします。それぞれの課題について推奨ソリューションを記載します。その他のヘルプについては、{companyName} テクニカルサポート：\*\* [support@cdata.co.jp](mailto:support@cdata.co.jp)\*\* にお問い合わせください。

**課題**

**{siteNameShort} が起動しない、または期待されるものとは異なるAppDirectory を使用して起動する**

このエラーは、{siteNameShort} が *`ApplicationDirectory`* にアクセスするために必要な権限を持っていない可能性があります（*`ApplicationDirectory`* は、ジョブ、接続、変換などの設定に関する重要な情報を保存するフォルダです）。このエラーの原因として考えられるのは、サービスをセットアップする前にローカルユーザーとして{siteNameShort} を実行している場合です。この場合、アプリケーションで作成される特定のリソースが、ローカルユーザーの下に作成されている可能性があります。結果として、{siteNameShort} をサービスとして実行する場合にこれらのリソースを利用できません。

**推奨ソリューション**

Linux オペレーティング環境で、サービスアカウント（または{siteNameShort} を実行させるための他のアカウント）が *`ApplicationDirectory`* にアクセスできることを確認する最も簡単な方法は、`chown` コマンドを使用することです。例えば、*`ApplicationDirectory`* がLinux のデフォルトの場所にあって{siteNameShort} がサービスアカウントで実行されるべき場合、以下のコマンドでエラーが解決されるはずです。

```bash theme={null}
sudo chown -R cdatasync:cdatasync /opt/sync
```
