Jiyu Software

PHP - Laravel - Front-end - APIs and integrations - Design

FLoC is Google's newly pitched idea for tracking users online. I will not be going into details here, so I recommend you read EFF's article on FLoC for the necessary background information.

Website-based opt-out

According to the specification websites will be able to opt-out of the proposed FLoC system by adding Permissions-Policy: interest-cohort=() in their response header.

However, I will not be adding the line to any of my websites.

Why? I simply think it should not my job as a web developer to protect users from their own webbrowser that is collecting data on them. Adding this line to your HTTP Headers means you are complying with how Google wants to run the web.

I urge other web developers to not add this response header to their websites, but instead make a pop-up informing your users about FLoC and asking them to install a non-FLoC-enabled browser, such as LibreWolf or GNU IceCat

The server

As may be brought to your attention in my previous blogpost everything Jiyu runs on completely free software. Today, I'd like to share the complete build process and specifications of the server that makes all of this possible.

Picking a motherboard

Because of non-free BIOS software the amount of hardware that is capable to run without any proprietary software is currently very limited. Any chipsets made by AMD after 2012 and any chipsets made by Intel after 2008 are already out of the question.

The best option for a completely free motherboard is avoiding the X86 architecture altogether and using an IBM POWER9 motherboard with OpenPOWER, such as the Talos II Mainboard. While I absolutely love this idea, currently the pricing of a Talos II board starts at $1500 without even including a CPU. I would definitely consider buying one of these in the future at a time when an investment like this makes sense for me to do so. So, I went back to looking for a X86 motherboard I could use.

Intel has a few motherboards available that use a 755 socket (Intel Core 2 Duo), which is very similar to my Thinkpad X200. While these motherboards are still fine for average desktop usage, two cores are not gonna cut it for the things that I want my server to do.

Eventually I ended up going with team red, AMD. All the free software compatible motherboards with AMD are intended for workstations and servers. In this case I'm building a server so that is exactly what I need.

Not wanting to go in great depth explaining the differences between the available AMD motherboards I ended up going for the ASUS KCMA-D8 motherboard. This motherboard supports the C32 CPU socket. However it has a dualsocket design, allowing you to use 2 CPUs which is a good way to compensate for the outdated architecture. This board also fits conveniently in a standard ATX case. You can get this board for about €350 which fits into my budget a lot better than the Talos II.

Getting the parts

All the parts

Getting the parts for this build was not the easiest task in the world. Most of the parts I needed for this build are no longer produced and are not easy to find.

The motherboard

Getting the motherboard was easy thanks to Vikings. I've first heard about these guys at FOSDEM in 2018. This Germany based company sells refurbished free software compatible hardware and runs free software hosting solutions as well. They sell a ASUS KCMA-D8 with free boot firmware preinstalled and it is RYF certified.

Their hardware comes with a 2 year warranty and their support is eager to help you out with your build. If you want your own free computer without going through all the same trouble scavenging parts from all over the world like I did I recommend buying their D8 prebuilt computer.

The CPUs

Like most parts in this list the C32 socket CPUs that this motherboard needs are long discontinued. I was lucky to find an eBay seller from the United States who was selling a lot of used Opteron 4284 CPUs for only $25 each. I picked up 2 of them to fit the two CPUs slots on the motherboard and hope they worked.

With 8 cores and threads, a base clock of 3 GHz and boost clock of 3.7 GHz this was quite a high-end option at the time these CPUs were produced. Especially if you have 2 of them they can easily keep up with the average computer produced today.

The only real downside of this CPU is that it uses the AMD Bulldozer architecture, which is known for having quite a high TDP compared to today's CPUs. But personally I think a little higher power consumption is a small price to pay for freedom.

The quest for coolers

The hardest parts to find for this computer were the CPU coolers. There are not a lot of coolers available for C32 sockets nowadays. On sites like eBay and AliExpress you can find copper blocks that work on this socket which are probably adequate, but I wanted to have real coolers that use actual heatpipes. Maybe mostly for aesthetic reasons as well, nothing visually screams “I have power” like a dualsocket motherboard with two giant coolers on it.

It turns out that Noctua used to make coolers for C32 sockets, a 120mm and 90mm version. I quickly found a Dutch store that still had 2 of the 120mm versions in stock and ordered them. Upon arrival I found out that they only sent me a single cooler and charged me back the money for the second cooler because there was a stock error on their listing.

Now I only had a single Noctua cooler for my dualsocket sytem and finding a second one wasn't gonna be easy. I searched for this cooler on almost every single European computer store and I learned how to say “out of stock” and “discontinued” in about 15 languages.

Eventually I found a 90mm Noctua cooler in the refurbished section on Coolmod.com, a Spanish hardware supplier. There was one problem however, Coolmod does not sent packages outside of Spain and Portugal. I signed up for a Spanish mail forwarding service and about a month later I was to be able to receive my cooler in the Netherlands.

Now I had two Noctua coolers for my system, a 120mm and 90mm, but it will have to do the trick.

The power supply

The PSU is the only off-the-shelve part I've used while building this computer. Power supplies haven't changed at all in the past 10 years and mostly still come with the same connectors. I ended up buying a Corsair RM550x because it has a 80plus Gold rating. A high power efficiency rating is important for a computer that will stay on all day and night.

The RAM

The ASUS KCMA-D8 motherboard has 8 slots for DDR3 memory. What's great about this motherboard is that also supports Error-correcting code (ECC) memory. ECC memory can detect and correct when data corruption occurs. This is a feature that you will typically not find on your average desktop computer because it is only really necessary in critical systems.

Currently I've installed 16 GB of non-ECC DDR3 memory that I've already had lying around. If I ever think 16 GB of RAM is no longer sufficient I will definitely upgrade to ECC supported RAM sticks.

Building the computer

Building a computer with mostly second hand parts is always very exciting. You're never sure if everything is gonna work if you build a PC from parts that are by previous owners probably considered a pile of random old junk.

First thing I noticed while building this computer is this board was quite picky when it comes to RAM. I have a pile of random assorted DDR3 RAM sticks. With trial and error I eventually found a set of memory that worked and the computer managed to post. Below is the computer booting from a Parabola LiveUSB for the first time.

First boot

Now to check if both the used CPUs from eBay are functioning I ran nproc.

nproc showing 16 cores

And it detects all 16 physical cores!

According to Vikings this particular motherboard can get pretty hot on the southbridge. They suggest installing a fan on the southbridge cooling block.

At first I was a little confused because there doesn't seem to be any place to mount a fan on the cooling block. I e-mailed Vikings about how I'm supposed to do this and I got the following reply:

With the zip ties that have been included in the shipment :) Perhaps not very sophisticated but does its job. – Thomas, Vikings GmbH

So that's what I did, and indeed it does the job.

Southbridge fan

Now all that's left to do is move the server into the case and connect the hard drives.

The server, fully assembled

And there you have it, my ultimate freedom machine, fully assembled.

Even with a free operating system such as GNU/Linux most everyday computers still require proprietary software to function properly. Because this is usually required for things such as GPUs and Wi-Fi cards that people want to use, most GNU/Linux distributions ship with this proprietary software included.

In order to exclusively run free software you will have to make sure that all of your hardware works without proprietary software. This is more than just ensuring compatibility with free operating systems and drivers, but includes running free BIOS firmware and CPU microcode as well. With all of this taken into account the choice of hardware becomes very limited.

In most cases hardware that is compatible with free software is not the latest and newest hardware available. If the original manufacturer did not release specifications of the hardware this means that the hardware will have to be reverse engineered, which can take a long time. This means that if you want to use 100% free software like me, you'll have to settle with some older (but still good) hardware.

The Free Software Foundation runs a “Respects Your Freedom” certification program. The companies listed here go out of their way to create free software compatible hardware. All the hardware used for Jiyu Software is RYF certified or is similar to RYF certified hardware.

Lenovo Thinkpad X200

My Thinkpad X200

For most of my everyday computer tasks I use a Lenovo Thinkpad X200 from 2008. At the time it was a top of the line mobile workstation, with a list price of €1200 to €1800 depending on your configuration. Today in the year 2021 this is not a very impressive machine but it is still capable of doing everything most people expect a computer to be able to do, such as running web browser and instant messaging.

The small 12 inch size makes this machine still very nice to carry around and with a fully charged battery it will last about 5 to 6 hours without a power source. The only thing missing for some people on this machine is a touchpad, but I prefer using the TrackPoint anyway.

Personally I've had quite a history with this particular machine. Hardware like this usually ends up being sold online as “refurbished” for a very low price when they are written off by other companies after 4 to 8 years of use. I managed to pick this one up for only €100 in 2014 and I've used the machine ever since. Probably the best barkie I've spent in my life.

Today the machine is quite a bit different than when I first got it. I've upgraded the memory to the maximum size of 8 GB and swapped the 160 GB hard disk for a 250 GB solid state drive. I had to replace the default Intel WiFi card with a free software compatible one from Atheros. I've upgraded the battery to a brand new 9 cell unit and I've also replaced the screen because the backlight broke after about 11 years of use.

Most of the reason I'm still using this 13 year old laptop today is because it is part of the last series of laptops using a Intel Core2Duo based chipset. Newer Intel chipsets are not (yet) capable of running free boot firmware such as Libreboot.

Because of the limited capabilities of this machine I don't run a whole lot more than just a web browser on this machine. I make sure I can do everything including software development from inside my browser using a web based development environment. Most of the computing I do on this machine is actually being done by my server, which is coming up next.

The powerhouse

The server

The real backbone of Jiyu Software is sitting right here in the corner of my living room, my server. Currently this machine is running 2 Pleroma instances, Jitsi, a VPN, a fileserver, my development environments, software builds and many other things. Everything my X200 can't do efficiently is offloaded to this machine. The blog you're reading right now is hosted on this machine.

The server

This server uses a RYF-certified Asus KCMA-D8 motherboard supplied by Vikings. This motherboard has support for dualsocket AMD Opteron 4248 CPUs giving me a total of 16 physical cores.

Getting all the parts together and building this computer was an interesting journey. You can read more about the server here.

The idea of a blogging platform that supports ActivityPub is a great one, but WriteFreely is unfortunately missing a lot of essential fediverse features at the moment.

I'd like to be able to interact with other users and I'd like to have more control over how posts are published. For example I would prefer it if there was an option to share blogposts as links instead of dumping the full text on the fediverse. Also WriteFreely does not have the capability to set your profile information like a description or avatar, it is very limited.

I will continue to use WriteFreely for this blog, I absolutely love it as a writing tool, but I will turn the federation features off for now. Instead I will now be hosting my own single-user Pleroma instance for Jiyu. This allows me to publish blogposts and other things in the way that I want and also interact with them better. I think this is the better option since it also allows me share small updates that do not require a full blogpost.

This will be the last post on @ricardo@blog.jiyu.dev. Please follow @ricardo@fedi.jiyu.dev instead.

This is the start of the Jiyu Software blog. I've decided to start a blog to show the world what this is all about.

Here I want to show off my work, web development tips and tricks and talk about software freedom issues or anything else that interests me.

I'm already working on drafts for the following topics:

  • Building a powerful RYF-certified server computer
  • Running Laravel development environments with Docker
  • The current state of mobile phones and freedom
  • How I do my computing
  • A practical guide to the decentralized internet
  • How to make your website fully LibreJS compliant

Make sure to follow this blog.