Skip to content

ChanningHe/tunasync-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TuneSync Docker

本项目是基于Docker的镜像同步工具,支持自定义用户权限、定时任务和并行下载功能。

项目来源

主要特性

  • 支持自定义UID/GID,解决权限问题
  • 集成cron功能,单容器即可实现定时自动同步
  • 使用aria2c替换默认下载器,支持多线程并行下载,显著提升同步速度
  • 保持与原项目的兼容性,可直接替换使用
  • 支持两种配置方式:环境变量配置和mirrors.list文件配置

配置方式

方式一:环境变量配置

使用APTSYNC_URL和APTSYNC_DISTS环境变量配置,适合单一镜像源的场景。

services:
  aptsync-proxmox:
    environment:
      - PUID=[CHANGE-UID]
      - PGID=[CHANGE-GID]
      - APTSYNC_UNLINK=1
      - APTSYNC_URL=http://download.proxmox.com/debian/pve
      - APTSYNC_DISTS=bookworm|pve-no-subscription|amd64|
      - CRON=20 23,6,12,20 * * *
      - TO=/data
    volumes:
      - ./mirrors-data/proxmox:/data
      - ./mirrors-logs/aptsync-proxmox:/log
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    image: channinghe/apt-sync:aria2c

  aptsync-tailscale:
    environment:
      - PUID=[CHANGE-UID]
      - PGID=[CHANGE-GID]
      - APTSYNC_UNLINK=1
      - APTSYNC_URL=https://pkgs.tailscale.com/stable/debian
      - APTSYNC_DISTS=bookworm|main|arm64 amd64|:bullseye|main|arm64 amd64|
      - CRON=20 23,6,12,18 * * *
      - TO=/data
    volumes:
      - ./mirrors-data/tailscale:/data
      - ./mirrors-logs/tailscale:/log
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    image: channinghe/apt-sync:aria2c

  aptsync-debian:
    environment:
      - PUID=[CHANGE-UID]
      - PGID=[CHANGE-GID]
      - APTSYNC_UNLINK=1
      - APTSYNC_URL=http://deb.debian.org/debian
      - APTSYNC_DISTS=bookworm|main contrib non-free non-free-firmware|amd64
        arm64|:bullseye|main contrib non-free|amd64 arm64|
      - CRON="0 0,6,12,18 * * *"
      - TO=/data
      # 下载线程数
      - PARALLEL_DOWNLOADS=8
    volumes:
      - ./mirrors-data/debian:/data
      - ./mirrors-logs/aptsync-debian:/log
    image: channinghe/apt-sync:aria2c
networks: {}

方式二:mirrors.list文件配置

使用标准apt-mirror格式的配置文件,支持多个镜像源,更灵活强大。

services:
  aptsync-multi:
    environment:
      - PUID=[CHANGE-UID]
      - PGID=[CHANGE-GID]
      - APTSYNC_UNLINK=1
      - CRON="0 2 * * *"
      - TO=/data
      - MIRRORS_LIST=/config/mirrors.list
      - DEFAULT_ARCH=amd64,arm64
      - PARALLEL_DOWNLOADS=8
    volumes:
      - ./mirrors-data:/data
      - ./mirrors-logs:/log
      - ./config:/config:ro
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    image: channinghe/apt-sync:aria2c

mirrors.list文件内容示例

# Debian官方源
deb https://ftp.jaist.ac.jp/debian/ bullseye main contrib non-free
deb https://ftp.jaist.ac.jp/debian/ bullseye-updates main contrib non-free
deb https://ftp.jaist.ac.jp/debian/ bullseye-backports main contrib non-free

# Proxmox源
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription

# Docker源 (架构特定)
deb-amd64 https://download.docker.com/linux/debian bullseye stable
deb-amd64 https://download.docker.com/linux/debian bookworm stable

# Tailscale源
deb https://pkgs.tailscale.com/stable/debian bullseye main
deb https://pkgs.tailscale.com/stable/debian bookworm main

环境变量说明

通用环境变量

变量名 描述 默认值
PUID 运行进程的用户ID -
PGID 运行进程的组ID -
CRON 定时任务表达式,例如:20 23,6,12,20 * * * -
TO 数据存储路径 /data
MIRRORS_LIST mirrors.list文件路径 /config/mirrors.list
DEFAULT_ARCH 默认架构(用于mirrors.list中的deb行) amd64
PARALLEL_DOWNLOADS 并行下载线程数 4

环境变量配置专用

变量名 描述
APTSYNC_URL 上游镜像URL
APTSYNC_DISTS 需要同步的发行版配置,格式为:发行版|组件|架构|
APTSYNC_UNLINK 是否先删除目标文件,设置为1开启

高级配置

变量名 描述 默认值
BIND_ADDRESS 绑定的网络接口IP -
APTSYNC_USER_AGENT 自定义User-Agent APT-Mirror-Tool/1.0
MAX_RETRY 最大重试次数(包文件) 3
INDEX_MAX_RETRY 索引文件最大重试次数 5
DOWNLOAD_TIMEOUT 下载超时时间(秒) 7200
INDEX_DOWNLOAD_TIMEOUT 索引文件下载超时时间(秒) 1800
ARIA2_DEBUG 显示aria2c调试信息 false
INDEX_DEBUG 显示索引调试信息 false

挂载点说明

路径 描述
/data 镜像数据存储目录
/log 日志存储目录
/config 配置文件目录(用于mirrors.list方式)
/etc/timezone 容器时区配置(只读)
/etc/localtime 容器本地时间配置(只读)

mirrors.list格式说明

支持标准的apt-mirror配置格式以及mirror_path语法:

基本语法

  • deb URL DISTRIBUTION COMPONENTS - 同步指定发行版的二进制包
  • deb [ arch=ARCH1,ARCH2 ] URL DISTRIBUTION COMPONENTS - 同步特定架构的包
  • deb-ARCH URL DISTRIBUTION COMPONENTS - 同步特定架构的包(如deb-amd64)
  • deb-src URL DISTRIBUTION COMPONENTS - 同步源码包(暂未实现)
  • # 注释 - 注释行
  • 空行将被忽略

mirror_path语法

使用mirror_path可以自定义URL前缀到本地目录的映射:

# 语法:mirror_path <url_prefix> <local_directory>
mirror_path https://apt.sys.truenas.net truenas
mirror_path http://deb.debian.org/debian/ debian
mirror_path https://download.lierfang.com/pxcloud/pxvirt pxvirt

# 然后定义仓库
deb https://apt.sys.truenas.net/fangtooth/25.04.0/debian/ bookworm main
deb https://apt.sys.truenas.net/fangtooth/nightlies/debian/ bookworm main
deb http://deb.debian.org/debian/ bookworm main contrib non-free
deb https://download.lierfang.com/pxcloud/pxvirt/ bookworm main

生成的目录结构:

/data/
├── truenas/
│   ├── fangtooth/25.04.0/debian/dists/bookworm/...
│   └── fangtooth/nightlies/debian/dists/bookworm/...
├── debian/
│   └── dists/bookworm/...
└── pxvirt/
    └── dists/bookworm/...

架构约束支持

# 支持架构约束语法
deb [ arch=amd64,arm64 ] https://download.lierfang.com/pxcloud/pxvirt/ bookworm main
deb [ arch=amd64 ] https://download.docker.com/linux/debian bookworm stable

镜像标签

当前可用镜像:

  • channinghe/apt-sync:aria2c - 使用aria2c加速的APT同步镜像
  • channinghe/apt-sync:latest - 无aria2c,只支持CRON和PUID/GUID的版本

配置优先级

  1. 如果存在/config/mirrors.list文件,优先使用mirrors.list配置
  2. 如果没有mirrors.list文件,则使用环境变量APTSYNC_URL和APTSYNC_DISTS
  3. 如果两种配置都不存在,容器将报错退出

示例文件

项目提供了完整的示例文件:

  • examples/mirrors.list - mirrors.list配置文件示例,展示了各种仓库的配置方法
  • examples/docker-compose.yml - Docker Compose配置示例,包含了两种配置方式的完整用法

您可以直接复制这些示例文件并根据需要进行修改。

故障排除

常见问题

  1. 权限问题: 确保PUID和PGID设置正确,并且挂载的目录有相应的读写权限
  2. 下载速度慢: 可以调整PARALLEL_DOWNLOADS参数增加并行下载数
  3. 网络超时: 可以增加DOWNLOAD_TIMEOUT值或检查网络连接
  4. 磁盘空间不足: 定期清理旧版本的包文件,或启用APTSYNC_UNLINK自动清理
  5. 404错误: 检查URL和发行版配置是否正确
    • 确保URL可以正常访问:curl -I <URL>/dists/<DISTRIBUTION>/Release
    • 验证发行版名称是否正确(如:bookworm, jammy, focal等)
    • 检查组件名称是否存在(如:main, contrib, non-free等)
  6. 双斜杠URL问题: 已修复,确保使用最新版本的镜像
  7. 索引文件下载失败: 现在会自动重试
    • 默认重试5次(可通过INDEX_MAX_RETRY调整)
    • 如果持续失败,检查网络连接或服务器状态
    • 可以临时增加重试次数:INDEX_MAX_RETRY=10

更新日志

最新改进

  • ✅ 修复双斜杠URL问题,避免404错误
  • ✅ 改进日志输出,不再显示临时文件名前缀(如 ._syncing_.
  • ✅ 增强错误处理和调试信息
  • ✅ 添加配置测试工具
  • ✅ 为索引文件下载添加重试机制,提高下载成功率
  • ✅ 修复大文件下载超时问题,增加索引文件下载超时时间
  • ✅ 添加下载进度跟踪和详细调试信息
  • ✅ 新增mirror_path语法,支持自定义目录结构和多源管理
  • ✅ 支持架构约束语法 [ arch=amd64,arm64 ]

调试模式

启用调试模式可以获得更详细的日志信息:

environment:
  - ARIA2_DEBUG=true
  - INDEX_DEBUG=true
  - DEBUG=1

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published