chore: migrate domain asepharyana.tech to asepharyana.my.id
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
2a833d3908
commit
50176e5764
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
BOT_TOKEN=isi_token_bot_telegram
|
BOT_TOKEN=isi_token_bot_telegram
|
||||||
ADDITIONAL_BOT_TOKENS=token_cadangan_1,token_cadangan_2,token_cadangan_3
|
ADDITIONAL_BOT_TOKENS=token_cadangan_1,token_cadangan_2,token_cadangan_3
|
||||||
STORAGE_CHANNEL_ID=-1001234567890
|
STORAGE_CHANNEL_ID=-1001234567890
|
||||||
BASE_URL=https://tele.asepharyana.tech
|
BASE_URL=https://tele.asepharyana.my.id
|
||||||
DATABASE_URL=postgresql://user:password@localhost:5432/telegram_uploader
|
DATABASE_URL=postgresql://user:password@localhost:5432/telegram_uploader
|
||||||
PORT=3000
|
PORT=3000
|
||||||
NODE_ENV=production
|
NODE_ENV=production
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ bun run start # Production mode
|
|||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
**URL permanen maksudnya apa?**
|
**URL permanen maksudnya apa?**
|
||||||
URL backend tetap permanen: `https://tele.asepharyana.tech/f/{public_id}`
|
URL backend tetap permanen: `https://tele.asepharyana.my.id/f/{public_id}`
|
||||||
Ini berarti URL service Anda fix, bukan jaminan file Telegram abadi.
|
Ini berarti URL service Anda fix, bukan jaminan file Telegram abadi.
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|||||||
+1
-1
@@ -46,7 +46,7 @@ services:
|
|||||||
- app-shared-net
|
- app-shared-net
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.teleuploader.rule=Host(`upload.asepharyana.my.id`) || Host(`upload.asepharyana.tech`) || Host(`upload.asepharyana.web.id`)"
|
- "traefik.http.routers.teleuploader.rule=Host(`upload.asepharyana.my.id`) || Host(`upload.asepharyana.web.id`)"
|
||||||
- "traefik.http.routers.teleuploader.entrypoints=websecure"
|
- "traefik.http.routers.teleuploader.entrypoints=websecure"
|
||||||
- "traefik.http.routers.teleuploader.tls=true"
|
- "traefik.http.routers.teleuploader.tls=true"
|
||||||
- "traefik.http.routers.teleuploader.tls.certresolver=cloudflare"
|
- "traefik.http.routers.teleuploader.tls.certresolver=cloudflare"
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ schema.sql
|
|||||||
```bash
|
```bash
|
||||||
BOT_TOKEN=isi_token_bot_telegram
|
BOT_TOKEN=isi_token_bot_telegram
|
||||||
STORAGE_CHANNEL_ID=-1001234567890
|
STORAGE_CHANNEL_ID=-1001234567890
|
||||||
BASE_URL=https://tele.asepharyana.tech
|
BASE_URL=https://tele.asepharyana.my.id
|
||||||
DATABASE_URL=postgresql://user:password@localhost:5432/telegram_uploader
|
DATABASE_URL=postgresql://user:password@localhost:5432/telegram_uploader
|
||||||
PORT=3000
|
PORT=3000
|
||||||
NODE_ENV=production
|
NODE_ENV=production
|
||||||
@@ -148,7 +148,7 @@ bun run start # Production mode
|
|||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
**URL permanen maksudnya apa?**
|
**URL permanen maksudnya apa?**
|
||||||
URL backend tetap permanen: `https://tele.asepharyana.tech/f/{public_id}`
|
URL backend tetap permanen: `https://tele.asepharyana.my.id/f/{public_id}`
|
||||||
Ini berarti URL service Anda fix, bukan jaminan file Telegram abadi.
|
Ini berarti URL service Anda fix, bukan jaminan file Telegram abadi.
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||||
|
|
||||||
**Goal:** Containerize TeleUploader using Bun, configure Traefik labels for routing `upload.asepharyana.tech`, and set up full GitHub Actions CI/CD to VPS `45.127.35.244`.
|
**Goal:** Containerize TeleUploader using Bun, configure Traefik labels for routing `upload.asepharyana.my.id`, and set up full GitHub Actions CI/CD to VPS `45.127.35.244`.
|
||||||
|
|
||||||
**Architecture:** Use a multi-stage `Dockerfile` with Bun to bundle and run the application. Serve via `docker-compose.yml` linking to external Traefik network `app-shared-net`. Deploy via GitHub Action workflow SSH using GitHub secrets for secure configuration.
|
**Architecture:** Use a multi-stage `Dockerfile` with Bun to bundle and run the application. Serve via `docker-compose.yml` linking to external Traefik network `app-shared-net`. Deploy via GitHub Action workflow SSH using GitHub secrets for secure configuration.
|
||||||
|
|
||||||
@@ -111,7 +111,7 @@ services:
|
|||||||
- app-shared-net
|
- app-shared-net
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.teleuploader.rule=Host(`upload.asepharyana.tech`)"
|
- "traefik.http.routers.teleuploader.rule=Host(`upload.asepharyana.my.id`)"
|
||||||
- "traefik.http.routers.teleuploader.entrypoints=websecure"
|
- "traefik.http.routers.teleuploader.entrypoints=websecure"
|
||||||
- "traefik.http.routers.teleuploader.tls=true"
|
- "traefik.http.routers.teleuploader.tls=true"
|
||||||
- "traefik.http.routers.teleuploader.tls.certresolver=letsencrypt"
|
- "traefik.http.routers.teleuploader.tls.certresolver=letsencrypt"
|
||||||
@@ -230,7 +230,7 @@ jobs:
|
|||||||
- app-shared-net
|
- app-shared-net
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.teleuploader.rule=Host(`upload.asepharyana.tech`)"
|
- "traefik.http.routers.teleuploader.rule=Host(`upload.asepharyana.my.id`)"
|
||||||
- "traefik.http.routers.teleuploader.entrypoints=websecure"
|
- "traefik.http.routers.teleuploader.entrypoints=websecure"
|
||||||
- "traefik.http.routers.teleuploader.tls=true"
|
- "traefik.http.routers.teleuploader.tls=true"
|
||||||
- "traefik.http.routers.teleuploader.tls.certresolver=letsencrypt"
|
- "traefik.http.routers.teleuploader.tls.certresolver=letsencrypt"
|
||||||
|
|||||||
@@ -35,7 +35,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`
|
4. Bot extracts `telegram_file_id`, `telegram_file_unique_id`, `storage_message_id`
|
||||||
5. Bot generates `public_id` using nanoid
|
5. Bot generates `public_id` using nanoid
|
||||||
6. Bot saves metadata to PostgreSQL
|
6. Bot saves metadata to PostgreSQL
|
||||||
7. Bot replies with download link: `https://tele.asepharyana.tech/f/{public_id}`
|
7. Bot replies with download link: `https://tele.asepharyana.my.id/f/{public_id}`
|
||||||
|
|
||||||
#### Upload via HTTP API
|
#### Upload via HTTP API
|
||||||
1. Client POSTs to `/api/upload` with file (multipart or base64)
|
1. Client POSTs to `/api/upload` with file (multipart or base64)
|
||||||
@@ -115,7 +115,7 @@ fileName: optional_filename.ext
|
|||||||
"size_bytes": 1024000,
|
"size_bytes": 1024000,
|
||||||
"file_type": "document",
|
"file_type": "document",
|
||||||
"created_at": "2026-05-17T23:42:19Z",
|
"created_at": "2026-05-17T23:42:19Z",
|
||||||
"download_url": "https://tele.asepharyana.tech/f/abc123xyz"
|
"download_url": "https://tele.asepharyana.my.id/f/abc123xyz"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -212,7 +212,7 @@ schema.sql
|
|||||||
```
|
```
|
||||||
BOT_TOKEN=<telegram_bot_token>
|
BOT_TOKEN=<telegram_bot_token>
|
||||||
STORAGE_CHANNEL_ID=<private_channel_id>
|
STORAGE_CHANNEL_ID=<private_channel_id>
|
||||||
BASE_URL=https://tele.asepharyana.tech
|
BASE_URL=https://tele.asepharyana.my.id
|
||||||
DATABASE_URL=postgresql://user:password@localhost:5432/telegram_uploader
|
DATABASE_URL=postgresql://user:password@localhost:5432/telegram_uploader
|
||||||
PORT=3000
|
PORT=3000
|
||||||
NODE_ENV=production
|
NODE_ENV=production
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ services:
|
|||||||
- app-shared-net
|
- app-shared-net
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.teleuploader.rule=Host(`upload.asepharyana.tech`)"
|
- "traefik.http.routers.teleuploader.rule=Host(`upload.asepharyana.my.id`)"
|
||||||
- "traefik.http.routers.teleuploader.entrypoints=websecure"
|
- "traefik.http.routers.teleuploader.entrypoints=websecure"
|
||||||
- "traefik.http.routers.teleuploader.tls=true"
|
- "traefik.http.routers.teleuploader.tls=true"
|
||||||
- "traefik.http.routers.teleuploader.tls.certresolver=letsencrypt"
|
- "traefik.http.routers.teleuploader.tls.certresolver=letsencrypt"
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ import logger from '../src/utils/logger';
|
|||||||
// Mock environment
|
// Mock environment
|
||||||
process.env.BOT_TOKEN = process.env.BOT_TOKEN || '123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ';
|
process.env.BOT_TOKEN = process.env.BOT_TOKEN || '123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ';
|
||||||
process.env.STORAGE_CHANNEL_ID = process.env.STORAGE_CHANNEL_ID || '-1001234567890';
|
process.env.STORAGE_CHANNEL_ID = process.env.STORAGE_CHANNEL_ID || '-1001234567890';
|
||||||
process.env.BASE_URL = process.env.BASE_URL || 'https://tele.asepharyana.tech';
|
process.env.BASE_URL = process.env.BASE_URL || 'https://tele.asepharyana.my.id';
|
||||||
|
|
||||||
type BotTestContext = {
|
type BotTestContext = {
|
||||||
message: TelegramMediaMessage;
|
message: TelegramMediaMessage;
|
||||||
|
|||||||
Reference in New Issue
Block a user