From d9ab77f384ce5feddf2a97b072bc26d439154985 Mon Sep 17 00:00:00 2001 From: Bram Prieshof Date: Wed, 20 Oct 2021 23:26:38 +0000 Subject: [PATCH] added aptcacherng CT, Updated readme --- .gitignore | 3 +- CT-Build/Debian.Jenkinsfile | 2 +- CT-Build/Debian.yaml | 18 +++++ CT-Files/aptcacherng/Configs/acng.conf | 25 +++++++ CT-Files/aptcacherng/Scripts/Init.sh | 10 +++ .../aptcacherng/Scripts/UpdateMirrorList.sh | 3 + Readme.md | 69 ++++++++++--------- Scripts/GetExternalResources.sh | 4 +- 8 files changed, 98 insertions(+), 36 deletions(-) create mode 100644 CT-Files/aptcacherng/Configs/acng.conf create mode 100644 CT-Files/aptcacherng/Scripts/Init.sh create mode 100644 CT-Files/aptcacherng/Scripts/UpdateMirrorList.sh diff --git a/.gitignore b/.gitignore index 98ff80a..2f1090e 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ CT-Files/transfersh/transfershVersion CT-Files/domoticz/domoticz.tgz CT-Files/omadaV3/omada.deb CT-Files/nextcloud/nginx_signing.rsa.pub -CT-Files/nextcloud/nextcloud.tar.bz2 \ No newline at end of file +CT-Files/nextcloud/nextcloud.tar.bz2 +CT-Files/aptcacherng/*_mirrors \ No newline at end of file diff --git a/CT-Build/Debian.Jenkinsfile b/CT-Build/Debian.Jenkinsfile index d22e852..d7bdcb3 100644 --- a/CT-Build/Debian.Jenkinsfile +++ b/CT-Build/Debian.Jenkinsfile @@ -1,4 +1,4 @@ -String[] ImgVariantList = ['minimal', 'default', 'jenkinsbuilder', 'imgbuilder', 'jenkins', 'mysql' , 'pihole' , 'collabora' , 'jellyfin' , 'domoticz' , 'omadaV3' , 'docker' , 'smb' , 'tvheadend' , 'x2go' ] +String[] ImgVariantList = ['minimal', 'default', 'jenkinsbuilder', 'imgbuilder', 'jenkins', 'mysql' , 'pihole' , 'collabora' , 'jellyfin' , 'domoticz' , 'omadaV3' , 'docker' , 'smb' , 'tvheadend' , 'x2go' , 'aptcacherng' ] pipeline { agent { label 'LXCBuilder' } diff --git a/CT-Build/Debian.yaml b/CT-Build/Debian.yaml index 746864d..3478669 100644 --- a/CT-Build/Debian.yaml +++ b/CT-Build/Debian.yaml @@ -937,6 +937,13 @@ files: variants: - x2go +#FileForAptcacherng +- path: /opt/Setup + generator: copy + source: CT-Files/aptcacherng + variants: + - aptcacherng + packages: manager: apt update: true @@ -958,6 +965,7 @@ packages: - smb - tvheadend - x2go + - aptcacherng #Https Repo pkgs - packages: @@ -973,6 +981,7 @@ packages: - smb - tvheadend - x2go + - aptcacherng #Minimal pkgs - packages: @@ -1190,6 +1199,14 @@ packages: variants: - x2go +#aptcacherng pkgs + - packages: + - apt-cacher-ng + action: install + variants: + - aptcacherng + + repositories: - name: sources.list url: |- @@ -1310,6 +1327,7 @@ actions: - omadaV3 - smb - x2go + - aptcacherng - trigger: post-packages action: |- diff --git a/CT-Files/aptcacherng/Configs/acng.conf b/CT-Files/aptcacherng/Configs/acng.conf new file mode 100644 index 0000000..a4e49c3 --- /dev/null +++ b/CT-Files/aptcacherng/Configs/acng.conf @@ -0,0 +1,25 @@ +Port:80 +# Storage directory for downloaded data and related maintenance activity. +CacheDir: /var/cache/apt-cacher-ng +LogDir: /var/log/apt-cacher-ng +SupportDir: /usr/lib/apt-cacher-ng + +# Repository remapping +Remap-debrep: file:deb_mirror*.gz /debian ; file:backends_debian # Debian Archives +Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu # Ubuntu Archives +Remap-epel: file:epel_mirrors # Fedora EPEL +Remap-secdeb: security.debian.org security.debian.org/debian-security deb.debian.org/debian-security /debian-security ; deb.debian.org/debian-security security.debian.org +Remap-centos: file:centos_mirrors /centos ; http://mirror.ams1.nl.leaseweb.net/centos +Remap-alpine: file:alpine_mirrors /alpine ; http://dl-4.alpinelinux.org/alpine + +ReportPage: acng-report.html + +ExThreshold: 4 + +LocalDirs: acng-doc /usr/share/doc/apt-cacher-ng + +VfilePatternEx: (metalink\?repo=[0-9a-zA-Z-]+&arch=[0-9a-zA-Z_-]+|/\?release=[0-9]+&arch=|repodata/.*\.(xml|sqlite)\.(gz|bz2)|APKINDEX.tar.gz|filelists\.xml\.gz|filelists\.sqlite\.bz2|repomd\.xml|packages\.[a-zA-Z][a-zA-Z]\.gz|\.sha256) +PfilePatternEx: (/dists/.*/by-hash/.*|\.tgz|\.tar|\.xz|\.bz2|\.rpm|\.apk)$ + +UserAgent: Yet Another HTTP Client/1.2.3p4 +DontCache: mirrorlist.centos.org diff --git a/CT-Files/aptcacherng/Scripts/Init.sh b/CT-Files/aptcacherng/Scripts/Init.sh new file mode 100644 index 0000000..7e6be0e --- /dev/null +++ b/CT-Files/aptcacherng/Scripts/Init.sh @@ -0,0 +1,10 @@ +#!/bin/ash +#Allow apt-cacher-ng to use port 80 +setcap 'cap_net_bind_service=+ep' /usr/sbin/apt-cacher-ng +#Move configs in place +mv /opt/Setup/Configs/acng.conf /etc/apt-cacher-ng/acng.conf +mv /opt/Setup/centos_mirrors /etc/apt-cacher-ng/centos_mirrors +mv /opt/Setup/alpine_mirrors /etc/apt-cacher-ng/alpine_mirrors +mv /opt/Setup/Scripts/UpdateMirrorList.sh /opt/UpdateMirrorList.sh +#Enable apt-cacher-ng on startup +ln -s /lib/systemd/system/apt-cacher-ng.service /etc/systemd/system/multi-user.target.wants/apt-cacher-ng.service \ No newline at end of file diff --git a/CT-Files/aptcacherng/Scripts/UpdateMirrorList.sh b/CT-Files/aptcacherng/Scripts/UpdateMirrorList.sh new file mode 100644 index 0000000..09e9d36 --- /dev/null +++ b/CT-Files/aptcacherng/Scripts/UpdateMirrorList.sh @@ -0,0 +1,3 @@ +#!/bin/ash +curl -L --retry 7 --retry-delay 5 http://dl-4.alpinelinux.org/alpine/MIRRORS.txt -o /etc/apt-cacher-ng/alpine_mirrors +curl https://www.centos.org/download/full-mirrorlist.csv | sed 's/^.*"http:/http:/' | sed 's/".*$//' | grep ^http >/etc/apt-cacher-ng/centos_mirrors diff --git a/Readme.md b/Readme.md index 5726e24..0d58cba 100644 --- a/Readme.md +++ b/Readme.md @@ -1,12 +1,12 @@ # Scripts for building containers for the Proxmox home server -# Inital Setup -The fist step is to build the containers needed for building all other containers. +# Initial Setup +The first step is to build the containers needed for building all other containers. This can be done on a Minimal debian CT (make sure to enable nesting) on the new proxmox server or any other debian install 1. Clone this repo 2. cd in to cloned repo -3. run `bash Scripts/FirstSetup.sh`, to genate the container images +3. run `bash Scripts/FirstSetup.sh`, to generate the container images 4. upload the `Debian-imgbuilder.tar.xz` to the proxmox server and create a privileged container 5. Follow the steps under Container Setup > imgbuilder 6. Upload the `Debian-Jenkins.tar.xz` to the proxmox server and create a container @@ -31,6 +31,7 @@ This can be done on a Minimal debian CT (make sure to enable nesting) on the new | smb | Debian | Samba server | | tvheadend | Debian | Tvheadend server | | x2go | Debian | Remote xfce desktop accessable via X2go | +| aptcacherng | Debian | Caching server for linux packages | | gitea | Alpine | Gitea server | | nginx | Alpine | Nginx server for reverse-proxy use | | ddns | Alpine | DDNS client configured for OVH/OVH-Cloud | @@ -72,9 +73,9 @@ MailBackup* # Container Setup ## imgbuilder -**This container shoud be set up as privileged** +**This container should be set up as privileged** 1. Enable features: Fuse, Nesting and 'Create Device Nodes' -2. Add a mountpoint to /LXCBuild on a accesable place for the Proxmox Server +2. Add a mountpoint to /LXCBuild on a accessible place for the Proxmox Server 3. Add this location to datastore for LXC templates to Proxmox 4. Set the `jenkins` user password using `passwd jenkins` in the container 5. Create folders on mountpoint using `mkdir /LXCBuild/template/cache` @@ -83,7 +84,7 @@ MailBackup* ## jenkins 1. In the container configure the setup script `nano /opt/Setup/Scripts/FirstRun.sh` 2. In the container run the setup script `bash /opt/Setup/Scripts/FirstRun.sh` -3. Acces Jenkins using `http://:8080` +3. Access Jenkins using `http://:8080` 4. Press the `X` to skip the fist time setup 5. Delete the `Admin` user go to 'Manage Jenkins' > 'Manage Users' > Admin > Delete 6. Add credentials for imgbuilder-CT go to 'Manage Jenkins' > 'Manage Nodes and Clouds' > LXCBuilder1 > configure @@ -95,27 +96,27 @@ Then select the created credential and click save * To configure the MySQL root password in the container run the setup script `bash /opt/Setup/Scripts/FirstRun.sh` ## gitea 1. Edit the parameters in the FistRun script in the container `vi /opt/Setup/Scripts/FirstRun.sh` -2. Run the FistRun scipt in the container `ash /opt/Setup/Scripts/FirstRun.sh` +2. Run the FistRun script in the container `ash /opt/Setup/Scripts/FirstRun.sh` ## nginx -* Run the FistRun scipt in the container `ash /opt/Setup/Scripts/FirstRun.sh` +* Run the FistRun script in the container `ash /opt/Setup/Scripts/FirstRun.sh` ## pihole -* Run the FistRun scipt in the container `ash /opt/Setup/Scripts/FirstRun.sh` +* Run the FistRun script in the container `ash /opt/Setup/Scripts/FirstRun.sh` ## colabora * Update the configuration in /etc/loolwsd/loolwsd.xml and reload the service `systemctl restart loolwsd` ## jellyfin -* To set-up the system follow the inital set-up wizard on http://``:8096 +* To set-up the system follow the initial set-up wizard on http://``:8096 ## domoticz -* Avalible on http://``:8080 +* Available on http://``:8080 ## transfersh -* Avalible on http://``:8080 +* Available on http://``:8080 ## omadaV3 -* To set-up the system follow the inital set-up wizard on http://``:8088 +* To set-up the system follow the initial set-up wizard on http://``:8088 ## docker -* Run the FistRun scipt in the container `ash /opt/Setup/Scripts/FirstRun.sh` +* Run the FistRun script in the container `ash /opt/Setup/Scripts/FirstRun.sh` This container can be set up in two ways 1. As controller with portainer 2. As remote with docker tcp on port 2375 -3. BONUS if FistRun scipt the CT has clean docker +3. BONUS if FistRun script is skipped the CT has clean docker ## iscsi ### In Proxmox * Run following commands @@ -138,10 +139,10 @@ exit ``` ## z2mqtt -**Do not start this container after cration, follow these steps first** -* Recomended to give CT 1-2GB of RAM (Required for updating) +**Do not start this container after creation, follow these steps first** +* Recommended to give CT 1-2GB of RAM (Required for updating) ### In Proxmox -* Add the folling to `/etc/udev/rules.d/99-CustomHome.rules` +* Add the following to `/etc/udev/rules.d/99-CustomHome.rules` ``` KERNEL=="ttyUSB[0-9]*", MODE="0666" KERNEL=="ttyACM[0-9]*", MODE="0666" @@ -153,40 +154,42 @@ SUBSYSTEM=="tty", ACTION=="change", ATTRS{idVendor}=="0658", ATTRS{idProduct}==" SUBSYSTEM=="tty", ACTION=="add", ATTRS{idVendor}=="0658", ATTRS{idProduct}=="0200", SYMLINK+="ttyACM-Zwave" ``` * Run `udevadm trigger` -* Add the folling to /etc/pve/lxc/``.conf +* Add the following to /etc/pve/lxc/``.conf ``` lxc.cgroup2.devices.allow: c 166:* rwm lxc.mount.entry: /dev/ttyACM-Zigbee dev/ttyACM-Zigbee none bind,optional,create=file lxc.mount.entry: /dev/ttyACM-Zwave dev/ttyACM-Zwave none bind,optional,create=file ``` -* Zigbee2mqtt avalible on http://``:5002 -* ZWave2mqtt avalible on http://``:8091 +* Zigbee2mqtt Available on http://``:5002 +* ZWave2mqtt Available on http://``:8091 * in the ZWave2mqtt web ui set the Zwave serial port to /dev/ttyACM-Zwave * If a `Cannot lock port` error shows, please reboot the CT, if that does not fix it try rebooting the Proxmox server ## nodered -* Avalible on http://``:1880 +* Available on http://``:1880 ## nextcloud **MountPoint for data folder `/var/nextcloud`** 1. Edit the parameters in the FistRun script in the container `vi /opt/Setup/Scripts/FirstRun.sh` -2. Run the FistRun scipt in the container `ash /opt/Setup/Scripts/FirstRun.sh` -3. Avalible on http://`` +2. Run the FistRun script in the container `ash /opt/Setup/Scripts/FirstRun.sh` +3. Available on http://`` ## smb -* Webmin avalible on http://`` -* Samba server avalible +* Webmin Available on http://`` +* Samba server Available ## tvheadend -**Do first login and setup wizzard in a incognito/Private window, since the authentication system can get confused after setting the new username** -* Tvheadend avalible on http://``:9981 +**Do first login and setup wizard in a incognito/Private window, since the authentication system can get confused after setting the new username** +* Tvheadend Available on http://``:9981 * Default credentials: setup/setup * Follow the setup wizzard after login, otherwise authentication will be disabled ## hass -* After first start of CT HomeAssistant will finish its instalation this wil take at least 10 minutes -* HomeAssistantavalible on http://``:8123 +* After first start of CT HomeAssistant will finish its installation this will take at least 10 minutes +* HomeAssistant available on http://``:8123 +## aptcacherng +* Available on http://``:80 # Further CT documentation @@ -204,17 +207,17 @@ exit ### Add Drive #### In Proxmox -* Create LVM Volume (Avalible @ /dev/``/``) +* Create LVM Volume (Available @ /dev/``/``) ``` lvcreate --name --size G ``` -* Create ZFS Volume (Avalible @ /dev/``/``) +* Create ZFS Volume (Available @ /dev/``/``) ``` zfs create -o volblocksize=32k -V G / zfs set sync=disabled / ``` * Get id by using ls -l /dev/`` -* Add the folling to /etc/pve/lxc/``.conf +* Add the following to /etc/pve/lxc/``.conf ``` lxc.cgroup2.devices.allow: b : rwm lxc.mount.entry: /dev/ dev/ none bind,optional,create=file diff --git a/Scripts/GetExternalResources.sh b/Scripts/GetExternalResources.sh index 59481d5..d1c551f 100644 --- a/Scripts/GetExternalResources.sh +++ b/Scripts/GetExternalResources.sh @@ -23,4 +23,6 @@ GetResource transfersh transfersh-linux-amd64 https://github.com/dutchcoders/tra GetResource omadaV3 omada.deb https://static.tp-link.com/2020/202012/20201225/Omada_v3.2.14_linux_x64.deb GetResource nextcloud nginx_signing.rsa.pub https://nginx.org/keys/nginx_signing.rsa.pub -GetResource nextcloud nextcloud.tar.bz2 https://download.nextcloud.com/server/releases/latest.tar.bz2 \ No newline at end of file +GetResource nextcloud nextcloud.tar.bz2 https://download.nextcloud.com/server/releases/latest.tar.bz2 +GetResource aptcacherng alpine_mirrors http://dl-4.alpinelinux.org/alpine/MIRRORS.txt +curl -L --retry 7 --retry-delay 5 https://www.centos.org/download/full-mirrorlist.csv | sed 's/^.*"http:/http:/' | sed 's/".*$//' | grep ^http > CT-Files/aptcacherng/centos_mirrors \ No newline at end of file