Update: Modern glass UI, timer fix, Instagram/TikTok cookies, Docker support
This commit is contained in:
parent
8428d7ed42
commit
dc047c2412
45 changed files with 0 additions and 396 deletions
13
app.log
13
app.log
|
|
@ -1,13 +0,0 @@
|
||||||
{"level":"info","time":"2026-04-04T08:21:08+07:00","message":"GET /"}
|
|
||||||
{"level":"info","time":"2026-04-04T08:21:08+07:00","message":"GET /api/download"}
|
|
||||||
{"level":"info","time":"2026-04-04T08:21:08+07:00","message":"GET /download"}
|
|
||||||
{"level":"info","time":"2026-04-04T08:21:08+07:00","message":"GET /fetch"}
|
|
||||||
{"level":"info","time":"2026-04-04T08:21:08+07:00","message":"GET /static"}
|
|
||||||
{"level":"info","time":"2026-04-04T08:21:08+07:00","message":"GET /static/*"}
|
|
||||||
{"level":"info","time":"2026-04-04T08:21:09+07:00","message":"yt-dlp version: 2026.03.17"}
|
|
||||||
{"level":"info","time":"2026-04-04T08:21:09+07:00","message":"Updateing yt-dlp to nightly"}
|
|
||||||
Requirement already satisfied: yt-dlp in /Library/Frameworks/Python.framework/Versions/3.14/lib/python3.14/site-packages (2026.3.17)
|
|
||||||
|
|
||||||
[notice] A new release of pip is available: 25.3 -> 26.0.1
|
|
||||||
[notice] To update, run: pip3 install --upgrade pip
|
|
||||||
{"level":"info","time":"2026-04-04T08:21:10+07:00","message":"Done updating yt-dlp. Version=2026.03.17"}
|
|
||||||
|
|
@ -1,367 +0,0 @@
|
||||||
# Forgejo CI/CD Setup Guide
|
|
||||||
|
|
||||||
This guide explains how to set up Forgejo with an integrated runner for automated Docker image builds.
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
|
|
||||||
- **Forgejo** runs on your NAS at `http://100.89.182.37:3050`
|
|
||||||
- **Forgejo Runner** builds Docker images automatically when code is pushed
|
|
||||||
- **Docker Registry** stores the built images (optional)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- Docker and Docker Compose installed on your NAS
|
|
||||||
- SSH access to your NAS (port 2212)
|
|
||||||
- A Docker network already created: `kv-tube_default`
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker network create kv-tube_default
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Part 1: Docker Compose File
|
|
||||||
|
|
||||||
Create `docker-compose.forgejo.yml`:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
services:
|
|
||||||
forgejo:
|
|
||||||
image: codeberg.org/forgejo/forgejo:7.0.16
|
|
||||||
container_name: forgejo
|
|
||||||
environment:
|
|
||||||
- USER_UID=1026
|
|
||||||
- USER_GID=100
|
|
||||||
- GITEA__database__DB_TYPE=sqlite3
|
|
||||||
- TZ=Asia/Ho_Chi_Minh
|
|
||||||
- GITEA__actions__ENABLED=true
|
|
||||||
- INSTALL_LOCK=true
|
|
||||||
- FORGEJO__server__ROOT_URL=http://100.89.182.37:3050/
|
|
||||||
restart: always
|
|
||||||
volumes:
|
|
||||||
- ./forgejo-data:/data
|
|
||||||
ports:
|
|
||||||
- "3050:3000"
|
|
||||||
- "2222:22"
|
|
||||||
networks:
|
|
||||||
- kv-tube_internal
|
|
||||||
|
|
||||||
forgejo-runner:
|
|
||||||
image: code.forgejo.org/forgejo/runner:6.0.1
|
|
||||||
container_name: forgejo_runner
|
|
||||||
restart: always
|
|
||||||
user: "0:0"
|
|
||||||
privileged: true
|
|
||||||
depends_on:
|
|
||||||
- forgejo
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- ./forgejo-runner-data:/data
|
|
||||||
entrypoint:
|
|
||||||
- sh
|
|
||||||
- -c
|
|
||||||
- |
|
|
||||||
apk add --no-cache docker-cli
|
|
||||||
if [ ! -f /data/.runner ]; then
|
|
||||||
forgejo-runner register --no-interactive \
|
|
||||||
--instance http://forgejo:3000 \
|
|
||||||
--token YOUR_RUNNER_TOKEN \
|
|
||||||
--name synology-runner \
|
|
||||||
--labels ubuntu-latest,ubuntu-22.04,docker:host
|
|
||||||
fi
|
|
||||||
forgejo-runner daemon
|
|
||||||
environment:
|
|
||||||
- TZ=Asia/Ho_Chi_Minh
|
|
||||||
networks:
|
|
||||||
- kv-tube_internal
|
|
||||||
|
|
||||||
networks:
|
|
||||||
kv-tube_internal:
|
|
||||||
name: kv-tube_default
|
|
||||||
external: true
|
|
||||||
```
|
|
||||||
|
|
||||||
**Notes:**
|
|
||||||
- Replace `100.89.182.37` with your NAS IP
|
|
||||||
- Replace `YOUR_RUNNER_TOKEN` with the token you generate in Forgejo UI
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Part 2: Start Services
|
|
||||||
|
|
||||||
### 1. Create directories on NAS
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ssh -p 2212 superadmin@100.89.182.37
|
|
||||||
mkdir -p kv-tube/forgejo-data kv-tube/forgejo-runner-data
|
|
||||||
cd kv-tube
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Copy docker-compose.forgejo.yml to NAS
|
|
||||||
|
|
||||||
### 3. Start services
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker-compose -f docker-compose.forgejo.yml up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Part 3: Configure Forgejo
|
|
||||||
|
|
||||||
### 1. Initial Setup
|
|
||||||
|
|
||||||
1. Open **http://100.89.182.37:3050** in browser
|
|
||||||
2. Complete the initial setup:
|
|
||||||
- Database: **SQLite3**
|
|
||||||
- Administrator username and password
|
|
||||||
3. Login with your admin account
|
|
||||||
|
|
||||||
### 2. Enable Actions
|
|
||||||
|
|
||||||
Settings should already have `GITEA__actions__ENABLED=true` in the compose file.
|
|
||||||
|
|
||||||
### 3. Generate Runner Token
|
|
||||||
|
|
||||||
1. Go to **Settings** → **Actions** → **Runners**
|
|
||||||
2. Click **Generate Registration Token**
|
|
||||||
3. Copy the token and update `docker-compose.forgejo.yml`
|
|
||||||
4. Restart the runner:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker-compose -f docker-compose.forgejo.yml restart forgejo-runner
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. Create Repository
|
|
||||||
|
|
||||||
1. Click **+** → **New Repository**
|
|
||||||
2. Name it (e.g., `my-project`)
|
|
||||||
3. Click **Create Repository**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Part 4: Configure Git Remote
|
|
||||||
|
|
||||||
Add Forgejo as a remote:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git remote add forgejo http://100.89.182.37:3050/your_username/my-project.git
|
|
||||||
```
|
|
||||||
|
|
||||||
Or update existing remote:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git remote set-url forgejo http://username:TOKEN@100.89.182.37:3050/username/my-project.git
|
|
||||||
```
|
|
||||||
|
|
||||||
To generate an access token:
|
|
||||||
1. Go to **Settings** → **Applications** → **Tokens**
|
|
||||||
2. Click **Generate New Token**
|
|
||||||
3. Use the token in the remote URL
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Part 5: Create Workflow File
|
|
||||||
|
|
||||||
Create `.forgejo/workflows/docker-build.yml`:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
name: Build & Push Docker Image
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main, master]
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
run: |
|
|
||||||
apk add --no-cache git
|
|
||||||
cd /tmp
|
|
||||||
rm -rf my-project
|
|
||||||
git clone http://username:TOKEN@forgejo:3000/username/my-project.git
|
|
||||||
cd my-project
|
|
||||||
git checkout ${GITEA_SHA:-main}
|
|
||||||
|
|
||||||
- name: Build Docker Image
|
|
||||||
run: |
|
|
||||||
cd /tmp/my-project
|
|
||||||
SHA_SHORT=$(git rev-parse --short HEAD)
|
|
||||||
docker build --no-cache -t my-project:${SHA_SHORT} .
|
|
||||||
docker images | grep my-project
|
|
||||||
```
|
|
||||||
|
|
||||||
**Notes:**
|
|
||||||
- Replace `username` and `TOKEN` with your Forgejo credentials
|
|
||||||
- Replace `my-project` with your project name
|
|
||||||
- This workflow builds the image but does NOT push to external registry (use manual push below)
|
|
||||||
|
|
||||||
**Why no auto push?** The runner runs inside Docker on your NAS and may have network issues reaching external registries. The image is built and saved locally - you can push manually or set up a local registry.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Part 6: Push to Trigger Build
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git add .forgejo/workflows/docker-build.yml
|
|
||||||
git commit -m "Add CI/CD workflow"
|
|
||||||
git push forgejo main
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Part 7: Monitor Workflow
|
|
||||||
|
|
||||||
1. Go to **http://100.89.182.37:3050/username/my-project/actions**
|
|
||||||
2. Click on the workflow run to see logs
|
|
||||||
3. Verify the image is built successfully
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Run the Built Image
|
|
||||||
|
|
||||||
On your NAS:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# List built images
|
|
||||||
docker images | grep my-project
|
|
||||||
|
|
||||||
# Run the container
|
|
||||||
docker run -d -p 3000:3000 -p 8080:8080 my-project:<tag>
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Push to External Registry (Manual)
|
|
||||||
|
|
||||||
If the CI/CD cannot push to your external registry (e.g., `git.khoavo.myds.me`) due to network issues, you can manually push from your NAS:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 1. Find the built image tag
|
|
||||||
docker images | grep my-project
|
|
||||||
|
|
||||||
# 2. Tag for your registry
|
|
||||||
docker tag my-project:<commit-sha> git.khoavo.myds.me/username/my-project:<tag>
|
|
||||||
|
|
||||||
# 3. Push to registry
|
|
||||||
docker push git.khoavo.myds.me/username/my-project:<tag>
|
|
||||||
```
|
|
||||||
|
|
||||||
**Example:**
|
|
||||||
```bash
|
|
||||||
# List images
|
|
||||||
docker images | grep kv-tube
|
|
||||||
|
|
||||||
# Tag
|
|
||||||
docker tag kv-tube:abc1234 git.khoavo.myds.me/vndangkhoa/kv-tube:v11
|
|
||||||
|
|
||||||
# Push
|
|
||||||
docker push git.khoavo.myds.me/vndangkhoa/kv-tube:v11
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Optional: Set Up Docker Registry
|
|
||||||
|
|
||||||
If you want to push images to a registry:
|
|
||||||
|
|
||||||
### 1. Start Registry Container
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker run -d \
|
|
||||||
--network kv-tube_default \
|
|
||||||
--name registry \
|
|
||||||
-p 5180:5000 \
|
|
||||||
-v registry-data:/var/lib/registry \
|
|
||||||
registry:2
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Configure Insecure Registry (on NAS)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
echo '{"insecure-registries":["172.27.0.3:5000"]}' | sudo tee /etc/docker/daemon.json
|
|
||||||
# Restart Docker daemon
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Update Workflow to Push
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- name: Build and Push
|
|
||||||
run: |
|
|
||||||
cd /tmp/my-project
|
|
||||||
SHA_SHORT=$(git rev-parse --short HEAD)
|
|
||||||
docker build --no-cache -t my-project:${SHA_SHORT} .
|
|
||||||
docker tag my-project:${SHA_SHORT} 172.27.0.3:5000/username/my-project:${SHA_SHORT}
|
|
||||||
docker push 172.27.0.3:5000/username/my-project:${SHA_SHORT}
|
|
||||||
```
|
|
||||||
|
|
||||||
**Note:** Getting Docker to trust the registry requires proper TLS certificates or daemon configuration.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
### Runner not picking up jobs
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Check runner logs
|
|
||||||
docker logs forgejo_runner
|
|
||||||
|
|
||||||
# Restart runner
|
|
||||||
docker-compose -f docker-compose.forgejo.yml restart forgejo_runner
|
|
||||||
```
|
|
||||||
|
|
||||||
### "Could not resolve host: nas"
|
|
||||||
|
|
||||||
In workflow, use `forgejo:3000` (internal Docker network) instead of `nas:3050`
|
|
||||||
|
|
||||||
### Docker not available in runner
|
|
||||||
|
|
||||||
Ensure the runner has:
|
|
||||||
- `privileged: true` in compose
|
|
||||||
- `docker-cli` installed in entrypoint
|
|
||||||
- `/var/run/docker.sock` mounted
|
|
||||||
|
|
||||||
### Push fails with authentication error
|
|
||||||
|
|
||||||
Generate a new access token in **Settings** → **Applications** → **Tokens** and update both the git remote URL and the workflow file.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## File Structure
|
|
||||||
|
|
||||||
```
|
|
||||||
my-project/
|
|
||||||
├── .forgejo/
|
|
||||||
│ └── workflows/
|
|
||||||
│ └── docker-build.yml
|
|
||||||
├── docker-compose.forgejo.yml
|
|
||||||
└── (your project files)
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Useful Commands
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Start Forgejo + Runner
|
|
||||||
docker-compose -f docker-compose.forgejo.yml up -d
|
|
||||||
|
|
||||||
# View logs
|
|
||||||
docker logs forgejo
|
|
||||||
docker logs forgejo_runner
|
|
||||||
|
|
||||||
# Restart runner
|
|
||||||
docker-compose -f docker-compose.forgejo.yml restart forgejo-runner
|
|
||||||
|
|
||||||
# Stop services
|
|
||||||
docker-compose -f docker-compose.forgejo.yml down
|
|
||||||
|
|
||||||
# Check running containers
|
|
||||||
docker ps
|
|
||||||
```
|
|
||||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
||||||
{"id": "RDLH1NaKHuBLE", "title": "Mix - Anh Vội Quên Remix - DJ HYENA - Nguyễn Thạc Bảo Ngọc | Ta Đã Từng Chung Điểm Dừng Mà Sao Không Xứng", "_type": "playlist", "webpage_url": "https://www.youtube.com/watch?v=LH1NaKHuBLE&list=RDLH1NaKHuBLE&start_radio=1", "webpage_url_basename": "watch", "webpage_url_domain": "youtube.com", "extractor": "youtube:tab", "extractor_key": "YoutubeTab", "playlist_count": 233, "epoch": 1775263815, "_version": {"version": "2026.03.17", "release_git_head": "04d6974f502bbdfaed72c624344f262e30ad9708", "repository": "yt-dlp/yt-dlp"}}
|
|
||||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
BIN
test.mp4
BIN
test.mp4
Binary file not shown.
Loading…
Reference in a new issue