Channing He
Channing He
Articles14
Tags8
Categories0
自建 APT 镜像源 教程 Tunasync CRON定时 多线程

自建 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前只是公开图一乐)

Author:Channing He
Link:https://homelabproject.cc/Infra/%E8%87%AA%E5%BB%BA%20APT%20%E9%95%9C%E5%83%8F%E6%BA%90%20%E6%95%99%E7%A8%8B%20Tunasync%20CRON%E5%AE%9A%E6%97%B6%20%E5%A4%9A%E7%BA%BF%E7%A8%8B/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可