first commit
This commit is contained in:
53
.env
Normal file
53
.env
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Reactive Resume public URL behind Nginx Proxy Manager.
|
||||||
|
TZ=Asia/Shanghai
|
||||||
|
APP_URL=https://me.huijutec.cn
|
||||||
|
|
||||||
|
# Local debug access only: http://127.0.0.1:3003
|
||||||
|
LOCAL_APP_PORT=3003
|
||||||
|
|
||||||
|
# PostgreSQL.
|
||||||
|
POSTGRES_DB=reactive_resume
|
||||||
|
POSTGRES_USER=reactive_resume
|
||||||
|
POSTGRES_PASSWORD=S47LNqOvKzDTgGPo9C26LWf5
|
||||||
|
DATABASE_URL=postgresql://reactive_resume:S47LNqOvKzDTgGPo9C26LWf5@postgres:5432/reactive_resume
|
||||||
|
|
||||||
|
# Generated with: openssl rand -hex 32
|
||||||
|
AUTH_SECRET=9f27ca158d1c97d58bed21c8c8d8819e3c81111418682972e5f16281ea4ff0c8
|
||||||
|
|
||||||
|
# Optional email/auth/storage/AI settings can be enabled later.
|
||||||
|
BETTER_AUTH_API_KEY=
|
||||||
|
GOOGLE_CLIENT_ID=
|
||||||
|
GOOGLE_CLIENT_SECRET=
|
||||||
|
GITHUB_CLIENT_ID=
|
||||||
|
GITHUB_CLIENT_SECRET=
|
||||||
|
LINKEDIN_CLIENT_ID=
|
||||||
|
LINKEDIN_CLIENT_SECRET=
|
||||||
|
OAUTH_PROVIDER_NAME=
|
||||||
|
OAUTH_CLIENT_ID=
|
||||||
|
OAUTH_CLIENT_SECRET=
|
||||||
|
OAUTH_DISCOVERY_URL=
|
||||||
|
OAUTH_AUTHORIZATION_URL=
|
||||||
|
OAUTH_TOKEN_URL=
|
||||||
|
OAUTH_USER_INFO_URL=
|
||||||
|
OAUTH_DYNAMIC_CLIENT_REDIRECT_HOSTS=
|
||||||
|
OAUTH_SCOPES=
|
||||||
|
SMTP_HOST=
|
||||||
|
SMTP_PORT=587
|
||||||
|
SMTP_USER=
|
||||||
|
SMTP_PASS=
|
||||||
|
SMTP_FROM=Reactive Resume <noreply@me.huijutec.cn>
|
||||||
|
SMTP_SECURE=false
|
||||||
|
S3_ACCESS_KEY_ID=
|
||||||
|
S3_SECRET_ACCESS_KEY=
|
||||||
|
S3_REGION=us-east-1
|
||||||
|
S3_ENDPOINT=
|
||||||
|
S3_BUCKET=
|
||||||
|
S3_FORCE_PATH_STYLE=false
|
||||||
|
REDIS_URL=
|
||||||
|
ENCRYPTION_SECRET=
|
||||||
|
CLOUDFLARE_ACCOUNT_ID=
|
||||||
|
CLOUDFLARE_API_TOKEN=
|
||||||
|
FLAG_DISABLE_SIGNUPS=false
|
||||||
|
FLAG_DISABLE_EMAIL_AUTH=false
|
||||||
|
FLAG_DISABLE_IMAGE_PROCESSING=false
|
||||||
|
FLAG_ALLOW_UNSAFE_AI_BASE_URL=false
|
||||||
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
data/
|
||||||
|
*.log
|
||||||
|
.DS_Store
|
||||||
36
README.md
Normal file
36
README.md
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Reactive Resume + frpc
|
||||||
|
|
||||||
|
该目录使用 Docker Compose 启动 Reactive Resume,并通过 frpc 把容器内的 `reactive-resume:3000` 映射到远端 `82.157.255.195:10003`。Nginx Proxy Manager 已将 `https://me.huijutec.cn` 反代到该远端端口。
|
||||||
|
|
||||||
|
## 文件
|
||||||
|
|
||||||
|
- `compose.yml`: Docker Compose 编排,包含 Postgres、Reactive Resume、frpc。
|
||||||
|
- `.env`: Reactive Resume 环境变量和本地调试端口。
|
||||||
|
- `frpc.yaml`: frpc 客户端配置,远端端口为 `10003`。
|
||||||
|
- `reactive_resume_data`: Reactive Resume 本地上传文件持久化 Docker 命名卷。
|
||||||
|
|
||||||
|
## 启动
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose -f compose.yml up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## 查看状态
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose -f compose.yml ps
|
||||||
|
docker compose -f compose.yml logs -f reactive-resume
|
||||||
|
docker compose -f compose.yml logs -f frpc
|
||||||
|
```
|
||||||
|
|
||||||
|
## 访问
|
||||||
|
|
||||||
|
- 公网访问: `https://me.huijutec.cn`
|
||||||
|
- 本机调试: `http://127.0.0.1:3003`
|
||||||
|
|
||||||
|
## 更新
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose -f compose.yml pull
|
||||||
|
docker compose -f compose.yml up -d
|
||||||
|
```
|
||||||
65
compose.yml
Normal file
65
compose.yml
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
name: reactive-resume
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:16-alpine
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: ${POSTGRES_DB}
|
||||||
|
POSTGRES_USER: ${POSTGRES_USER}
|
||||||
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||||
|
volumes:
|
||||||
|
- postgres_data:/var/lib/postgresql/data
|
||||||
|
networks:
|
||||||
|
- resume_net
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
reactive-resume:
|
||||||
|
image: amruthpillai/reactive-resume:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:${LOCAL_APP_PORT}:3000"
|
||||||
|
volumes:
|
||||||
|
- reactive_resume_data:/app/data
|
||||||
|
networks:
|
||||||
|
- resume_net
|
||||||
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD",
|
||||||
|
"node",
|
||||||
|
"-e",
|
||||||
|
"fetch('http://127.0.0.1:3000/api/health').then((r) => { if (!r.ok) process.exit(1); }).catch(() => process.exit(1));",
|
||||||
|
]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
frpc:
|
||||||
|
image: fatedier/frpc:v0.68.0
|
||||||
|
restart: unless-stopped
|
||||||
|
command: ["-c", "/etc/frp/frpc.yaml"]
|
||||||
|
volumes:
|
||||||
|
- ./frpc.yaml:/etc/frp/frpc.yaml:ro
|
||||||
|
networks:
|
||||||
|
- resume_net
|
||||||
|
depends_on:
|
||||||
|
reactive-resume:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
resume_net:
|
||||||
|
driver: bridge
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
postgres_data:
|
||||||
|
reactive_resume_data:
|
||||||
17
frpc.yaml
Normal file
17
frpc.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
serverAddr: "82.157.255.195"
|
||||||
|
serverPort: 7000
|
||||||
|
|
||||||
|
auth:
|
||||||
|
method: "token"
|
||||||
|
token: "en.xjtu.edu.cn"
|
||||||
|
|
||||||
|
transport:
|
||||||
|
poolCount: 5
|
||||||
|
heartbeatTimeout: -1
|
||||||
|
|
||||||
|
proxies:
|
||||||
|
- name: "reactive-resume-me"
|
||||||
|
type: "tcp"
|
||||||
|
localIP: "reactive-resume"
|
||||||
|
localPort: 3000
|
||||||
|
remotePort: 10003
|
||||||
BIN
参考简历/2024_CSC_王志博-简历-中文.docx
Normal file
BIN
参考简历/2024_CSC_王志博-简历-中文.docx
Normal file
Binary file not shown.
BIN
参考简历/王志博-简历-中文.docx
Normal file
BIN
参考简历/王志博-简历-中文.docx
Normal file
Binary file not shown.
Reference in New Issue
Block a user