Merge remote-tracking branch 'gitea/home' into home
This commit is contained in:
commit
fd3e95ac29
@ -1,42 +1,9 @@
|
|||||||
# Remote Deployment Inventory
|
# Remote Runtime Notes
|
||||||
|
|
||||||
This directory stores AGENT-style operational documents for remote hosts and deployed projects.
|
这个目录记录远程主机运行事实,避免把主机级流水账继续堆回根文档。
|
||||||
|
|
||||||
## Purpose
|
约定:
|
||||||
|
|
||||||
Use this directory to keep host-level deployment facts in one place so they do not get lost across shell history, chat logs, or ad hoc notes.
|
- 一台主机一份 `*.AGENT.md`
|
||||||
|
- 只写运行事实、入口、路径、端口、依赖和排障命令
|
||||||
Keep these documents focused on runtime reality:
|
- 项目规则仍放在根 `AGENTS.md` / `CLAUDE.md`
|
||||||
- where a service actually runs
|
|
||||||
- which port is really exposed
|
|
||||||
- where the real data lives
|
|
||||||
- which repo is writable versus mirrored
|
|
||||||
- how to inspect, restart, back up, and upgrade
|
|
||||||
|
|
||||||
## File Layout
|
|
||||||
|
|
||||||
- `TEMPLATE.AGENT.md` — reusable template for a new remote host or VM
|
|
||||||
- `<host>.AGENT.md` — filled document for a specific host
|
|
||||||
|
|
||||||
## Naming Convention
|
|
||||||
|
|
||||||
Use the stable host name in the file name when possible.
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
- `minione-ubuntu-infra-4c16g120g.AGENT.md`
|
|
||||||
- `prod-k8s-edge-01.AGENT.md`
|
|
||||||
- `staging-gpu-node-02.AGENT.md`
|
|
||||||
|
|
||||||
## Suggested Update Rules
|
|
||||||
|
|
||||||
Update the host document whenever one of these changes:
|
|
||||||
- deployment mode changes, for example Docker to systemd
|
|
||||||
- runtime ports or hostnames change
|
|
||||||
- a new database, cache, or volume is introduced
|
|
||||||
- Git remotes or mirror strategy changes
|
|
||||||
- backup location or restore procedure changes
|
|
||||||
- a real incident reveals a hidden dependency or operational trap
|
|
||||||
|
|
||||||
## Current Hosts
|
|
||||||
|
|
||||||
- `minione-ubuntu-infra-4c16g120g.AGENT.md`
|
|
||||||
|
|||||||
@ -1,112 +1,63 @@
|
|||||||
# Remote Host AGENT — minione-ubuntu-infra-4c16g120g
|
# Remote Host AGENT — minione-ubuntu-infra-4c16g120g
|
||||||
|
|
||||||
## 1. Host Identity
|
## Host Identity
|
||||||
|
|
||||||
- Host name: `minione-ubuntu-infra`
|
- Host name: `minione-ubuntu-infra`
|
||||||
- Host role: personal infra VM for `new-api` and `gitea`
|
|
||||||
- Primary access path: Tabby SSH profile `个人-minione-ubuntu-infra-4c16g120g`
|
|
||||||
- Tailscale IP: `100.64.0.11`
|
- Tailscale IP: `100.64.0.11`
|
||||||
- LAN IP: `192.168.1.3`
|
- LAN IP: `192.168.1.3`
|
||||||
|
- Access profile: `个人-minione-ubuntu-infra-4c16g120g`
|
||||||
|
|
||||||
|
## Runtime Topology
|
||||||
|
|
||||||
## 2. Runtime Topology
|
|
||||||
- `new-api` runs as a host `systemd` process
|
- `new-api` runs as a host `systemd` process
|
||||||
- `gitea` runs in Docker Compose under `/opt/gitea`
|
- `gitea` runs in Docker Compose under `/opt/gitea`
|
||||||
- PostgreSQL, Redis, Nginx run as shared Docker infrastructure
|
- PostgreSQL and Redis run as shared Docker infrastructure
|
||||||
- Shared Docker network: `infra-shared`
|
- Shared Docker network: `infra-shared`
|
||||||
|
|
||||||
## 3. Shared Infrastructure
|
## Shared Infrastructure
|
||||||
|
|
||||||
### PostgreSQL
|
### PostgreSQL
|
||||||
- Container: `infra-postgres`
|
|
||||||
|
- Container name: `infra-postgres`
|
||||||
- Host port: `127.0.0.1:5433`
|
- Host port: `127.0.0.1:5433`
|
||||||
- Docker alias: `infra-postgres:5432`
|
- Docker alias: `infra-postgres:5432`
|
||||||
- Data path: `/srv/infra/postgres/data`
|
|
||||||
- Backup path: `/srv/infra/postgres/backup`
|
|
||||||
- Databases:
|
- Databases:
|
||||||
- `new-api`
|
- `new-api`
|
||||||
- `gitea`
|
- `gitea`
|
||||||
|
- Data path: `/srv/infra/postgres/data`
|
||||||
|
- Backup path: `/srv/infra/postgres/backup`
|
||||||
|
|
||||||
### Redis
|
### Redis
|
||||||
- Container: `infra-redis`
|
|
||||||
|
- Container name: `infra-redis`
|
||||||
- Host port: `127.0.0.1:6379`
|
- Host port: `127.0.0.1:6379`
|
||||||
- Docker alias: `infra-redis:6379`
|
- Docker alias: `infra-redis:6379`
|
||||||
- Data path: `/srv/infra/redis/data`
|
- Data path: `/srv/infra/redis/data`
|
||||||
|
|
||||||
### Nginx
|
## new-api
|
||||||
- Container: `infra-nginx`
|
|
||||||
- Host ports:
|
|
||||||
- `80`
|
|
||||||
- `443`
|
|
||||||
|
|
||||||
## 4. new-api
|
|
||||||
- Service name: `new-api`
|
- Service name: `new-api`
|
||||||
- Deploy path: `/root/new-api-deploy`
|
- Deploy path: `/root/new-api-deploy`
|
||||||
- Runtime env: `/root/new-api-deploy/.env.runtime`
|
- Runtime env: `/root/new-api-deploy/.env.runtime`
|
||||||
- Binary path: `/root/new-api-deploy/new-api`
|
|
||||||
- systemd unit: `/etc/systemd/system/new-api.service`
|
- systemd unit: `/etc/systemd/system/new-api.service`
|
||||||
- Health check:
|
- Health check: `curl --noproxy '*' http://127.0.0.1:3000/api/status`
|
||||||
- `curl --noproxy '*' http://127.0.0.1:3000/api/status`
|
|
||||||
|
Host-process connection profile:
|
||||||
|
|
||||||
### Runtime Profile
|
|
||||||
- `SQL_DSN=postgresql://root:<password>@127.0.0.1:5433/new-api`
|
- `SQL_DSN=postgresql://root:<password>@127.0.0.1:5433/new-api`
|
||||||
- `REDIS_CONN_STRING=redis://:<password>@127.0.0.1:6379/0`
|
- `REDIS_CONN_STRING=redis://:<password>@127.0.0.1:6379/0`
|
||||||
|
|
||||||
### Source Build Toolchain
|
## gitea
|
||||||
- `go version` -> currently `go1.25.1`
|
|
||||||
- `bun --version` -> currently `1.3.12`
|
|
||||||
- `node` / `npm` also exist, but frontend preferred tool is `bun`
|
|
||||||
|
|
||||||
### Source Upgrade Command
|
|
||||||
- `/usr/local/bin/new-api-upgrade`
|
|
||||||
|
|
||||||
This script currently does:
|
|
||||||
1. `git fetch origin`
|
|
||||||
2. `git switch home`
|
|
||||||
3. `git reset --hard origin/home`
|
|
||||||
4. `bun install`
|
|
||||||
5. `bun run build`
|
|
||||||
6. `go build`
|
|
||||||
7. `systemctl restart new-api`
|
|
||||||
8. health check against `127.0.0.1:3000`
|
|
||||||
|
|
||||||
### Important Notes
|
|
||||||
- `web/dist` is required for a valid backend build because `main.go` embeds it
|
|
||||||
- `VERSION` may be empty in the current branch; the upgrade script falls back to Git commit hash
|
|
||||||
- deployment checkout is branch-based now; do not go back to the old detached worktree deployment unless you explicitly mean to
|
|
||||||
|
|
||||||
## 5. gitea
|
|
||||||
- Compose path: `/opt/gitea/docker-compose.yml`
|
- Compose path: `/opt/gitea/docker-compose.yml`
|
||||||
- Config path: `/opt/gitea/data/gitea/conf/app.ini`
|
- Config path: `/opt/gitea/data/gitea/conf/app.ini`
|
||||||
- Web: `http://100.64.0.11:3001/`
|
- Web: `http://100.64.0.11:3001/`
|
||||||
- SSH: `ssh -p 2222 git@100.64.0.11`
|
- SSH: `ssh -p 2222 git@100.64.0.11`
|
||||||
- Database host: `infra-postgres:5432`
|
- Database host: `infra-postgres:5432`
|
||||||
- Data path: `/opt/gitea/data`
|
|
||||||
|
|
||||||
## 6. Git and Repository Strategy
|
## Routine Checks
|
||||||
- Writable repo:
|
|
||||||
- `admin/new-api-dev`
|
|
||||||
- Mirror repo:
|
|
||||||
- `admin/new-api`
|
|
||||||
- Remote deploy checkout:
|
|
||||||
- `/root/new-api-deploy`
|
|
||||||
- Deploy branch:
|
|
||||||
- `home`
|
|
||||||
|
|
||||||
## 7. Routine Operations
|
- `systemctl status new-api`
|
||||||
- Check app health:
|
- `journalctl -u new-api -n 200 --no-pager`
|
||||||
- `systemctl is-active new-api`
|
- `docker ps --format '{{.Names}} | {{.Image}} | {{.Ports}}'`
|
||||||
- `journalctl -u new-api -n 200 --no-pager`
|
- `ss -lntp | egrep ':3000|:3001|:2222|:5433|:6379'`
|
||||||
- `curl --noproxy '*' http://127.0.0.1:3000/api/status`
|
|
||||||
- Run source upgrade:
|
|
||||||
- `/usr/local/bin/new-api-upgrade`
|
|
||||||
- Check infra:
|
|
||||||
- `docker ps --format '{{.Names}} | {{.Image}} | {{.Ports}}'`
|
|
||||||
- `ss -lntp | egrep ':3000|:3001|:2222|:5433|:6379|:80|:443'`
|
|
||||||
- Check gitea:
|
|
||||||
- `cd /opt/gitea && docker compose ps`
|
|
||||||
- `docker logs --tail 200 gitea`
|
|
||||||
- `curl --noproxy '*' http://127.0.0.1:3001/`
|
|
||||||
|
|
||||||
## 8. Current Reality Traps
|
|
||||||
- Do not treat `new-api/docker-compose.yml` as production truth; production app runtime is `systemd`
|
|
||||||
- Do not assume PostgreSQL belongs only to `new-api`; `gitea` shares the same PostgreSQL instance
|
|
||||||
- Do not assume remote host has no source-build capability anymore; Go and Bun are now installed
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user