chore: migrate domain asepharyana.tech to asepharyana.my.id

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
MythEclipse
2026-06-06 12:39:26 +07:00
co-authored by Claude Opus 4.8
parent 2a833d3908
commit 50176e5764
8 changed files with 13 additions and 13 deletions
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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;