Compare commits

7 Commits

Author SHA1 Message Date
Julian Wefers 4165798a02 remove backup user from dockerfile 2026-06-02 17:40:22 +02:00
Julian Wefers 2757744ec9 add btop, borgbackup 2026-05-31 15:43:25 +02:00
Julian Wefers 54d983ef3a sudo build needs host network (rootful podman) 2026-05-31 15:22:37 +02:00
Julian Wefers cf0700348b Containerfile: cache dnf folder 2026-05-31 14:28:56 +02:00
Julian Wefers 5ef4950ce2 add kickstart to bootc-builder config.toml 2026-05-31 14:28:46 +02:00
Julian Wefers 5c72c38e9f sudo commands 2026-05-31 14:28:35 +02:00
Julian Wefers 68e798b881 container: add password and wheel group membership 2026-05-31 14:10:21 +02:00
3 changed files with 57 additions and 13 deletions
+11 -8
View File
@@ -1,14 +1,17 @@
FROM quay.io/fedora/fedora-bootc:44 FROM quay.io/fedora/fedora-bootc:44
# Install ZFS # Install ZFS
RUN dnf install -y kernel-devel-$(uname -r | awk -F'-' '{print $1}') # we want to keep ALL dnf downloaded packages in dnf cache,
RUN dnf install -y https://zfsonlinux.org/fedora/zfs-release-3-1$(rpm --eval "%{dist}").noarch.rpm # this is not the default, hackily add it to the config,
RUN dnf install -y zfs # assume there is not much in it. should be improved
RUN echo 'keepcache=True' >> /etc/dnf/dnf.conf
RUN useradd -m -d /var/home/backup backup # deps
RUN mkdir /backups && chown backup:backup /backups RUN --mount=type=cache,target=/var/cache/libdnf5 <<EOF
# dnf install -y kernel-devel-$(uname -r | awk -F'-' '{print $1}')
COPY --chown=root:root --chmod=600 id_ed25519.pub /root/.ssh/authorized_keys dnf install -y https://zfsonlinux.org/fedora/zfs-release-3-1$(rpm --eval "%{dist}").noarch.rpm
COPY --chown=backup:backup --chmod=600 id_ed25519.pub /var/home/backup/.ssh/authorized_keys dnf install -y zfs btop borgbackup
dnf clean all && rm -rf /run/dnf && rm -rf /tmp/*
EOF
RUN bootc container lint RUN bootc container lint
+14 -5
View File
@@ -3,23 +3,28 @@ TAG="latest"
build() { build() {
# ABSOLUTELY DO NOT USE --squash, as ostree NEEDS the layers # ABSOLUTELY DO NOT USE --squash, as ostree NEEDS the layers
buildah build \ sudo buildah build \
-t ${REPO}:${TAG} \ -t ${REPO}:${TAG} \
--pull \ --pull \
--layers \ --layers \
--format oci \ --format oci \
--network=host \
. .
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
buildah login gitea.wefers.page -u julian -p 278b81490079574229dce45b66b726d2ae7e83c0 sudo buildah login gitea.wefers.page -u julian -p 278b81490079574229dce45b66b726d2ae7e83c0
buildah push \ sudo buildah push \
--compression-format zstd \ --compression-format zstd:chunked \
"${REPO}:${TAG}" "${REPO}:${TAG}"
fi fi
} }
mkImage() { mkImage() {
# set -euo
# echo "current partitions:"
# lsblk
# read -p "target USB stick device to write image to: /dev/" dev
sudo podman run \ sudo podman run \
--rm \ --rm \
-it \ -it \
@@ -33,8 +38,12 @@ mkImage() {
-v /var/lib/containers/storage:/var/lib/containers/storage \ -v /var/lib/containers/storage:/var/lib/containers/storage \
quay.io/centos-bootc/bootc-image-builder:latest \ quay.io/centos-bootc/bootc-image-builder:latest \
--type anaconda-iso \ --type anaconda-iso \
--use-librepo=True \ --use-librepo=true \
--rootfs ext4 \
${REPO}:${TAG} ${REPO}:${TAG}
# --in-vm \
# sudo dd if=output/bootiso/install.iso of=/dev/${dev} bs=4M
} }
$1 $1
+32
View File
@@ -1,3 +1,18 @@
[customizations]
hostname = "backupserver"
[[customizations.user]]
name = "backup"
description = "Default user account"
password = "$6$CHO2$3rN8eviE2t50lmVyBYihTgVRHcaecmeCk31L..."
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGPAWtzq2/cuv+zPzdDSCe/5pc0HRCxmwFiI5Fu3sEok julian@local"
home = "/srv/widget/"
shell = "/usr/bin/bash"
groups = ["widget", "users", "wheel"]
uid = 1200
gid = 1200
expiredate = 12345
[customizations.iso] [customizations.iso]
volume_id = "JuliansBackupServer" volume_id = "JuliansBackupServer"
application_id = "JuliansBackupServer" application_id = "JuliansBackupServer"
@@ -10,3 +25,20 @@ publisher = "Julian"
# org.fedoraproject.Anaconda.Modules.Security # org.fedoraproject.Anaconda.Modules.Security
# ] # ]
# disable = ["org.fedoraproject.Anaconda.Modules.Users"] # disable = ["org.fedoraproject.Anaconda.Modules.Users"]
[customizations.installer.kickstart]
contents = """
# Basic setup
text
lang en_US
keyboard de
timezone Europe/Berlin
network --device=enp1s0 --bootproto=static --ip=192.168.178.3 --netmask=255.255.255.0 --gateway=192.168.178.1 --nameserver=1192.168.178.8
# Here's where we reference the container image to install - notice the kickstart
# has no `%packages` section! What's being installed here is a container image.
# ostreecontainer --url gitea.wefers.page/julian/backup-server:latest
firewall --disabled
services --enabled=sshd
"""