chore: sync port references and docs to 4000s infra
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
# Telegram Bot Uploader Backend Design
|
||||
|
||||
> ⚠️ **LEGACY** — Dokumen historis (2026-05-17). Port & infrastruktur sudah berubah:
|
||||
> produksi kini berjalan di port `4000` (Nix + systemd + Caddy, domain `upload.asepharyana.my.id`)
|
||||
> dan database via PgBouncer pool `100.121.180.82:6432` (bukan port 5432, bukan localhost).
|
||||
|
||||
|
||||
**Date:** 2026-05-17
|
||||
**Status:** Approved
|
||||
**Stack:** Bun, Telegraf, PostgreSQL, Drizzle ORM, Winston, nanoid
|
||||
@@ -35,7 +40,7 @@ Production-ready backend untuk Telegram file uploader dengan dual upload methods
|
||||
4. Bot extracts `telegram_file_id`, `telegram_file_unique_id`, `storage_message_id`
|
||||
5. Bot generates `public_id` using nanoid
|
||||
6. Bot saves metadata to PostgreSQL
|
||||
7. Bot replies with download link: `https://tele.asepharyana.my.id/f/{public_id}`
|
||||
7. Bot replies with download link: `https://upload.asepharyana.my.id/f/{public_id}`
|
||||
|
||||
#### Upload via HTTP API
|
||||
1. Client POSTs to `/api/upload` with file (multipart or base64)
|
||||
@@ -115,7 +120,7 @@ fileName: optional_filename.ext
|
||||
"size_bytes": 1024000,
|
||||
"file_type": "document",
|
||||
"created_at": "2026-05-17T23:42:19Z",
|
||||
"download_url": "https://tele.asepharyana.my.id/f/abc123xyz"
|
||||
"download_url": "https://upload.asepharyana.my.id/f/abc123xyz"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -212,9 +217,9 @@ schema.sql
|
||||
```
|
||||
BOT_TOKEN=<telegram_bot_token>
|
||||
STORAGE_CHANNEL_ID=<private_channel_id>
|
||||
BASE_URL=https://tele.asepharyana.my.id
|
||||
DATABASE_URL=postgresql://user:password@localhost:5432/telegram_uploader
|
||||
PORT=3000
|
||||
BASE_URL=https://upload.asepharyana.my.id
|
||||
DATABASE_URL=postgresql://asephs:***@100.121.180.82:6432/uploader
|
||||
PORT=4000
|
||||
NODE_ENV=production
|
||||
LOG_LEVEL=info
|
||||
RATE_LIMIT_WINDOW_MS=60000
|
||||
|
||||
@@ -7,6 +7,12 @@ metadata:
|
||||
|
||||
# Design: TeleUploader Deployment & CI/CD Setup
|
||||
|
||||
> ⚠️ **LEGACY** — Dokumen historis (2026-05-18) untuk arsitektur Docker + Traefik +
|
||||
> GitHub Actions. Docker & Traefik sudah dihapus dari VPS produksi (2026-08-02):
|
||||
> deploy sekarang Nix + systemd + Caddy di orangevps, port `4000`, domain
|
||||
> `upload.asepharyana.my.id`, database via PgBouncer pool `100.121.180.82:6432`.
|
||||
|
||||
|
||||
We are setting up production deployment for TeleUploader on VPS `45.127.35.244` behind Traefik utilizing GitHub Actions.
|
||||
|
||||
## 1. System Architecture
|
||||
@@ -22,7 +28,7 @@ TeleUploader is a Bun-based service.
|
||||
### `Dockerfile`
|
||||
- Multi-stage build.
|
||||
- **Stage 1 (Build)**: Install dependencies, copy source files, run Biome lint/format checks, compile TS build to `dist/index.js` using `bun build`.
|
||||
- **Stage 2 (Run)**: Use minimal `oven/bun:1.1-slim` runtime. Copy `dist/index.js`, `schema.sql`, and `package.json`. Expose port `3000`.
|
||||
- **Stage 2 (Run)**: Use minimal `oven/bun:1.1-slim` runtime. Copy `dist/index.js`, `schema.sql`, and `package.json`. Expose port `4000`.
|
||||
|
||||
### `docker-compose.yml`
|
||||
```yaml
|
||||
@@ -38,7 +44,7 @@ services:
|
||||
- STORAGE_CHANNEL_ID=${STORAGE_CHANNEL_ID}
|
||||
- BASE_URL=${BASE_URL}
|
||||
- DATABASE_URL=${DATABASE_URL}
|
||||
- PORT=3000
|
||||
- PORT=4000
|
||||
- NODE_ENV=production
|
||||
- LOG_LEVEL=info
|
||||
networks:
|
||||
@@ -49,7 +55,7 @@ services:
|
||||
- "traefik.http.routers.teleuploader.entrypoints=websecure"
|
||||
- "traefik.http.routers.teleuploader.tls=true"
|
||||
- "traefik.http.routers.teleuploader.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.services.teleuploader.loadbalancer.server.port=3000"
|
||||
- "traefik.http.services.teleuploader.loadbalancer.server.port=4000"
|
||||
|
||||
networks:
|
||||
app-shared-net:
|
||||
|
||||
Reference in New Issue
Block a user