PotatoMaster101/sectxt
GitHub: PotatoMaster101/sectxt
一个基于 Rust 后端和 Web 前端的全栈秘密消息发送应用,支持容器化部署和云基础设施自动化。
Stars: 0 | Forks: 0
[](https://github.com/PotatoMaster101/sectxt/actions/workflows/ci.yml)
[](https://www.gnu.org/licenses/gpl-3.0)
# Sectxt
发送秘密消息。
## 后端 Crates
- [`sectxt-api`](backend/crates/sectxt-api/):API 层
- [`sectxt-core`](backend/crates/sectxt-core/):领域层
- [`sectxt-db`](backend/crates/sectxt-db/):数据库层
## 开发
所需工具:
- [`cargo`](https://rust-lang.org/tools/install/)
- [`docker`](https://www.docker.com/products/docker-desktop/)
- [`npm`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
- [`sqlx-cli`](https://crates.io/crates/sqlx-cli)
```
docker compose up -d database
cp .env.sample .env
# backend
sqlx migrate run --source 'backend/crates/sectxt-db/migrations'
cargo test 'generate_openapi_doc' --manifest-path 'backend/Cargo.toml'
cargo run --manifest-path 'backend/Cargo.toml'
# frontend
npm --prefix 'frontend/' install && npm --prefix 'frontend/' run dev
```
## 部署
所需工具:
- [`cargo`](https://rust-lang.org/tools/install/)
- [`cross`](https://crates.io/crates/cross)
- [`docker`](https://www.docker.com/products/docker-desktop/)
- [`npm`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
- [`sqlx-cli`](https://crates.io/crates/sqlx-cli)
- [`terraform`](https://developer.hashicorp.com/terraform/install)
### 搭建基础设施
```
export DIGITALOCEAN_TOKEN=''
export NEON_API_KEY=''
ssh-keygen -t ed25519 -f ~/.ssh/keys/id_ed25519_sectxt
terraform init
terraform apply -auto-approve
sqlx migrate run --source 'backend/crates/sectxt-db/migrations' --database-url "$(terraform output -raw database_url_direct)"
```
将您域名上的 DNS 更新为指向 droplet 的 IP(`terraform output -raw server_ip`)。
### 搭建站点
将 `VITE_API_BASE_URL` 更新为 `https:///api`,以便前端能够访问后端。
```
cp .env.sample .env
cross build --release --target 'x86_64-unknown-linux-gnu' --manifest-path 'backend/Cargo.toml' --target-dir 'dist/backend/'
npm --prefix 'frontend/' install && npm --prefix 'frontend/' run build
docker compose run --build --rm ansible ansible-playbook -i inventory.ini deploy.yml
# 检查 logs
ssh deployer@$(terraform output -raw server_ip) -i ~/.ssh/keys/id_ed25519_sectxt 'sudo journalctl -u sectxt-api --no-pager -n 500'
```
### 销毁
```
terraform destroy -auto-approve
```
## TODO
- [ ] 附件支持
标签:Docker, ECS, Rust, Terraform, 全栈应用, 加密通信, 可视化界面, 后端开发, 安全防御评估, 暗色界面, 系统提示词, 网络流量审计, 请求拦截