590 字
3 分钟
自建 APT 镜像源 教程 Tunasync CRON定时 多线程

源码#

Github已经发布,README包含大部分说明 https://github.com/ChanningHe/tunasync-docker

自建原因#

  • 家里的服务器越来越多,基础镜像比如Debian之类的需要一个镜像,方便本地快速拉取。
  • ProxmoxVE的非订阅源用户人数多,还是用起来不是那么快,加上集群机器多。
  • TrueNAS编译的时候严重依赖他们的APT源,他们的APT源又奇慢,加载只有几百KB/s,换完本地后编译从2h+变成1h+,感知还是明显的。
  • Tailscale源还是国内访问十分慢的源,用的机器镜像拉不下来,很多校园源又不做商业软件的源。

Compose示例#

services:
mirrors-nginx:
image: nginx:latest
container_name: mirrors-nginx
ports:
- "[Node-Port]:80"
volumes:
- $DOCKER_DATA/mirrors-nginx/nginx:/etc/nginx/conf.d
- $DOCKER_DATA/mirrors-data:/mnt/Kiwi/Mirror/mirrors-data
restart: always
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:
- $DOCKER_DATA/mirrors-data/proxmox:/data
- $DOCKER_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:
- $DOCKER_DATA/mirrors-data/tailscale:/data
- $DOCKER_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:
- $DOCKER_DATA/mirrors-data/debian:/data
- $DOCKER_DATA/mirrors-logs/aptsync-debian:/log
image: channinghe/apt-sync:aria2c
networks: {}

Nginx#

Nginx的目的是公开网页,需要另外增加配置/etc/nginx/conf.d/default.conf(容器内地址) 或者是$DOCKER_DATA/mirrors-nginx/nginx/default.conf(主机地址)

location / {
#你挂载进去的apt镜像数据的地方志
alias $DOCKER_DATA/mirrors-data/;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}

环境变量#

变量名描述
APTSYNC_URL上游镜像URL
APTSYNC_DISTS需要同步的发行版配置,格式为:发行版|组件|架构|下载路径
APTSYNC_UNLINK是否先删除目标文件,设置为1开启
  • APTSYNC_DISTS,可以使用下面的工具批量转换

自建源地址#

https://mirrors.homelabproject.cc/ (只是做个示例,在Cloudflare CDN前只是公开图一乐)

自建 APT 镜像源 教程 Tunasync CRON定时 多线程
https://www.homelabproject.cc/posts/infra/自建-apt-镜像源-教程-tunasync-cron定时-多线程/
作者
Channing He
发布于
2025-05-28
许可协议
CC BY-NC-SA 4.0