「Ente サーバー」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (翻訳) |
Kusanaginoturugi (トーク | 投稿記録) (→参照: update TranslationStatus.) |
||
(同じ利用者による、間の14版が非表示) | |||
1行目: | 1行目: | ||
[[Category:ファイル共有]] |
[[Category:ファイル共有]] |
||
+ | [[en:Ente server]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|AppArmor}} |
{{Related|AppArmor}} |
||
9行目: | 10行目: | ||
[https://ente.io Ente サーバー] は、Ente (モバイル) クライアントに暗号化されたデータの塊を保存・提供するサーバー部分です。クライアントは暗号化されたデータを送受信し、それが Ente サーバーに届き、ローカルの [[MinIO]] オブジェクト ストレージ サービスを通じて保存・読み取りが行われます。 |
[https://ente.io Ente サーバー] は、Ente (モバイル) クライアントに暗号化されたデータの塊を保存・提供するサーバー部分です。クライアントは暗号化されたデータを送受信し、それが Ente サーバーに届き、ローカルの [[MinIO]] オブジェクト ストレージ サービスを通じて保存・読み取りが行われます。 |
||
− | 例えば、'''Ente''' フォト |
+ | 例えば、'''Ente''' フォトクライアントを使用すると、クライアントは写真を暗号化し、それらはサーバーに保存されます。後に、クライアントは暗号化された写真を検索し、ローカルで復号できます ('''エンドツーエンド暗号化''')。クライアント、もしくはクライアントが写真を共有した相手のみが暗号鍵を持っているため、データを復号して実際に写真を見ることができるのはその人たちだけであり、サーバーはその鍵の情報を持っていないため見ることができません。 |
== インストール == |
== インストール == |
||
17行目: | 18行目: | ||
まず、{{AUR|ente-server-git}} パッケージを[[インストール]]してください。 |
まず、{{AUR|ente-server-git}} パッケージを[[インストール]]してください。 |
||
− | セルフホスト |
+ | セルフホストされるサーバースペースは、しばしば限られた容量しか利用できないため、{{AUR|ente-server-git}} パッケージでは、古いリンク切れした ente-server [[MinIO]] オブジェクトが実際に削除される前のクリーンアップ遅延を変更できる機能が追加されています。これは、''ente-server'' の設定パラメータ {{ic|internal:delete-object-delay}} で構成することができます。デフォルトの Ente サーバーは、これらのオブジェクトをデフォルトで {{ic|45日}} ごとにクリーンアップしますが、レプリケーションが必要ない場合、この設定を例えば {{ic|5分}} ごとにクリーンアップするように設定することができます。 |
+ | |||
+ | {{Note|この設定は、''ente-server'' が破損するリスクがあるため、'''Ente''' の開発者によってサポートされていません。完全な警告は、''ente-server'' の設定ファイルに記載されています。}} |
||
'''Ente''' サーバーを稼働させるには、[[PostgreSQL]] データベース (Ente オブジェクトのメタデータやユーザーデータの保存用) と [[MinIO]] バケット (暗号化されたオブジェクトデータの保存用) が必要です。また、'''Ente''' サーバーにアクセスするための HTTPS プロキシとして [[Nginx]] の使用が推奨されます。最後に、''ente-cli'' ツールを使うと、Ente サーバーのアカウントの容量制限や有効期限の更新が簡単に行えます。 |
'''Ente''' サーバーを稼働させるには、[[PostgreSQL]] データベース (Ente オブジェクトのメタデータやユーザーデータの保存用) と [[MinIO]] バケット (暗号化されたオブジェクトデータの保存用) が必要です。また、'''Ente''' サーバーにアクセスするための HTTPS プロキシとして [[Nginx]] の使用が推奨されます。最後に、''ente-cli'' ツールを使うと、Ente サーバーのアカウントの容量制限や有効期限の更新が簡単に行えます。 |
||
− | これらの必要なコンポーネント |
+ | これらの必要なコンポーネントは、オプションの依存関係としてリストされており、依存関係としてインストールすることが推奨されます: [[Pacman#Installation_reason]] |
− | |||
− | 参考までに、以下の[[package|パッケージ]]がオプションの依存関係としてリストされています。 |
||
− | |||
− | * {{ic|minio}} |
||
− | * {{ic|minio-client}} |
||
− | * {{ic|nginx}} |
||
− | * {{ic|postgresql}} |
||
== 設定 == |
== 設定 == |
||
40行目: | 36行目: | ||
MINIO_ROOT_USER=minio |
MINIO_ROOT_USER=minio |
||
MINIO_ROOT_PASSWORD='<nowiki/>''YOUR-STRONG-MINIO-ROOT-PASSWORD''<nowiki/>' |
MINIO_ROOT_PASSWORD='<nowiki/>''YOUR-STRONG-MINIO-ROOT-PASSWORD''<nowiki/>' |
||
− | MINIO_OPTS="--address |
+ | MINIO_OPTS="--address 127.0.0.1:43200 --console-address 127.0.0.1:43201" |
}} |
}} |
||
54行目: | 50行目: | ||
postgres ユーザーとしてデータベースを初期化します: |
postgres ユーザーとしてデータベースを初期化します: |
||
− | [postgres]$ initdb --locale en_US.UTF-8 -D '/var/lib/postgres/data' --data-checksums --auth=scram-sha-256 --pwprompt |
+ | [postgres]$ initdb --locale en_US.UTF-8 -D '/var/lib/postgres/data' --data-checksums --auth=scram-sha-256 --pwprompt -c listen_addresses=<nowiki>''</nowiki> |
[https://man.archlinux.org/man/unix.7.en AF_UNIX] ソケットのみに接続するように設定してください: |
[https://man.archlinux.org/man/unix.7.en AF_UNIX] ソケットのみに接続するように設定してください: |
||
62行目: | 58行目: | ||
}} |
}} |
||
+ | 既存の PostgreSQL セットアップがある場合は、[[PostgreSQL#PostgreSQL を UNIX ソケット経由でのみアクセス可能に設定する]]を参照してください: |
||
− | {{ic|postgresql.service}} を[[編集]]して、[[PostgreSQL]] ユーザーまたはグループにソケットアクセスを制限します: |
||
{{hc|/etc/systemd/system/postgresql.d/socket-access-restriction.conf|2= |
{{hc|/etc/systemd/system/postgresql.d/socket-access-restriction.conf|2= |
||
87行目: | 83行目: | ||
key: minio |
key: minio |
||
secret: "''YOUR-STRONG-MINIO-ROOT-PASSWORD''" |
secret: "''YOUR-STRONG-MINIO-ROOT-PASSWORD''" |
||
− | endpoint: ''your_public_domain.tld'':3200 |
+ | endpoint: https://''<nowiki>your_public_domain.tld</nowiki>'':3200 |
region: eu-central-2 |
region: eu-central-2 |
||
bucket: ente-server |
bucket: ente-server |
||
116行目: | 112行目: | ||
=== Nginx プロキシの設定 === |
=== Nginx プロキシの設定 === |
||
− | サ |
+ | 例として提供されている [[MinIO]] と '''Ente''' サーバーの [[Nginx]] 設定ファイル、および付随する HTTP(S) セキュリティヘッダー設定ファイルを [[Nginx]] 設定ディレクトリにコピーします: |
# cp -v /usr/lib/ente-server/ente-server-nginx.conf /etc/nginx/ |
# cp -v /usr/lib/ente-server/ente-server-nginx.conf /etc/nginx/ |
||
# cp -v /usr/lib/ente-server/http*security_headers.conf /etc/nginx/ |
# cp -v /usr/lib/ente-server/http*security_headers.conf /etc/nginx/ |
||
+ | # cp -v /usr/lib/ente-server/minio-server-nginx.conf /etc/nginx/ |
||
このサンプル設定ファイルを編集し、''your_public_domain.tld'' を実際のパブリックドメイン名に置き換えてください。 |
このサンプル設定ファイルを編集し、''your_public_domain.tld'' を実際のパブリックドメイン名に置き換えてください。 |
||
144行目: | 141行目: | ||
=== ente-server と ente-cli の設定 === |
=== ente-server と ente-cli の設定 === |
||
− | + | クライアントに {{ic|ente-cli}} をインストールするには、{{AUR|ente-cli-bin}} パッケージを使用します。 |
|
+ | |||
− | ** {{AUR|ente-cli-bin}} パッケージを[[インストール]] |
||
− | + | クライアントに {{ic|ente-cli}} の設定を追加します: |
|
{{bc|$ mkdir -p ~/.ente/export }} |
{{bc|$ mkdir -p ~/.ente/export }} |
||
{{hc|~/.ente/config.yaml| |
{{hc|~/.ente/config.yaml| |
||
endpoint: |
endpoint: |
||
− | api: "''<nowiki>https://your_public_domain.tld</nowiki>''" |
+ | api: "''<nowiki>https://your_public_domain.tld</nowiki>''" > |
}} |
}} |
||
+ | |||
− | * 写真モバイルアプリまたは Web アプリでカスタムエンドポイントを使用してユーザーアカウントを追加します: |
||
+ | カスタムエンドポイントを使用して、クライアントで '''Ente''' フォトモバイル、デスクトップ、またはウェブアプリを介してユーザーアカウントを追加します。 |
||
− | ** 写真モバイルアプリで: |
||
+ | |||
− | *** 開発者モードを有効にするためにメイン画面を 7 回タップします |
||
− | + | モバイルアプリで、開発者モードを有効にするにはメイン画面を7回クリックし、その後カスタム '''Ente''' サーバー API エンドポイントを設定します: |
|
+ | |||
− | {{bc| URL: ''<nowiki>https://your_public_domain.tld</nowiki>''}} |
||
+ | URL: ''<nowiki>https://your_public_domain.tld</nowiki>'' |
||
− | ** クライアントの Web アプリで: |
||
+ | |||
− | {{bc|1= $ git clone https://github.com/ente-io/ente.git |
||
+ | クライアントのウェブアプリで: |
||
− | cd ente/web |
||
+ | {{bc|1= |
||
− | git submodule update --init --recursive |
||
+ | $ git clone https://github.com/ente-io/ente.git |
||
− | yarn install |
||
+ | $ cd ente/web |
||
− | NEXT_PUBLIC_ENTE_ENDPOINT=''<nowiki>https://your_public_domain.tld</nowiki>'' yarn dev:photos}} |
||
+ | $ git submodule update --init --recursive |
||
− | * 写真アプリまたは Web アプリ (''http://localhost:3000'') の指示に従って新しいユーザーを作成します |
||
+ | $ yarn install |
||
− | * OTP コードを取得します: |
||
+ | $ NEXT_PUBLIC_ENTE_ENDPOINT=''<nowiki>https://your_public_domain.tld</nowiki>'' yarn dev:photos |
||
− | ** メールで: |
||
+ | }} |
||
− | *** {{ic|/etc/ente-server/local.yaml}} の {{ic|smtp}} セクションを設定します |
||
+ | |||
− | *** 設定された [https://man.archlinux.org/man/smtp.1.en SMTP] サーバーが動作していることを確認します |
||
+ | {{AUR|ente-desktop-git}} パッケージを使用してデスクトップアプリを利用する場合は、ビルド前に {{ic|NEXT_PUBLIC_ENTE_ENDPOINT}} 環境変数をエクスポートしてください。 |
||
− | *** メールが届くのを待ち、OTP コードをコピーします |
||
+ | |||
− | ** ente-server ログから: |
||
+ | モバイル、デスクトップ、またはウェブアプリ(''http://localhost:3000'')の指示に従って新しいユーザーを作成します。 |
||
− | *** {{bc|# journalctl -u ente-server {{!}} grep SendEmailOTT {{!}} tail -n 1}} |
||
+ | |||
− | * 新規ユーザーのアカウント ID を取得します: |
||
+ | OTP コードを取得します: |
||
− | {{bc| # psql -U ente ente-server -c 'select user_id from users order by user_id desc limit 1;'}} |
||
+ | |||
− | * このユーザーを管理者として設定します: |
||
+ | * メールで: |
||
+ | ** {{ic|/etc/ente-server/local.yaml}} の {{ic|smtp}} セクションを設定します |
||
+ | ** 設定された {{man|1|smtp}} サーバーが動作していることを確認します |
||
+ | ** メールが届くのを待ち、OTP コードをコピーします |
||
+ | * ente-server のログから: |
||
+ | :{{bc|# journalctl -au ente-server {{!}} grep SendEmailOTT {{!}} tail -n 1}} |
||
+ | |||
+ | 新しいユーザーのアカウント ID を取得します: |
||
+ | |||
+ | # psql -U ente ente-server -c 'select user_id from users order by user_id desc limit 1;' |
||
+ | |||
+ | このユーザーを管理者として設定します: |
||
+ | |||
{{hc|/etc/ente-server/local.yaml| |
{{hc|/etc/ente-server/local.yaml| |
||
internal: |
internal: |
||
− | admin: [''ADD_USER_ID_HERE''] |
+ | admin: [''ADD_USER_ID_HERE''] |
+ | }} |
||
− | * 新しい管理者権限を有効にするために {{ic|ente-server.service}} を[[再起動]]します |
||
+ | |||
− | * クライアントで {{ic|ente-cli}} 内のこの管理者を設定します: |
||
+ | 新しい管理者権限を有効にするために、{{ic|ente-server.service}} を[[再起動]]します。 |
||
− | {{bc| $ ente account add |
||
+ | |||
− | photos |
||
+ | クライアントでこの管理者を {{ic|ente-cli}} に設定します: |
||
− | ~/.ente/export |
||
+ | |||
− | ''email_address_of_admin_account'' |
||
+ | {{bc| |
||
− | ''password_of_admin_account'' |
||
+ | $ ente account add |
||
+ | photos |
||
+ | ~/.ente/export |
||
+ | ''email_address_of_admin_account'' |
||
+ | ''password_of_admin_account'' |
||
}} |
}} |
||
206行目: | 221行目: | ||
* クライアントの '''Ente''' (モバイル) クライアントから [[MinIO]] API ポートへの TCP ポート {{ic|3200}} のトラフィック |
* クライアントの '''Ente''' (モバイル) クライアントから [[MinIO]] API ポートへの TCP ポート {{ic|3200}} のトラフィック |
||
+ | == ファイル == |
||
− | * Upstream Repository: [https://github.com/ente-io/ente/tree/main/server ente.io Ente Server Repository] |
||
− | {{AUR|ente-server-git}} パッケージには、インストールされるすべてのファイル |
+ | {{AUR|ente-server-git}} パッケージには、インストールされるすべてのファイルを一覧表示し、説明する {{man|1|ente-server|url=}} [[man ページ]]が含まれています。 |
== 参照 == |
== 参照 == |
||
214行目: | 229行目: | ||
* 上流リポジトリ: [https://github.com/ente-io/ente/tree/main/server ente.io Ente サーバーリポジトリ] |
* 上流リポジトリ: [https://github.com/ente-io/ente/tree/main/server ente.io Ente サーバーリポジトリ] |
||
− | {{TranslationStatus|Ente Server|2024- |
+ | {{TranslationStatus|Ente Server|2024-08-14|809494}} |
2024年8月14日 (水) 18:48時点における最新版
関連記事
Ente サーバー は、Ente (モバイル) クライアントに暗号化されたデータの塊を保存・提供するサーバー部分です。クライアントは暗号化されたデータを送受信し、それが Ente サーバーに届き、ローカルの MinIO オブジェクト ストレージ サービスを通じて保存・読み取りが行われます。
例えば、Ente フォトクライアントを使用すると、クライアントは写真を暗号化し、それらはサーバーに保存されます。後に、クライアントは暗号化された写真を検索し、ローカルで復号できます (エンドツーエンド暗号化)。クライアント、もしくはクライアントが写真を共有した相手のみが暗号鍵を持っているため、データを復号して実際に写真を見ることができるのはその人たちだけであり、サーバーはその鍵の情報を持っていないため見ることができません。
目次
インストール
ente-server-gitAUR パッケージは、デフォルトで提供される Docker 化された Ente サーバーとは異なり、セルフホスティング用に設計されています。Docker 化またはホスティングソリューションが必要な場合は、ente.io を参照してください。
まず、ente-server-gitAUR パッケージをインストールしてください。
セルフホストされるサーバースペースは、しばしば限られた容量しか利用できないため、ente-server-gitAUR パッケージでは、古いリンク切れした ente-server MinIO オブジェクトが実際に削除される前のクリーンアップ遅延を変更できる機能が追加されています。これは、ente-server の設定パラメータ internal:delete-object-delay
で構成することができます。デフォルトの Ente サーバーは、これらのオブジェクトをデフォルトで 45日
ごとにクリーンアップしますが、レプリケーションが必要ない場合、この設定を例えば 5分
ごとにクリーンアップするように設定することができます。
Ente サーバーを稼働させるには、PostgreSQL データベース (Ente オブジェクトのメタデータやユーザーデータの保存用) と MinIO バケット (暗号化されたオブジェクトデータの保存用) が必要です。また、Ente サーバーにアクセスするための HTTPS プロキシとして Nginx の使用が推奨されます。最後に、ente-cli ツールを使うと、Ente サーバーのアカウントの容量制限や有効期限の更新が簡単に行えます。
これらの必要なコンポーネントは、オプションの依存関係としてリストされており、依存関係としてインストールすることが推奨されます: Pacman#Installation_reason
設定
MinIO のセットアップ
設定ファイルを以下のように編集してください:
/etc/minio/minio.conf
MINIO_VOLUMES="/srv/minio/data" MINIO_ROOT_USER=minio MINIO_ROOT_PASSWORD='YOUR-STRONG-MINIO-ROOT-PASSWORD' MINIO_OPTS="--address 127.0.0.1:43200 --console-address 127.0.0.1:43201"
minio.service
を有効化/起動します。
mcli コマンドを使って (minio ユーザーとして) MinIO ente-server バケットを作成します:
# cd /srv/minio/data [minio]$ mcli mb -p ente-server
PostgreSQL のセットアップ
postgres ユーザーとしてデータベースを初期化します:
[postgres]$ initdb --locale en_US.UTF-8 -D '/var/lib/postgres/data' --data-checksums --auth=scram-sha-256 --pwprompt -c listen_addresses=''
AF_UNIX ソケットのみに接続するように設定してください:
/var/lib/postgres/data/postgresql.conf
listen_addresses = '' # AF_UNIX Socket only
既存の PostgreSQL セットアップがある場合は、PostgreSQL#PostgreSQL を UNIX ソケット経由でのみアクセス可能に設定するを参照してください:
/etc/systemd/system/postgresql.d/socket-access-restriction.conf
[Service] RuntimeDirectoryMode=750
ente
を postgres
ユーザーグループ に追加し、postgresql.service
を有効化/起動します。
PostgreSQL データベースユーザーと、このユーザーが所有するデータベースを作成します (新しいパスワードを 2 回入力し、次に新しいアカウントを保存するために postgres パスワードを指定します):
[postgres]$ createuser -P ente
次に、新しいデータベースを作成するために postgres パスワードを指定します:
[postgres]$ createdb -T template0 -O ente -E unicode ente-server
ente-server の起動
MinIO バケットの詳細を追加します:
/etc/ente-server/local.yaml
b2-eu-cen: key: minio secret: "YOUR-STRONG-MINIO-ROOT-PASSWORD" endpoint: https://your_public_domain.tld:3200 region: eu-central-2 bucket: ente-server
PostgreSQL の詳細を追加します:
/etc/ente-server/local.yaml
db: host: /run/postgresql port: 5432 name: ente-server user: ente password: "YOUR-STRONG-ENTE-DATABASE-USER-PASSWORD"
ente-server-gen-random-keys コマンドを使って新しい秘密鍵を生成し、/etc/ente-server/local.yaml
設定ファイルのデフォルト値の代わりにこれらの値を使用してください。
your_public_domain.tld の IP アドレスにアクセスできるように ente-server.service
を編集します (デフォルトでは、サービスは localhost からのアクセスのみを許可しています):
[Service] IPAddressAllow=IP_address_of_your_public_domain.tld
ente-server.service
を有効化/起動します。
Nginx プロキシの設定
例として提供されている MinIO と Ente サーバーの Nginx 設定ファイル、および付随する HTTP(S) セキュリティヘッダー設定ファイルを Nginx 設定ディレクトリにコピーします:
# cp -v /usr/lib/ente-server/ente-server-nginx.conf /etc/nginx/ # cp -v /usr/lib/ente-server/http*security_headers.conf /etc/nginx/ # cp -v /usr/lib/ente-server/minio-server-nginx.conf /etc/nginx/
このサンプル設定ファイルを編集し、your_public_domain.tld を実際のパブリックドメイン名に置き換えてください。
Let's Encrypt の証明書 (または他のプロバイダーからの SSL 証明書) がまだない場合はリクエストしてください:
# certbot certonly --email your_email --agree-tos --preferred-challenge http --webroot -w /var/lib/letsencrypt -d your_public_domain.tld
ente-server 設定を含む include
ステートメントを Nginx の http
構成ファイルに追加します:
/etc/nginx/nginx.conf
http { include /etc/nginx/ente-server-nginx.conf }
パーミッションを修正します:
# chmod 644 /etc/nginx/ente-server-nginx.conf # chmod 644 /etc/nginx/http*security_headers.conf
変更を反映させるために nginx.service
を再起動します。
ente-server と ente-cli の設定
クライアントに ente-cli
をインストールするには、ente-cli-binAUR パッケージを使用します。
クライアントに ente-cli
の設定を追加します:
$ mkdir -p ~/.ente/export
~/.ente/config.yaml
endpoint: api: "https://your_public_domain.tld" >
カスタムエンドポイントを使用して、クライアントで Ente フォトモバイル、デスクトップ、またはウェブアプリを介してユーザーアカウントを追加します。
モバイルアプリで、開発者モードを有効にするにはメイン画面を7回クリックし、その後カスタム Ente サーバー API エンドポイントを設定します:
URL: https://your_public_domain.tld
クライアントのウェブアプリで:
$ git clone https://github.com/ente-io/ente.git $ cd ente/web $ git submodule update --init --recursive $ yarn install $ NEXT_PUBLIC_ENTE_ENDPOINT=https://your_public_domain.tld yarn dev:photos
ente-desktop-gitAUR パッケージを使用してデスクトップアプリを利用する場合は、ビルド前に NEXT_PUBLIC_ENTE_ENDPOINT
環境変数をエクスポートしてください。
モバイル、デスクトップ、またはウェブアプリ(http://localhost:3000)の指示に従って新しいユーザーを作成します。
OTP コードを取得します:
- メールで:
**/etc/ente-server/local.yaml
のsmtp
セクションを設定します ** 設定された smtp(1) サーバーが動作していることを確認します ** メールが届くのを待ち、OTP コードをコピーします
- ente-server のログから:
# journalctl -au ente-server | grep SendEmailOTT | tail -n 1
新しいユーザーのアカウント ID を取得します:
# psql -U ente ente-server -c 'select user_id from users order by user_id desc limit 1;'
このユーザーを管理者として設定します:
/etc/ente-server/local.yaml
internal: admin: [ADD_USER_ID_HERE]
新しい管理者権限を有効にするために、ente-server.service
を再起動します。
クライアントでこの管理者を ente-cli
に設定します:
$ ente account add photos ~/.ente/export email_address_of_admin_account password_of_admin_account
ユーザーストレージとアカウント有効期限の延長
- ente-cli を使ってストレージ制限を 100 TB、期限を 100 年に増やします:
ente admin update-subscription -u "user@domain.tld"
(オプション) AppArmor プロファイルのコピーと適用
AppArmor プロファイルは、AppArmor を使用して ente-server バイナリのアクセスを制限したい人向けに提供されています。次の手順でプロファイルをコピーして適用します (すでに AppArmor がインストールおよび有効化されているものと仮定):
# install -Dvm600 -o root -g root /usr/lib/ente-server/usr.bin.ente-server -t /etc/apparmor.d/ # aa-enforce /usr/bin/ente-server
(オプション) ファイアウォールの設定
iptables や nftables などのホストファイアウォールが有効化および構成されている場合、次の項目が許可されていることを確認します:
localhost
へのトラフィック- クライアントの Ente (モバイル) クライアントから Nginx への TCP ポート
443
のトラフィック - クライアントの Ente (モバイル) クライアントから MinIO API ポートへの TCP ポート
3200
のトラフィック
ファイル
ente-server-gitAUR パッケージには、インストールされるすべてのファイルを一覧表示し、説明する ente-server(1) man ページが含まれています。
参照
- 上流リポジトリ: ente.io Ente サーバーリポジトリ