本教程介绍如何在 Linux 服务器上,利用 Docker 快速部署一个支持多用户、自带 Web 界面、且能自动保存视频到本地的下载器。

一、 环境准备

在开始之前,请确保你的服务器已安装 DockerDocker Compose

# 创建项目专用目录
mkdir -p /root/douyin-api/download
cd /root/douyin-api

二、 核心配置文件

/root/douyin-api 目录下创建两个核心文件。

1. 编写 config.yaml

这是程序的“大脑”,决定了接口端口和下载行为。 注意: 我们将端口设为 18080 以避开 80 端口被封锁的风险。(文章结尾有附件,直接下载即可)

# Web
Web:
  # APP Switch
  PyWebIO_Enable: true    # Enable APP | 启用APP

  # APP Information
  Domain: https://douyin.wtf    # Web domain | Web域名

  # APP Configuration
  PyWebIO_Theme: minty    # PyWebIO theme | PyWebIO主题
  Max_Take_URLs: 30    # Maximum number of URLs that can be taken at a time | 一次最多可以取得的URL数量


  # Web Information
  Tab_Title: Douyin_TikTok_Download_API    # Web title | Web标题
  Description: Douyin_TikTok_Download_API is a free open-source API service for Douyin/TikTok. It provides a simple, fast, and stable API for developers to develop applications based on Douyin/TikTok.    # Web description | Web描述
  Favicon: https://raw.githubusercontent.com/Evil0ctal/Douyin_TikTok_Download_API/main/logo/logo192.png    # Web favicon | Web图标

  # Fun Configuration
  Easter_Egg: true    # Enable Easter Egg | 启用彩蛋
  Live2D_Enable: true
  Live2D_JS: https://fastly.jsdelivr.net/gh/TikHubIO/TikHub_live2d@latest/autoload.js

# API
API:
  # Network Configuration
  Host_IP: 0.0.0.0    # default IP | 默认IP
  Host_Port: 18080    # default port is 80 | 默认端口为80
  Docs_URL: /docs    # API documentation URL | API文档URL
  Redoc_URL: /redoc    # API documentation URL | API文档URL

  # API Information
  Version: V4.1.2    # API version | API版本
  Update_Time: 2025/03/16    # API update time | API更新时间
  Environment: Demo    # API environment | API环境

  # Download Configuration
  Download_Switch: true    # Enable download function | 启用下载功能

  # File Configuration
  Download_Path: "./download"    # Default download directory | 默认下载目录
  Download_File_Prefix: "douyin.wtf_"    # Default download file prefix | 默认下载文件前缀


# iOS Shortcut
iOS_Shortcut:
  iOS_Shortcut_Version: 7.0
  iOS_Shortcut_Update_Time: 2024/07/05
  iOS_Shortcut_Link: https://www.icloud.com/shortcuts/06f891a026df40cfa967a907feaea632
  iOS_Shortcut_Link_EN: https://www.icloud.com/shortcuts/06f891a026df40cfa967a907feaea632
  iOS_Shortcut_Update_Note: 重构了快捷指令以兼容TikHub API。
  iOS_Shortcut_Update_Note_EN: Refactored the shortcut to be compatible with the TikHub API.



# 代理(可选)
Proxy:
  Proxy_Switch: false  # 暂时设为 false,
  Http_Proxy: ""
  Https_Proxy: ""

# 建议:如果后续 TikTok 无法解析,去注册一个 TikHub Token 填在这里
TikHub:
  Token: ""

2. 编写 docker-compose.yml

配置容器的镜像、路径映射和网络模式。(文章结尾有附件,直接下载即可)

version: '3.9'
services:
  douyin_tiktok_download_api:
    image: evil0ctal/douyin_tiktok_download_api
    container_name: douyin_tiktok_download_api
    restart: always
    network_mode: "host" # 使用主机模式减少网络损耗
    volumes:
      - ./config.yaml:/app/config.yaml # 映射配置文件
      - ./download:/app/download       # 映射下载目录到宿主机

三、 部署与运行

执行以下命令启动服务:

# 启动容器
docker compose up -d

# 查看运行状态
docker ps

# 查看实时日志(报错排查必看)
docker logs -f douyin_tiktok_download_api

四、 安全加固与反向代理(1Panel 篇)

为了防止流量被他人盗用,建议使用 1Panel 面板进行反代并开启访问验证。

  1. 创建反向代理

    • 在 1Panel “网站”菜单创建站点。

    • 代理地址填:http://127.0.0.1:18080

  2. 配置 HTTPS

    • 使用 1Panel 绑定的 Cloudflare DNS 账户申请 SSL 证书。

  3. 开启身份验证(Basic Auth)

    • 在网站设置中开启“网站访问验证”。

    • 设置用户名和密码。这是保护你流量资产的关键。

五、 自动化运维建议

1. 自动清理过期视频

由于开启了本地保存,视频会占用硬盘空间。建议在 1Panel 的“计划任务”里添加以下 Shell 脚本,每天执行一次,自动删除 3 天前的视频:

#!/bin/bash
# 删除3天前的视频文件
find /root/douyin-api/download -mtime +3 -name "*.mp4" -exec rm -rf {} \;

2. 多用户使用说明

该部署方案支持多用户同时登录使用。由于 PyWebIO 框架特性,每个用户的会话是相互独立的,解析进度和操作互不干扰。


结语:通过以上步骤,你就拥有了一个属于自己的无水印视频下载站。

自用配置文件附件:

config.yaml

docker-compose.yml