docs/quick-start.md

# クイックスタート: Welley の最小構成デプロイ

1台のLinuxホストでWelleyインスタンスを動かすための、いちばん短い手順です。どのクラウドでも、自前のハードウェアでも使えます。CLIが実際に必要とするフラグだけを使い、ほかはすべて初期値のままにします。

できあがるもの: プラットフォーム、RAGパイプライン、Nginx、Redis、そして**同梱の** PostgreSQLコンテナです。Let's Encryptの証明書はインストール中に発行されます。マネージドデータベース、CDN、テレメトリー、Slack連携は含まれません。これらについては、AWS EC2とDigitalOceanのガイドをご覧ください。

## 1\. 事前に必要なもの

**Linuxホスト**

-   Ubuntu 24.04 LTS(または同等の最新のディストリビューション)。
-   目安として、2 vCPU、4 GB RAM、60 GBのディスク。
-   固定の公開IPv4アドレス。
-   受信TCPの **80** と **443** をインターネットに、**22** をご自身に対して開けておいてください。80番ポートは、インストール中の証明書の確認と、その後の毎週の更新で必要です。
-   `sudo` を使える非rootユーザー。このガイドでは、すべてそのユーザーで実行します。以下では `<user>` と表記します。

**DNS**

ホストの公開IPを指すレコードを2つ用意します。

| レコード | 用途 |
| --- | --- |
| `<domain>` | サイト本体 |
| `storage.<domain>` | アップロードと静的ファイル用(この構成にはCDNがないためです) |

始める前に作成してください。CLIは両方の名前がこのホストに解決されるかを確認し、解決されない場合は停止します。

**メール用のDNSレコード**

`--smtp-from` アドレスのドメインには、メール認証のレコードが必要です。ないと、Gmail、Outlook、その他の大手プロバイダーは、これまでにメールを受け取ったことのない相手へのメールを破棄することがよくあります。招待も登録確認メールもすべて対象で、迷惑メールフォルダにすら届かず、SMTPプロバイダー側では送信済みと表示されます。

| レコード | タイプ | 値 |
| --- | --- | --- |
| `<mail-domain>` | TXT | SPF。例: `v=spf1 include:<provider> ~all`(正確な値はSMTPプロバイダーの案内に従ってください) |
| `_dmarc.<mail-domain>` | TXT | DMARC。例: `v=DMARC1; p=none; rua=mailto:dmarc@<mail-domain>` |
| `<selector>._domainkey.<mail-domain>` | TXTまたはCNAME | DKIM。ドメインを検証するときに、SMTPプロバイダーが生成します |

1つのドメインに置けるSPFレコードは1つだけです。すでにある場合は、2つ目を作らず、既存のレコードにプロバイダーを追加してください。SPFまたはDMARCがない場合、`create` は警告を出しますが、停止はしません。DKIMはセレクター名がプロバイダーごとに異なるため、確認できません。

DKIMは省かないでください。Amazon SESをはじめ、多くのプロバイダーは、初期設定でエンベロープ送信者に自社のドメインを使って送信します。その場合、SPFが確認するのはご自身のドメインではなくプロバイダーのドメインなので、DMARCの判定には加わらず、DMARCを通せるのはDKIMだけです。DKIMの状態は、プロバイダーのコンソールで確認してください。Amazon SESでは、_Verified identities_ で _`<mail-domain>`_ を開き、_DKIM_ の項目が _Successful_ になっている必要があります。SES Easy DKIMは、`<token>._domainkey.<mail-domain>` という名前のCNAMEレコードを3つ公開します。

**SMTPの認証情報**

ホスト、ユーザー、パスワード、送信元アドレスです。プロバイダーはどこでも構いません。プラットフォームがメール確認とパスワードの再設定に使うため、これらがないと、CLIはインストールを行いません。初期設定では、587番ポートでSTARTTLSによるメール送信を行うものとしています。

**管理者のメールアドレス**も必要です。最初のログインとパスワードの再設定に使います。

## 2\. Dockerをインストールする

お使いのディストリビューションの公式の手順に従ってください: [Install Docker Engine](https://docs.docker.com/engine/install/)。そのあと、ご自身のユーザーがデーモンと通信できるようにします。

```
sudo usermod -aG docker <user>
```

いったんログアウトしてからログインし直し、両方が使える状態か確認します。

```
docker ps
docker compose version
```

## 3\. CLIをダウンロードする

お使いのホストに合う `platform` の値を選んでください。

**linux/amd64**

```

curl -fL "https://appstore.allroads.social/v1/social.wellesley.wlycli/latest?channel=stable&platform=linux/amd64" -o wlycli
chmod +x wlycli
./wlycli -v
  
```
  **linux/arm64**

```

curl -fL "https://appstore.allroads.social/v1/social.wellesley.wlycli/latest?channel=stable&platform=linux/arm64" -o wlycli
chmod +x wlycli
./wlycli -v
  
```
  **darwin/arm64**

```

curl -fL "https://appstore.allroads.social/v1/social.wellesley.wlycli/latest?channel=stable&platform=darwin/arm64" -o wlycli
chmod +x wlycli
./wlycli -v
  
```
  **darwin/amd64**

```

curl -fL "https://appstore.allroads.social/v1/social.wellesley.wlycli/latest?channel=stable&platform=darwin/amd64" -o wlycli
chmod +x wlycli
./wlycli -v
  
```
  

## 4\. デプロイする

```
./wlycli deploy create \
-d example.com \
-e admin@example.com \
--smtp-host smtp.example.com \
--smtp-user "$MAIL_USER" \
--smtp-password "$MAIL_PASSWORD" \
--smtp-from noreply@example.com
```

必須のフラグは、この6つがすべてです。このコマンドは、DNSの確認、デプロイ用ファイルの書き出し、Certbotによる証明書の発行、コンテナの起動を行います。数分かかります。

ここで受け入れる初期設定は次のとおりです。

| 設定 | 初期値 |
| --- | --- |
| インストール先ディレクトリ | `~/.welley/<project>`。`<project>` は、ドメインの英数字以外の文字をすべて `_` に置き換えたものです(`example.com` は `example_com` になります) |
| データベース | 同梱のPostgreSQLコンテナ。データはインストール先ディレクトリの下に置かれます |
| 証明書 | Certbot経由のLet's Encrypt。週に1回、自動で更新されます |
| アップロードと静的ファイル | `https://storage.<domain>` から配信されます |
| アップデート | `stable` チャンネル。毎日確認し、可能な場合はダウンタイムなしで適用されます |

## 5\. 最初のログイン

生成された管理者パスワードは、プラットフォームのログに出力されます。

```
docker logs example_com-platform-blue-1 | grep "Auto-init complete"
```

`https://<domain>` を開き、`-e` で指定した管理者のメールアドレスでサインインして、すぐにパスワードを変更してください。変更するまでは、ログを秘密情報として扱ってください。

## 6\. 結果を確認する

```
docker ps
```

`nginx`、`platform-blue`、`rag-pipeline-blue`、`postgres`、`redis`、`autoheal`、`snoopy` のコンテナが1つずつ表示されるはずです。名前はすべて `<project>-<service>-1` の形です。

## うまくいかなかったとき

プロジェクトのディレクトリやそのコンテナが残っている間は、`create` をもう一度実行することはできません。ファイルに問題がなく、一部のコンテナだけが起動に失敗した場合は、何も失わずにコンテナを作り直せます。

```
./wlycli deploy restart -d example.com
```

デプロイそのものをやり直す必要がある場合は、いったん削除してから最初からやり直してください。この操作では、同梱のデータベースもほかのものと一緒に削除されます。

```
./wlycli deploy delete -d example.com --yes-please-delete-all-the-data
```

## ほかの文書

-   [**Welley CLI** docs/index.md](https://welley.com/ja/administrators/docs/cli/)
-   [**サーバーのデプロイ** skills/deploy-server/SKILL.md](https://welley.com/ja/administrators/docs/deploy-server-skill/)
-   [**openai.yaml** skills/deploy-server/agents/openai.yaml](https://welley.com/ja/administrators/docs/deploy-server-openai-yaml/)
-   [**DigitalOceanリファレンス** skills/deploy-server/references/digitalocean.md](https://welley.com/ja/administrators/docs/deploy-server-digitalocean/)
