
自建 APT 镜像源 教程 Tunasync CRON定时 多线程
源码
Github已经发布,README包含大部分说明
https://github.com/ChanningHe/tunasync-docker
自建原因
- 家里的服务器越来越多,基础镜像比如Debian之类的需要一个镜像,方便本地快速拉取。
- ProxmoxVE的非订阅源用户人数多,还是用起来不是那么快,加上集群机器多。
- TrueNAS编译的时候严重依赖他们的APT源,他们的APT源又奇慢,加载只有几百KB/s,换完本地后编译从2h+变成1h+,感知还是明显的。
- Tailscale源还是国内访问十分慢的源,用的机器镜像拉不下来,很多校园源又不做商业软件的源。
Compose示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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
(主机地址)
1
2
3
4
5
6
7
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前只是公开图一乐)