KV-Tube: Go + Next.js YouTube-style app packaged as Docker image.
916
KV-Tube la ung dung xem YouTube tu host rieng, gom backend Go, frontend Next.js, ung dung desktop Electron va wrapper mobile Capacitor.
| Thanh phan | Cong nghe | Thu muc | Cong mac dinh |
|---|---|---|---|
| Backend API | Go, Gin, SQLite | backend | 8080 |
| Frontend web | Next.js | frontend | 3000 |
| Desktop app | Electron | frontend/electron | phu thuoc URL web |
| Android app | Capacitor Android | frontend/android | phu thuoc URL web |
| Docker app | Go + Next.js + supervisord | root repo | 5011, 8981 |
Luu y: cac file build ben duoi la artifact tao ra sau khi build trong workspace/release, khong nen commit truc tiep vao source Git vi dung luong lon. Khi phat hanh chinh thuc, upload cac file nay vao GitHub Releases roi cap nhat link release tuong ung.
| Nen tang | File tai | Ghi chu |
|---|---|---|
| Android APK | frontend/android/app/build/outputs/apk/debug/app-debug.apk | Debug APK, load web tu http://103.116.38.112:5011 |
| macOS Apple Silicon | frontend/dist-desktop/KV-Tube-0.1.0-arm64.dmg | Ban self-contained, chay backend va web local trong app |
| macOS Intel | frontend/dist-desktop/KV-Tube-0.1.0.dmg | Ban self-contained, chay backend va web local trong app |
| Windows | frontend/dist-desktop/KV-Tube Setup 0.1.0.exe | Neu co artifact sau khi build Windows |
| Linux | frontend/dist-desktop/KV-Tube-0.1.0.AppImage | Neu co artifact sau khi build Linux |
| Docker | kechettreo/tubepre:latest | Image Docker Hub dang dung cho VPS |
KVTUBE_ANDROID_SERVER_URL, mac dinh http://103.116.38.112:5011.NEXT_PUBLIC_API_BASE_URL, mac dinh khi build Docker/APK la http://103.116.38.112:8981.http://103.116.38.112:5011.http://103.116.38.112:5011 va backend API o http://103.116.38.112:8981.Neu chi muon chay nhanh app web, dung Docker la cach don gian nhat vi image da cai san FFmpeg va yt-dlp.
winget install Gyan.FFmpeg
winget install yt-dlp.yt-dlp
Clone source:
git clone https://github.com/aiautotool/tubepre.git
cd kv-tube
xcode-select --install
brew install node@20 go ffmpeg yt-dlp
Clone source:
git clone https://github.com/aiautotool/tubepre.git
cd kv-tube
sudo apt update
sudo apt install -y git curl ffmpeg
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
Clone source:
git clone https://github.com/aiautotool/tubepre.git
cd kv-tube
Docker Hub:
kechettreo/tubepre:latestFile docker-compose.yml hien tai da cau hinh san image kechettreo/tubepre:latest.
Chay bang Docker Compose:
mkdir -p data
docker compose pull
docker compose up -d
Mo app:
Xem log:
docker compose logs -f
Dung app:
docker compose down
Chay nhanh bang docker run neu khong dung Compose:
mkdir -p data
docker pull kechettreo/tubepre:latest
docker run -d \
--name kv-tube \
--restart unless-stopped \
-p 5011:3000 \
-p 8981:8080 \
-v "$PWD/data:/app/data" \
-e KVTUBE_DATA_DIR=/app/data \
-e GIN_MODE=release \
-e NODE_ENV=production \
-e CORS_ALLOWED_ORIGINS=http://localhost:5011,http://103.116.38.112:5011 \
kechettreo/tubepre:latest
Cap nhat container len image moi nhat:
docker pull kechettreo/tubepre:latest
docker compose up -d --force-recreate
Neu muon build image local thay vi pull image co san, sua docker-compose.yml: comment dong image: kechettreo/tubepre:latest, bo comment khoi build, roi chay:
docker compose up -d --build
Can mo 2 terminal.
Terminal 1, chay backend:
cd backend
go mod download
go run main.go
Terminal 2, chay frontend:
cd frontend
npm install
npm run dev
Frontend se proxy cac request /api/* sang backend qua bien NEXT_PUBLIC_API_BASE_URL. Mac dinh la http://localhost:8080.
Neu backend chay cong khac:
cd frontend
NEXT_PUBLIC_API_BASE_URL=http://localhost:8981 npm run dev
Tren Windows PowerShell:
cd frontend
$env:NEXT_PUBLIC_API_BASE_URL="http://localhost:8981"
npm run dev
cd frontend
npm install
npm run build
npm run start
App Next.js production chay o http://localhost:3000.
macOS/Linux:
cd backend
go mod download
go build -o kv-tube .
./kv-tube
Windows PowerShell:
cd backend
go mod download
go build -o kv-tube.exe .
.\kv-tube.exe
Desktop app la Electron app. Ban macOS hien tai dong goi self-contained: app tu chay backend Go local, Next.js local va cac tool can thiet trong app bundle. Neu dat KVTUBE_DESKTOP_SERVER_URL, Electron se load URL do thay vi server bundled, chi nen dung cho debug.
Build tren may macOS.
cd frontend
npm install
npm run build
npm run desktop:mac
Build rieng Intel:
npm run desktop:mac:intel
Build rieng Apple Silicon:
npm run desktop:mac:apple
File .dmg se nam trong frontend/dist-desktop.
Build tren Windows la cach on dinh nhat.
PowerShell:
cd frontend
npm install
$env:KVTUBE_DESKTOP_SERVER_URL="https://your-kv-tube.example.com"
npm run desktop:win
File cai dat .exe se nam trong frontend/dist-desktop.
Du an hien chua co script build Electron rieng cho Linux trong frontend/package.json. Tren Linux, nen chay ban web bang Docker hoac build web/backend truc tiep.
Neu muon them goi desktop Linux, co the bo sung target AppImage, deb hoac rpm vao cau hinh build cua frontend/package.json, sau do them script Electron Builder tuong ung.
Yeu cau:
Android app la Capacitor wrapper va se load URL web duoc cau hinh bang KVTUBE_ANDROID_SERVER_URL. Mac dinh hien tai la http://103.116.38.112:5011.
Sync va mo Android Studio:
cd frontend
npm install
KVTUBE_ANDROID_SERVER_URL=https://your-kv-tube.example.com npm run android:sync
npm run android:open
Tren Windows PowerShell:
cd frontend
npm install
$env:KVTUBE_ANDROID_SERVER_URL="https://your-kv-tube.example.com"
npm run android:sync
npm run android:open
Build APK hoac AAB trong Android Studio bang menu Build.
Yeu cau:
Du an co thu muc frontend/ios, nhung package.json chua co script ios:sync va ios:open. Co the dung Capacitor CLI truc tiep:
cd frontend
npm install
KVTUBE_ANDROID_SERVER_URL=https://your-kv-tube.example.com npx cap sync ios
npx cap open ios
Sau khi Xcode mo project, chon team/signing va build tu Xcode.
Luu y: bien URL trong capacitor.config.ts dang ten KVTUBE_ANDROID_SERVER_URL, nen iOS cung se dung bien nay neu chay Capacitor CLI truc tiep.
| Bien | Mac dinh | Mo ta |
|---|---|---|
PORT | 8080 | Cong backend Go |
KVTUBE_DATA_DIR | ./data hoac /app/data | Thu muc SQLite va du lieu |
GIN_MODE | release | Che do Gin |
CORS_ALLOWED_ORIGINS | tuy moi truong | Danh sach origin duoc phep goi API |
NEXT_PUBLIC_API_BASE_URL | rong | API base public cho Android runtime; desktop/web mac dinh dung /api same-origin |
KVTUBE_DESKTOP_SERVER_URL | rong | Tuy chon debug: URL web ma app desktop load thay cho server bundled |
KVTUBE_ANDROID_SERVER_URL | http://103.116.38.112:5011 | URL web ma app mobile load |
AIAUTOTOOL_BASE_URL | https://api9.aiautotool.com/v1 | Base URL AI API trong Docker Compose |
AIAUTOTOOL_MODEL | cx/gpt-5.5 | Model AI trong Docker Compose |
AIAUTOTOOL_API_KEY | rong | API key neu dung tinh nang AI |
.
├── backend/ # Go API, SQLite models, services
├── frontend/ # Next.js, Electron, Capacitor
├── data/ # Du lieu runtime local
├── docker-compose.yml # Chay app bang Docker Compose
├── Dockerfile # Build image Go + Next.js
└── supervisord.conf # Quan ly process trong container
yt-dlp: command not found: cai yt-dlp hoac chay bang Docker.ffmpeg: command not found: cai FFmpeg hoac chay bang Docker.CORS_ALLOWED_ORIGINS de them domain frontend.KVTUBE_DESKTOP_SERVER_URL hoac KVTUBE_ANDROID_SERVER_URL, sau do build/sync lai.docker-compose.yml hoac doi PORT khi chay backend.Du an su dung MIT License. Xem file LICENSE.
Content type
Image
Digest
sha256:c3791a9b0…
Size
182.1 MB
Last updated
4 months ago
docker pull kechettreo/tubepre