Homepage setup for schleppe lab blog

This commit is contained in:
2023-05-19 18:08:45 +02:00
commit 445e0eb768
50 changed files with 1756 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
---
layout: post
title: E-ink brewpi viewer
date: 2023-05-01 10:46:15 +0200
updated: 2023-05-01 14:52:00 +0200
tags: brewing e-ink
---
Continuing on brewpi refrigerator project we have already created a [regulator]() & [website](), but I also want a way to view the current refrigerator state at a glance.
{% include image.html
src="0001-brewpi.jpeg"
alt="Jekyll's logo"
caption="E-ink display displaying current brew status."
fullwidth="true"
%}

View File

@@ -0,0 +1,90 @@
---
layout: post
title: "Remove Proxmox Server Access over SERIAL! Cheaper Alternative to IPMI or KVMs"
date: 2023-05-18 10:46:15 +0200
updated: 2023-05-19 14:52:00 +0200
tags: virtualization networking
excerpt: Ive gone from “no backups” to “raid is a backup” to “two zfs pools in one box”, and decided its finally time for a proper backup solution. So, I settled on Proxmox Backup Server! And today, I rebuild my HP Microserver Gen8 with 4x10T refurbished SAS drives, a new SAS controller card, and more! With this backup solution, Im feeling a lot better about my data migration to Ceph. Contents Video SAS Drive Formatting ZFS Pool Setup Next Steps Video SAS Drive Formatting Since these drives were refurbished they were formerly formatted for a hardware RAID controller and were giving me lots of protection errors in dmesg - specifically blk_update_request protection error (and failing to read, but not write).
---
I have a rack-mounted KVM now, and its great, but Im working on building out a new Proxmox cluster which might not have a graphics output at all on some of the nodes. So, I need a new remote access solution for them.
The new nodes Im planning on building will all be based on used consumer hardware, so Im limited by what would be available on normal mATX boards. This doesnt include IPMI, and if I go with AMD-based CPUs, doesnt include an iGPU either. So I either need to get cheap GPUs to add to the second PCIe slot (which I then cant use for things like HBAs), or at least put a GPU in for troubleshooting. However, adding a GPU often moves PCIe devices, leading to issues where the network card on enp4 is now enp5 when the GPU is attahed, for example. So trouleshooting for real would be a nightmare with this approach.
But! There is an alternative. Despite being ancient, many boards still have a COM header connected to the chipset, which provides a basic serial port header (COM1 in Windows) and is completely usable. So, my goal is to connect this COM header to a female RJ45 port on the back of the computer, so I can plug in a Cisco-style terminal cable. These sorts of cables (RJ45 serial to USB) are readily available cheaply on the internet, and I can open a terminal emulator on my laptop to diagnose the worst issues that lock up the system.
Since some systems are rumored to not POST without a graphics card, Im testing this approach today.
# Contents
- [Video](#video)
- [Building the Cable](#building-the-cable)
- [Proxmox Setup](#proxmox-setup)
- [Parts](#parts)
# Video
# Building the cable
The Cisco/Juniper style RJ45 pinout is fairly simple if we exclude all of the flow control lines, so we just need 3 wires. I bought a pack of 2x5 IDC headers and a panel mount female RJ45 extension cable (which can be mounted in the case), cut the male end off, and crimped the resulting wires directly in the IDC header. Then I used a cheap USB to RJ45 serial cable and all worked great.
Heres the pinout drawing for reference:
# Proxmox Setup
Setup is really two steps - enabling kernel console via serial, and enabling a tty on that serial port. One of these requires editing the kernel `cmdline` (Which can vary a bit - see Proxmoxs docs for more info), and the other requires using systemd.
First, we need to add a new `console` argument to the kernel cmdline. Default for this is `tty0`, and we can add multiple arguments, so we should make sure both are specified. On my system I am using systemd-boot, so I edit the file `/etc/kernel/cmdline` and add:
```bash
console=tty0 console=ttyS0,115200n8
```
(ttyS0 should be COM1 in Windows, and should be the COM port on the motherboard. You can also use USB Serial here if you need to, or any other serial ports you have available)
Now, we just need to enable getty on our serial port so we have a proper login terminal:
```
systemctl enable serial-getty@ttyS0.service
```
And reboot, watching boot messages on the console happily
![image tooltip here](/assets/images/0001-proxmox.jpg)
*cluster viewed from here*
{% include image.html
src="0001-proxmox.png"
alt="Jekyll's logo"
caption="This is Jekyll's logo, featuring Dr. Jekyll's serum!"
%}
I get that these push clippy things are on the low end because theyre cheap and not really ideal for proper cooler pressure, but god damn why cant all cooler installations be this easy? Some of the shit Ive had to install in my past have been too damn complicated for no obvious reason. Although, after putting this thing on the board, there was very obvious warping happening on the board, so, pointless rant by me, clearly.
I really dont mind warping as much as a lot of people seem to, Ive used a lot of warped PCBs in my day and theyre pretty solid bits of kit. Once I installed the board in the case the motherboard screws seemed to bed it back as it were, so the board was straight.
{% include image.html
src="0002-proxmox.png"
alt="Jekyll's logo"
caption="This is Jekyll's logo, featuring Dr. Jekyll's serum!"
fullwidth="true"
%}
{% include image.html
src="0003-proxmox.png"
alt="Jekyll's logo"
caption="This is Jekyll's logo, featuring Dr. Jekyll's serum!"
fullwidth="true"
%}
Of course, since Proxmox is Debian (with Ubuntu kernels), this should work on any of your other systems also Debian-based, as long as you are aware of the right place for the cmdline config (GRUB or Systemdboot).
# Parts
Some links to products may be affiliate links, which may earn a commission for me.
- [Female 2x5 IDC Connector (50 pack)](https://google.com)
- [RJ45 Panel Mount Female Extension](https://google.com)
- [RJ45 Console Cable to USB-A](https://google.com)
- [RJ45 Console Cable to USB-C](https://google.com)

View File

@@ -0,0 +1,138 @@
---
layout: post
title: Network KVM for ALL of my Servers!
date: 2023-05-19 15:46:15 +0200
updated: 2023-05-19 15:52:00 +0200
tags: networking virtualization
---
Since I use a lot of repurposed computers as servers, I dont have many with IPMI / remote access built in. Usually I can configure them remotely through SSH or their web UI, but sometimes things go wrong and its nice to have remote console access. Enter, PiKVM, a project to build a networked KVM switch with a Raspberry Pi. Unfortunately, I have a more than one server, and building a PiKVM for every one gets expensive, so Im combining it with an 8 port rack mount KVM switch so I can remotely view and control all of the servers in my rack.
The KVM Im using supports network control (but its not a network KVM, it can just switch inputs over the network) and Ive configured that in this video.
# Contents
- [Networking Configuration](#networking-configuration)
- [PiKVM Configuration](#pikvm-configuration)
# Networking Configuration
The network configuration goes in `/etc/systemd/network/eth0.network`. Make sure to run `rw` to make the filesystem writeable before editing it, and `ro` when you are done.
```
[Match]
Name=eth0
[Network]
DHCP=yes
DNSSEC=no
# Use DHCP for primary address
# Add a static address in a /31 for the TESmart KVM
Address=192.168.1.11/31
[DHCP]
# Use same IP by forcing to use MAC address for clientID
ClientIdentifier=mac
# https://github.com/pikvm/pikvm/issues/583
RouteMetric=10
```
# PiKVM Configuration
The PiKVM configuration override goes in `/etc/kvmd/override.yaml`. Make sure to run `rw` to make the filesystem writeable before editing it, and `ro` when you are done. Im using the default IP of the Tesmart and a /31 subnet to avoid changing it, but if you do change the IP youd change it here as well.
```yaml
kvmd:
gpio:
drivers:
tes:
type: tesmart
host: 192.168.1.10
port: 5000
scheme:
server0_led:
driver: tes
pin: 0
mode: input
server0_switch:
driver: tes
pin: 0
mode: output
switch: false
server1_led:
driver: tes
pin: 1
mode: input
server1_switch:
driver: tes
pin: 1
mode: output
switch: false
server2_led:
driver: tes
pin: 2
mode: input
server2_switch:
driver: tes
pin: 2
mode: output
switch: false
server3_led:
driver: tes
pin: 3
mode: input
server3_switch:
driver: tes
pin: 3
mode: output
switch: false
server4_led:
driver: tes
pin: 4
mode: input
server4_switch:
driver: tes
pin: 4
mode: output
switch: false
server5_led:
driver: tes
pin: 5
mode: input
server5_switch:
driver: tes
pin: 5
mode: output
switch: false
server6_led:
driver: tes
pin: 6
mode: input
server6_switch:
driver: tes
pin: 6
mode: output
switch: false
server7_led:
driver: tes
pin: 7
mode: input
server7_switch:
driver: tes
pin: 7
mode: output
switch: false
view:
table:
- ["TESMART Switch"]
- []
- ["#Terra NAS", server0_led, server0_switch|Switch]
- ["#Megalab", server1_led, server1_switch|Switch]
- ["#PVE1", server2_led, server2_switch|Switch]
- ["#PVE2", server3_led, server3_switch|Switch]
- ["#PVE3", server4_led, server4_switch|Switch]
- ["#Minilab", server5_led, server5_switch|Switch]
- ["#OPNsense", server6_led, server6_switch|Switch]
- ["#Iridium", server7_led, server7_switch|Switch]
```

View File

@@ -0,0 +1,29 @@
---
layout: post
title: "Welcome to Jekyll!"
date: 2023-05-19 00:56:15 +0200
categories: posts jekyll update
---
Youll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
Jekyll requires blog post files to be named according to the following format:
`YEAR-MONTH-DAY-title.MARKUP`
Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
Jekyll also offers powerful support for code snippets:
{% highlight ruby %}
def print_hi(name)
puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.
{% endhighlight %}
Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekylls GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
[jekyll-docs]: https://jekyllrb.com/docs/home
[jekyll-gh]: https://github.com/jekyll/jekyll
[jekyll-talk]: https://talk.jekyllrb.com/