mirror of
https://github.com/KevinMidboe/schleppe-lab.git
synced 2026-02-09 10:59:22 +00:00
Homepage setup for schleppe lab blog
This commit is contained in:
18
_posts/2023-05-01-brewpi-display.markdown
Normal file
18
_posts/2023-05-01-brewpi-display.markdown
Normal 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"
|
||||
%}
|
||||
|
||||
|
||||
90
_posts/2023-05-18-proxmox_com.markdown
Normal file
90
_posts/2023-05-18-proxmox_com.markdown
Normal 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: I’ve gone from “no backups” to “raid is a backup” to “two zfs pools in one box”, and decided it’s 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, I’m 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 it’s great, but I’m 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 I’m planning on building will all be based on used consumer hardware, so I’m limited by what would be available on normal mATX boards. This doesn’t include IPMI, and if I go with AMD-based CPUs, doesn’t include an iGPU either. So I either need to get cheap GPUs to add to the second PCIe slot (which I then can’t 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, I’m 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.
|
||||
|
||||
Here’s 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 Proxmox’s 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
|
||||
|
||||
|
||||

|
||||
*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 they’re cheap and not really ideal for proper cooler pressure, but god damn why can’t all cooler installations be this easy? Some of the shit I’ve 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 don’t mind warping as much as a lot of people seem to, I’ve used a lot of warped PCBs in my day and they’re 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)
|
||||
|
||||
138
_posts/2023-05-19-kvm.markdown
Normal file
138
_posts/2023-05-19-kvm.markdown
Normal 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 don’t 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 it’s 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 I’m 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 I’m using supports network control (but it’s not a network KVM, it can just switch inputs over the network) and I’ve 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. I’m using the default IP of the Tesmart and a /31 subnet to avoid changing it, but if you do change the IP you’d 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]
|
||||
```
|
||||
29
_posts/2023-05-19-welcome-to-jekyll.markdown
Normal file
29
_posts/2023-05-19-welcome-to-jekyll.markdown
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Welcome to Jekyll!"
|
||||
date: 2023-05-19 00:56:15 +0200
|
||||
categories: posts jekyll update
|
||||
---
|
||||
You’ll 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 [Jekyll’s 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/
|
||||
Reference in New Issue
Block a user