Skip to content

reprepro

      wget https://github.com/nicholaswilde/homelab/raw/refs/heads/main/pve/reprepro/debian/conf/override.bullseye -O /srv/reprepro/debian/conf/override.bullseye
      wget https://github.com/nicholaswilde/homelab/raw/refs/heads/main/pve/reprepro/debian/conf/override.bookworm -O /srv/reprepro/debian/conf/override.bookworm
      wget https://github.com/nicholaswilde/homelab/raw/refs/heads/main/pve/reprepro/ubuntu/conf/override.oracular -O /srv/reprepro/ubuntu/conf/override.oracular
      wget https://github.com/nicholaswilde/homelab/raw/refs/heads/main/pve/reprepro/ubuntu/conf/override.noble -O /srv/reprepro/ubuntu/conf/override.noble
      wget https://github.com/nicholaswilde/homelab/raw/refs/heads/main/pve/reprepro/debian/conf/override.forky -O /srv/reprepro/debian/conf/override.forky
    )
    ```

=== "Symlinks"

    ```shell
    (
      ln -s /root/git/nicholaswilde/homelab/pve/reprepro/debian/conf/override.trixie /srv/reprepro/debian/conf/override.trixie
      ln -s /root/git/nicholaswilde/homelab/pve/reprepro/debian/conf/override.bullseye /srv/reprepro/debian/conf/override.bullseye
      ln -s /root/git/nicholaswilde/homelab/pve/reprepro/debian/conf/override.bookworm /srv/reprepro/debian/conf/override.bookworm
      ln -s /root/git/nicholaswilde/homelab/pve/reprepro/ubuntu/conf/override.oracular /srv/reprepo/ubuntu/conf/override.oracular
      ln -s /root/git/nicholaswilde/homelab/pve/reprepro/ubuntu/conf/override.noble /srv/reprepro/ubuntu/conf/override.noble
      ln -s /root/git/nicholaswilde/homelab/pve/reprepro/debian/conf/override.forky /srv/reprepro/debian/conf/override.forky
    )
    ```

=== "Manual"

    ```shell
    (
      touch /srv/reprepro/ubuntu/conf/override.noble
      touch /srv/reprepro/ubuntu/conf/override.oracular
      touch /srv/reprepro/debian/conf/override.trixie
      touch /srv/reprepro/debian/conf/override.bookworm
      touch /srv/reprepro/debian/conf/override.bullseye
      touch /srv/reprepro/debian/conf/override.forky
    )
    ```

Traefik

homelab/pve/traefik/conf.d/reprepro.yaml
---
http:
 #region routers 
  routers:
    reprepro:
      entryPoints:
        - "websecure"
      rule: "Host(`deb.l.nicholaswilde.io`)"
      middlewares:
        - default-headers@file
        - https-redirectscheme@file
      tls: {}
      service: reprepro
#endregion
#region services
  services:
    reprepro:
      loadBalancer:
        servers:
          - url: "http://192.168.2.32"
        passHostHeader: true
# #endregion

📝 Usage

🖥 Server

Add deb file to reprepro.

(
  reprepro -b /srv/reprepro/ubuntu/ includedeb oracular sops_3.9.4_amd64.deb
  reprepro -b /srv/reprepro/ubuntu/ includedeb noble sops_3.9.4_amd64.deb
  reprepro -b /srv/reprepro/debian/ includedeb trixie sops_3.9.4_amd64.deb
  reprepro -b /srv/reprepro/debian/ includedeb bookworm sops_3.9.4_amd64.deb
  reprepro -b /srv/reprepro/debian/ includedeb forky sops_3.9.4_amd64.deb
)

💻 Client

Download gpg key

curl -fsSL http://deb.l.nicholaswilde.io/public.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/reprepro.gpg

Add repo and install.

/etc/apt/sources.list.d/reprepro.list

(
  echo "deb [signed-by=/etc/apt/keyrings/reprepro.gpg] http://deb.l.nicholaswilde.io/debian trixie main" >> /etc/apt/sources.list.d/reprepro.list && \
  apt update && \
  apt install sops
)
(
  echo "deb [signed-by=/etc/apt/keyrings/reprepro.gpg] http://deb.l.nicholaswilde.io/debian bookworm main" >> /etc/apt/sources.list.d/reprepro.list && \
  apt update && \
  apt install sops
)
(
  echo "deb [signed-by=/etc/apt/keyrings/reprepro.gpg] http://deb.l.nicholaswilde.io/debian bullseye main" >> /etc/apt/sources.list.d/reprepro.list && \
  apt update && \
  apt install sops
)
(
  echo "deb [signed-by=/etc/apt/keyrings/reprepro.gpg] http://deb.l.nicholaswilde.io/debian forky main" >> /etc/apt/sources.list.d/reprepro.list && \
  apt update && \
  apt install sops
)
deb [signed-by=/etc/apt/keyrings/reprepro.gpg] http://deb.l.nicholaswilde.io/debian trixie main
apt update && \
apt install sops
deb [signed-by=/etc/apt/keyrings/reprepro.gpg] http://deb.l.nicholaswilde.io/debian bookworm main
apt update && \
apt install sops
deb [signed-by=/etc/apt/keyrings/reprepro.gpg] http://deb.l.nicholaswilde.io/debian bullseye main
apt update && \
apt install sops
deb [signed-by=/etc/apt/keyrings/reprepro.gpg] http://deb.l.nicholaswilde.io/debian forky main
apt update && \
apt install sops

Sync Check

The script sync-check.sh is used to compare the latest released versions of the apps SOPS and Task to the local versions.

If out of date, the debs are downloaded and added to reprepro.

homelab/pve/reprepro

task sync-check
./sync-check.sh

⏰ Cronjob

A cronjob can be setup to run every night to check the released versions.

2 A.M. nightly

(crontab -l 2>/dev/null; echo "0 2 * * * /root/git/nicholaswilde/homelab/pve/reprepro/sync-check.sh") | crontab - 
crontab -e
0 2 * * * /root/git/nicholaswilde/homelab/pve/reprepro/sync-check.sh

Task List

task: Available tasks for this project:
* deps:             Install dependencies
* export:           Export the task list
* sync-check:       Check and sync released versions of SOPS and Taks

🔗 References