chore: settle product naming across app, widget and deployments
One word everywhere: ReplyPier in UI copy, package and image names, the replypier.site domains (app/api/docs/help), REPLYPIER_* settings and the --rp-* design tokens. - public widget API is window.ReplyPier with replypierId / replypierBaseUrl / replypierConfig / replypierToken, loader at webclient/replypier.min.js; both bundles rebuilt from source - NOTICE, llms.txt, CONTRIBUTING, HELP_CENTER_INFRA and the demo runtime config rewritten; the demo config ships no third-party keys - migration adds the ReplyPier managed model value to the AI model enum - local compose project, database, role, volume and Docker network carry the same name
This commit is contained in:
1 parent
ff0a09f0e5
commit
20fef2b9f3
1156 files changed
+7267
-7148
No files matched your search
@@ -1,11 +1,11 @@
|
||||
name: chattermate-local
|
||||
name: replypier-local
|
||||
|
||||
services:
|
||||
db:
|
||||
image: pgvector/pgvector:0.8.2-pg16
|
||||
environment:
|
||||
POSTGRES_DB: chattermate
|
||||
POSTGRES_USER: chattermate
|
||||
POSTGRES_DB: replypier
|
||||
POSTGRES_USER: replypier
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Run ./deploy/local/local.sh init first}
|
||||
ports:
|
||||
- "127.0.0.1:15432:5432"
|
||||
@@ -15,7 +15,7 @@ services:
|
||||
mem_limit: 384m
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U chattermate -d chattermate"]
|
||||
test: ["CMD-SHELL", "pg_isready -U replypier -d replypier"]
|
||||
interval: 5s
|
||||
timeout: 3s
|
||||
retries: 20
|
||||
|
||||
@@ -37,10 +37,10 @@
|
||||
<p class="note">套餐、政策与校验码均为虚构测试数据。此页面仅供本机测试;对话会调用已配置的模型 API。</p>
|
||||
</main>
|
||||
<script>
|
||||
window.chattermateId = "__WIDGET_ID__";
|
||||
window.chattermateBaseUrl = "http://127.0.0.1:8018/api/v1";
|
||||
window.chattermateConfig = { position: "bottom-right" };
|
||||
window.replypierId = "__WIDGET_ID__";
|
||||
window.replypierBaseUrl = "http://127.0.0.1:8018/api/v1";
|
||||
window.replypierConfig = { position: "bottom-right" };
|
||||
</script>
|
||||
<script src="/webclient/chattermate.min.js"></script>
|
||||
<script src="/webclient/replypier.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -26,7 +26,7 @@ def main() -> None:
|
||||
password = compose_env.read_text().strip().split("=", 1)[1]
|
||||
fernet_key = base64.b64encode(base64.urlsafe_b64encode(secrets.token_bytes(32))).decode()
|
||||
settings = {
|
||||
"DATABASE_URL": f"postgresql+psycopg://chattermate:{password}@127.0.0.1:15432/chattermate",
|
||||
"DATABASE_URL": f"postgresql+psycopg://replypier:{password}@127.0.0.1:15432/replypier",
|
||||
"REDIS_ENABLED": "true",
|
||||
"REDIS_URL": "redis://127.0.0.1:16380/0",
|
||||
"ENVIRONMENT": "production",
|
||||
|
||||
@@ -60,10 +60,10 @@ build_frontend() {
|
||||
if [[ ! -f "${STATE}/assets/widget.css" ]]; then
|
||||
cp "${STATE}"/assets/unused/*.css "${STATE}/assets/widget.css"
|
||||
fi
|
||||
node_modules/.bin/esbuild src/webclient/chattermate.js --bundle --minify --format=iife \
|
||||
node_modules/.bin/esbuild src/webclient/replypier.js --bundle --minify --format=iife \
|
||||
--target=es2015 --loader:.svg=text --define:process.env.NODE_ENV='"production"' \
|
||||
--define:__CHATTERMATE_API_URL__='"http://127.0.0.1:8018/api/v1"' \
|
||||
--outfile="${STATE}/dashboard/webclient/chattermate.min.js"
|
||||
--define:__REPLYPIER_API_URL__='"http://127.0.0.1:8018/api/v1"' \
|
||||
--outfile="${STATE}/dashboard/webclient/replypier.min.js"
|
||||
cat > "${STATE}/dashboard/config.js" <<'JS'
|
||||
self.APP_CONFIG = {
|
||||
API_URL: "http://127.0.0.1:8018/api/v1",
|
||||
@@ -112,7 +112,7 @@ case "${1:-status}" in
|
||||
colima --profile bytedesk start --activate=false --ssh-config=false
|
||||
fi
|
||||
compose up -d --wait --wait-timeout 180
|
||||
compose exec -T db psql -U chattermate -d chattermate -c 'CREATE EXTENSION IF NOT EXISTS vector;'
|
||||
compose exec -T db psql -U replypier -d replypier -c 'CREATE EXTENSION IF NOT EXISTS vector;'
|
||||
(cd "${ROOT}/backend" && "${PYTHON}" -m alembic upgrade head)
|
||||
start_process backend "${ROOT}/backend" "${PYTHON}" -m uvicorn app.main:app --host 127.0.0.1 --port 8018
|
||||
start_process knowledge "${ROOT}/backend" "${PYTHON}" -m app.workers.run_knowledge_processor
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
1. 为服务器创建专用 SSH 密钥,将**公钥**添加为 Gitea 仓库的只读部署密钥;私钥留在 `/etc/replypier-updater/id_ed25519`,权限 `600`。通过可信渠道核实 Gitea 主机公钥并保存为同目录的 `known_hosts`。更新过程不使用账号密码或浏览器登录态。
|
||||
2. 按 `config.example.json` 准备私有配置,填写当前安装提交和部署管理员用户 UUID。只有名单中的用户且持有 `super_admin` 权限才能更新;其他组织的管理员无权更新整个服务器。配置和 SSH 私钥不入库。
|
||||
3. 以 root 执行 `./deploy/server/install-updater.sh /path/to/config.json`,然后执行 `python3 /opt/replypier-updater/cli.py check`。安装不会重置应用环境或数据库。
|
||||
4. Caddy 对稳定文件名的入口返回 `Cache-Control: no-cache, no-store, must-revalidate`:`/sw.js`、`/manifest.webmanifest`、`/config.js`、`/assets/widget.js`、`/assets/widget.css`、`/webclient/chattermate.min.js`。首次设置后,清除 CDN 中这些 URL 的已有缓存;带内容版本号的构建资源可以正常缓存。不要缓存 HTML 入口。
|
||||
4. Caddy 对稳定文件名的入口返回 `Cache-Control: no-cache, no-store, must-revalidate`:`/sw.js`、`/manifest.webmanifest`、`/config.js`、`/assets/widget.js`、`/assets/widget.css`、`/webclient/replypier.min.js`。首次设置后,清除 CDN 中这些 URL 的已有缓存;带内容版本号的构建资源可以正常缓存。不要缓存 HTML 入口。
|
||||
|
||||
## 更新时发生什么
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"known_hosts": "/etc/replypier-updater/known_hosts",
|
||||
"owner_ids": ["REPLACE_WITH_DEPLOYMENT_OWNER_USER_ID"],
|
||||
"initial_revision": "REPLACE_WITH_INSTALLED_COMMIT",
|
||||
"db_container": "chattermate-local-db-1",
|
||||
"db_user": "chattermate",
|
||||
"db_name": "chattermate"
|
||||
"db_container": "replypier-local-db-1",
|
||||
"db_user": "replypier",
|
||||
"db_name": "replypier"
|
||||
}
|
||||
@@ -100,12 +100,12 @@ class Deployment:
|
||||
if len(styles) != 1:
|
||||
raise RuntimeError('网站组件的样式构建结果不完整。')
|
||||
shutil.copy2(styles[0], stage / 'assets/widget.css')
|
||||
loader = stage / 'dashboard/webclient/chattermate.min.js'
|
||||
loader = stage / 'dashboard/webclient/replypier.min.js'
|
||||
loader.parent.mkdir(exist_ok=True)
|
||||
self.run([str(front / 'node_modules/.bin/esbuild'), 'src/webclient/chattermate.js',
|
||||
self.run([str(front / 'node_modules/.bin/esbuild'), 'src/webclient/replypier.js',
|
||||
'--bundle', '--minify', '--format=iife', '--target=es2015', '--loader:.svg=text',
|
||||
'--define:process.env.NODE_ENV="production"',
|
||||
'--define:__CHATTERMATE_API_URL__=' + json.dumps(self.cfg['public_url'] + '/api/v1'),
|
||||
'--define:__REPLYPIER_API_URL__=' + json.dumps(self.cfg['public_url'] + '/api/v1'),
|
||||
'--outfile=' + str(loader)], cwd=front)
|
||||
# Runtime configuration belongs to this installation, not to the repository.
|
||||
live_web = self.root / 'deploy/local/.state/dashboard'
|
||||
|
||||
Reference in new issue
Block a user