diff --git a/.env.example b/.env.example index 1b91890..7719a69 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,7 @@ BOT_TOKEN=isi_token_bot_telegram ADDITIONAL_BOT_TOKENS=token_cadangan_1,token_cadangan_2,token_cadangan_3 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 PORT=3000 NODE_ENV=production diff --git a/README.md b/README.md index d56b321..67f125d 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ bun run start # Production mode ## FAQ **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. ## Testing diff --git a/docker-compose.yml b/docker-compose.yml index bc810b3..e6ff42b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -46,7 +46,7 @@ services: - app-shared-net labels: - "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.tls=true" - "traefik.http.routers.teleuploader.tls.certresolver=cloudflare" diff --git a/docs/superpowers/plans/2026-05-17-telegram-uploader-backend-plan.md b/docs/superpowers/plans/2026-05-17-telegram-uploader-backend-plan.md index 790c476..a09c101 100644 --- a/docs/superpowers/plans/2026-05-17-telegram-uploader-backend-plan.md +++ b/docs/superpowers/plans/2026-05-17-telegram-uploader-backend-plan.md @@ -75,7 +75,7 @@ schema.sql ```bash BOT_TOKEN=isi_token_bot_telegram 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 PORT=3000 NODE_ENV=production @@ -148,7 +148,7 @@ bun run start # Production mode ## FAQ **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. ## Testing diff --git a/docs/superpowers/plans/2026-05-18-deploy-plan.md b/docs/superpowers/plans/2026-05-18-deploy-plan.md index 2d823ad..b61f5e3 100644 --- a/docs/superpowers/plans/2026-05-18-deploy-plan.md +++ b/docs/superpowers/plans/2026-05-18-deploy-plan.md @@ -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. -**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. @@ -111,7 +111,7 @@ services: - app-shared-net labels: - "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.tls=true" - "traefik.http.routers.teleuploader.tls.certresolver=letsencrypt" @@ -230,7 +230,7 @@ jobs: - app-shared-net labels: - "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.tls=true" - "traefik.http.routers.teleuploader.tls.certresolver=letsencrypt" diff --git a/docs/superpowers/specs/2026-05-17-telegram-uploader-backend-design.md b/docs/superpowers/specs/2026-05-17-telegram-uploader-backend-design.md index 120bd22..9c232d2 100644 --- a/docs/superpowers/specs/2026-05-17-telegram-uploader-backend-design.md +++ b/docs/superpowers/specs/2026-05-17-telegram-uploader-backend-design.md @@ -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` 5. Bot generates `public_id` using nanoid 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 1. Client POSTs to `/api/upload` with file (multipart or base64) @@ -115,7 +115,7 @@ fileName: optional_filename.ext "size_bytes": 1024000, "file_type": "document", "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= STORAGE_CHANNEL_ID= -BASE_URL=https://tele.asepharyana.tech +BASE_URL=https://tele.asepharyana.my.id DATABASE_URL=postgresql://user:password@localhost:5432/telegram_uploader PORT=3000 NODE_ENV=production diff --git a/docs/superpowers/specs/2026-05-18-deploy-design.md b/docs/superpowers/specs/2026-05-18-deploy-design.md index 2eff26b..449be36 100644 --- a/docs/superpowers/specs/2026-05-18-deploy-design.md +++ b/docs/superpowers/specs/2026-05-18-deploy-design.md @@ -45,7 +45,7 @@ services: - app-shared-net labels: - "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.tls=true" - "traefik.http.routers.teleuploader.tls.certresolver=letsencrypt" diff --git a/test/bot.test.ts b/test/bot.test.ts index 470f0ad..8382f03 100644 --- a/test/bot.test.ts +++ b/test/bot.test.ts @@ -5,7 +5,7 @@ import logger from '../src/utils/logger'; // Mock environment process.env.BOT_TOKEN = process.env.BOT_TOKEN || '123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ'; 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 = { message: TelegramMediaMessage;