website/content/posts/worst-first-build-6.md
Anthony Wang 1fe3f0e1e7
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Fix broken matrix.org links
2023-03-06 21:21:23 +00:00

5.3 KiB

title date type tags
Worst First Build - Homelab Operational! 2021-03-31 post
Hardware
Linux

Originally posted on my old blog

Over the past week, I've been getting my new build set up. It's been quite satisfying: I'll run into more than my fair share of issues, but problem solving for the win!

The OS installation went relatively smoothly. Partitioning disks was a bit tricky but I got it to work. I wanted to try out systemd-networkd and systemd-boot for my new server, and I had to spend some time researching documentation. One of them worked perfectly, the other one not so much, so I ended up sticking with the tried-and-true NetworkManager. I also got SSH and VNC working as well, so I was off to great start.

My first major headache was XMP. To but it simply, enabling XMP always caused me to fail to boot, so something was definitely wrong. I tried various voltages and frequencies, at the highest I could get it to go was 3533MHz, just 66MHz below my RAM's rated speed.

After coming through online forums and dozens of Reddit posts, I finally found a solution. An anonymous Redditer suggested changing VDD_SOC to 1.00 V to someone with a similar solution, so I gave it a try. Bingo! It worked and my RAM crushed the RAMspeed benchmark.

Next! My next challenge was to set up Nextcloud. Fortunately, ArchWiki has a nice guide, updated and refactored for Nextcloud 21 and there are some other good ones out there, so that went surprisingly smoothly as well. I also had to obtain a domain for my server, but the GitHub Education Developer Pack came to the rescue! The most difficult part was probably SSL certificates since I'll never done it before, but it worked out in the end. certbot for the win!

Anyways, my biggest challenges still lied ahead. Matrix.

Matrix is a great protocol. There's a nice public homeserver that you can try and get your friends to sign up for. But still, it's public and owned by someone else. Plus, you can't run some bridges with it. So, that left me with the seemingly easy task of setting up my own homeserver.

Way easier said than done. Installing the reference homeserver, Synapse, is straight up hellish. The ArchWiki was marginally helpful. The official documentation was too terse. It didn't make my life easier that I wanted to configure delegation to run my homeserver on a subdomain but show as running on the main domain, but I finally found a guide that would help me do it.

It took... a while. I ran into numerous problems, ranging from forgetting to cd into /var/lib/synapse for the homeserver installation to having SSL certificate problems that I finally fixed by issuing one for all my subdomains. Phew. I still had one big challenge still remaining.

The [https://en.wikipedia.org/wiki/Network_effect](network effect) sucks. All my friends use Discord. Fortunately, I had picked Matrix partly due to its strong bridge support. I tried giving mx-puppet-discord a shot and it worked perfectly!

However, there's also a package for it in the AUR that comes with some extra goodies such as a systemd service. What comes next? Well, I'll quote my post on the AUR exactly:

For some reason, after editing /etc/mx-puppet-discord/config.yaml, when I run node /usr/lib/node_modules/mx-puppet-discord/build/index.js -c /etc/mx-puppet-discord/config.yaml -r -f /root/registration.yaml as root, the command never stops running. Checking my active processes, it doesn't even seem like node is doing anything. The same thing happens with node /usr/lib/node_modules/mx-puppet-discord/build/index.js -h which should print the help message. Does anyone know why this is happening? Perhaps something is wrong with my node installation?

EDIT: I generated a registration.yaml using the instructions in the GitHub repository, and now when I try to start mx-puppet-discord.service, I get the error Failed at step NAMESPACE spawning.

EDIT 2: I finally got the original GitHub repository to work. I don't know what's wrong with this package though.

EDIT 3: I figured out how to fix the systemd error: Turns out you need to manually create the /var/lib/mx-puppet-discord directory.

EDIT 4: Finally got a working setup! I first cloned the repo directly from GitHub, configured it, transferred ownership to the mx-puppet-discord user and reused the systemd service. Now it works perfectly!

EDIT 5: Synapse wasn't starting up fast enough on boot for mx-puppet-discord, so I had to add ExecStartPre=sleep 5 to the service file for it to work after a reboot.

So there you go. That's how you set up mx-puppet-discord, after hours of problem solving.

I also set up Gitea to mirror my GitHub repositories, but nothing notable happened with that.