site

Website Content
git clone https://git.pngu.org/site
Log | Files | Refs | README

commit 4c787631558f87b2f213981757745f4fae2ee5a0
parent 43501eca06240878a97d863c17ce482e76cba5ed
Author: Jack Sangdahl <jack@pngu.org>
Date:   Sat,  7 Mar 2026 20:18:18 -0700

Improve notes on Laptop page, add content on server

Diffstat:
Martix_laptop.html | 24+++++++++++++-----------
Mdebian_server.html | 92+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
2 files changed, 96 insertions(+), 20 deletions(-)

diff --git a/artix_laptop.html b/artix_laptop.html @@ -140,17 +140,16 @@ pacman -U linux-lts-headers-6.12.74-1-x86_64.pkg.tar.zst</code></pre> </p> <pre><code>zpool import -f -o cachefile=none -o altroot=/mnt -R /mnt kepler_rpool</code></pre> <p>Once imported, mounted pseudo file systems and <code>chroot</code> as normal:</p> - <pre><code>mount --rbind /dev /mnt/dev -mount --rbind /sys /mnt/sys + <pre><code>mount --rbind /dev /mnt/dev +mount --rbind /sys /mnt/sys mount --rbind /proc /mnt/proc -mount --rbind /run /mnt/run +mount --rbind /run /mnt/run chroot /mnt /bin/bash</code></pre> <p>After fixing whatever is broke, exit and export pool(s):</p> <pre><code>exit zpool export kepler_rpool -umount -a - </code></pre> +umount -a</code></pre> <h4>Bootloader</h4> <p> As eluded to above, this system does not have a traditional bootloader, like GRUB. Being a @@ -201,8 +200,7 @@ install_items+=" /etc/hostid /etc/zfs/zpool.cache " add_dracutmodules+=" zfs " filesystems+=" zfs " -kernel_cmdline="root=ZFS=kepler_rpool/ROOT/default ro" - </code></pre> +kernel_cmdline="root=ZFS=kepler_rpool/ROOT/default ro"</code></pre> </li> <li> <p> @@ -212,8 +210,13 @@ kernel_cmdline="root=ZFS=kepler_rpool/ROOT/default ro" </p> <pre><code>mount /dev/sda1 /boot</code></pre> <p>Create the UKI (create the appropriate directories as necessary):</p> - <pre><code>dracut --uefi /boot/efi/EFI/Linux/artix-zfs-linux-$(uname -r) $(uname-r)</code></pre> - The directory should look like: + <pre><code>dracut --uefi /boot/EFI/Linux/artix-zfs-linux-kver x.y.z</code></pre> + <p> + Note, the final argument in the above (<code>x.y.z</code>) is the kernel version dracut + will build the UKI for. This corresponds to the structure of + <code>/lib/modules/...</code>, and an argument of <code>$(uname -r)</code> for example, + will search in <code>/lib/modules/$(uname -r)</code>. After, the ESP should look like: + </p> <pre><code>tree /boot /boot /boot/EFI @@ -221,7 +224,7 @@ kernel_cmdline="root=ZFS=kepler_rpool/ROOT/default ro" /boot/EFI/Linux/artix-zfs-linux-x.y.z</code></pre> <p>Create a UEFI entry to expose the EFI stub using <code>efibootmgr</code>:</p> - <pre><code>efibootmgr --create --disk /dev/sdX --part partition_number --label "Artix Linux x.y.z" --loader 'EFI\Linux\artix-zfs-linux-$(uname -r).efi'</code></pre> + <pre><code>efibootmgr --create --disk /dev/sdX --part partition_number --label "Artix Linux x.y.z" --loader 'EFI\Linux\artix-zfs-linux-kver.efi'</code></pre> <p> Above, the <code>disk</code> parameter should be only the identifier of the entire disk (e.g. <code>sda</code>), and the <code>part</code> parameter is the partition number (e.g. @@ -230,7 +233,6 @@ kernel_cmdline="root=ZFS=kepler_rpool/ROOT/default ro" </li> </ol> <h4>Laptop Utilities</h4> - <p>tlp, thermald, brightnessctl</p> <p> Across most of my systems, many of the utilities remain the same. There are a couple extra packages that are useful on a laptop, or at least this one. diff --git a/debian_server.html b/debian_server.html @@ -43,16 +43,90 @@ `"""</code></pre> <p> There is not much to discuss in terms of intricate system configuration or hardware quirks. - All services run in Docker containers, configured via Docker Compose. These include... + (Almost) all services run in Docker containers, configured via Docker Compose. One external + network links each container to the Caddy web server container, allowing each container to be + configured and run independently: </p> - <h3><a href="https://agendav.readthedocs.io" target="_blank">Agendav</a></h3> - <h3><a href="https://sabre.io/baikal" target="_blank">Ba&iuml;kal</a></h3> - <h3><a href="https://caddyserver.com" target="_blank">Caddy</a></h3> - <h3><a href="https://git.zx2c4.com/cgit" target="_blank">Cgit</a></h3> - <h3><a href="https://uptimekuma.org" target="_blank">Kuma</a></h3> - <h3><a href="https://roundcube.net" target="_blank">Roundcube</a></h3> - <h3><a href="https://stalw.art" target="_blank">Stalwart</a></h3> - <h3><a href="https://www.vaultwarden.net" target="_blank">Vaultwarden</a></h3> + <pre><code>services: + foo: + networks: + - caddybridge + +networks: + caddybridge: + external: true</code></pre> + <p> + If a container requires additional images within, like a database, an internal network is + used: + </p> + <pre><code>services: + foo: + networks: + - caddybridge + - foo_dbnet + + db: + image: mariadb + container_name: foo_db + restart: unless-stopped + environment: + MYSQL_RANDOM_ROOT_PASSWORD: yes + MARIADB_DATABASE: foo + MARIADB_USER: foo_user + MARIADB_PASSWORD: ${MARIADB_PASSWORD} + volumes: + - ./db:/var/lib/mysql + networks: + - vaultwarden_dbnet + +networks: + caddybridge: + external: true + foo_dbnet: + internal: true</code></pre> + <p> + I use MariaDB for any database needs, where possible, for consistency and as it is quite + lightweight. + </p> + <h3><a href="https://agendav.readthedocs.io" target="_blank">Agendav</a> (Calendar client)</h3> + <ul> + <li><a href="https://git.pngu.org/server/tree/agendav" target="_blank">Configuration</a></li> + </ul> + <h3><a href="https://sabre.io/baikal" target="_blank">Ba&iuml;kal</a> (CalDav server)</h3> + <ul> + <li><a href="https://git.pngu.org/server/tree/baikal" target="_blank">Configuration</a></li> + </ul> + <h3><a href="https://caddyserver.com" target="_blank">Caddy</a> (Web server)</h3> + <ul> + <li><a href="https://git.pngu.org/server/tree/caddy" target="_blank">Configuration</a></li> + </ul> + <h3><a href="https://git.zx2c4.com/cgit" target="_blank">Cgit</a> (Git client)</h3> + <ul> + <li><a href="https://git.pngu.org/server/tree/cgit" target="_blank">Configuration</a></li> + </ul> + <h3><a href="https://gitolite.com" target="_blank">Gitolite</a> (Git server)</h3> + <h3><a href="https://uptimekuma.org" target="_blank">Kuma</a> (System monitor)</h3> + <ul> + <li><a href="https://git.pngu.org/server/tree/kuma" target="_blank">Configuration</a></li> + </ul> + <h3><a href="https://roundcube.net" target="_blank">Roundcube</a> (Webmail client)</h3> + <ul> + <li> + <a href="https://git.pngu.org/server/tree/roundcube" target="_blank">Configuration</a> + </li> + </ul> + <h3><a href="https://stalw.art" target="_blank">Stalwart</a> (Mail server)</h3> + <ul> + <li><a href="https://git.pngu.org/server/tree/stalwart" target="_blank">Configuration</a></li> + </ul> + <h3> + <a href="https://www.vaultwarden.net" target="_blank">Vaultwarden</a> (Password manager) + </h3> + <ul> + <li> + <a href="https://git.pngu.org/server/tree/vaultwarden" target="_blank">Configuration</a> + </li> + </ul> <script src="frame.js"></script> </body> </html>