Markus Schmidl


Planning and Building a Serverroom


Around 2016, the Dresden Chaos Computer Club moved into its new home, the newly founded culture and housing cooperative Zentralwerk. This allowed us to set up IP networks for the whole house. We save a lot by getting two business tariffs instead of 30+ individual consumer tariffs. We have a fibre uplink and a Starlink fallback. Two servers route the traffic, plus around 15 switches and 60ish OpenWRT access points. Check it out here

There was no place for a server room, nor did anybody think about building one at that time, so the networking closet in the floor became the server room. It was always warm; we had to have doors open also during the night. Interestingly, we did not receive any complaints from our neighbours on the next plot. Some remediation attempts took place, i.e. fixing the overheating wiring and always upgrading to newer hardware when we got donations. Though one thing did not change over the years: The rack was producing a lot of unbearable noise and quite some heat.

There were still two non-basement rooms that were a bit neglected during the renovations; nothing really changed here in the last forty years, except for some new pipes. A smaller room (ca. 5m²) for storage and a bigger room (ca. 10m²) that fits a rack or two. They were fitted with 1 of 2 doors and 0 of 2 windows.

The initial talks about this room started in early 2025, and a lot of planning followed. One of the goals was to get a rack and ventilation in the room as cheaply as possible. Around 5000€ of funding was allocated by the start of 2026. All work was done by ourselves, mostly people from CCC.

Planning was rather straightforward: get the paint off the walls, fix the windows, install a second door, paint and do the installation of the ventilation and electrics. Stripping the old flaking paint off was very tedious and also not possible in some places, so we decided to put in a plasterboard ceiling and also wall off the exposed pipes. We also had to fill in a big hole to the basement. Two tiles needed to be replaced; we used some of our leftover tile stash and refurbished it by soaking in an etching solution for a long time. The door opening needed to be widened by a couple of centimetres; this produced quite a nice brick slurry, yummy. All still very basic stuff though for a high-rise bunker.

Getting the heat out is a key issue of a server room. Unfortunately, an aircon was out of the picture; the inner courtyard that was facing the room should remain quiet. This left us with pushing the cool air from the outside into the room, not really a downgrade from the previous solution. The challenge quickly turns to: Where do we place two silences, appropriate air filters and a ventilator?

As for sizing those components, we were constrained by the window for the air inlet and the size of an existing pipe that we use as the air outlet. This left us with the next size up to 200mm. The next component to pick was the ventilator; it should deliver a high airflow volume at that static pressure, mostly defined by the filters (G3 + F7 filter). We calculated 647 m³/h, which should allow us to dissipate 2.2kW over the air at a delta of 10K. There is also some heat dissipation through the wall; we currently cannot measure this effect since we do not have a sensor for outgoing air temperature.

We placed an ESP with a BME280 sensor in the rack and use its data to control another ESP at the fan. There is also one sensor for monitoring the inlet temperature. Since the sensors do not communicate directly but rely on quite a tech stack (wifi, routing, VM host, influx), we have to look at safety. If the fan controller fails to fetch data, we turn it to maximum fan speed. This may lead to a low-temperature event, which we have to protect against with a bimetallic switch inline to the fan.

To tune the PI controller, we performed a step response. Then the fan was set to minimal speed; we waited for the temperature to settle and switched the fan to maximal speed. The resulting temperature settling curve was then used to estimate a first-order transfer function with dead time. The method described by Sigurd Skogestad and Chriss Grimholt was then used to estimate good coefficients. See “The SIMC Method for Smooth PID Controller Tuning”, Chapter 5 in: R. Vilanova, A. Visioli (eds.), PID Control in the Third Millennium, Advances in Industrial Control, also accessible here.

There is still room for more hardware and a second rack, but we are definitely at our heat dissipation budget. We may be able to use the geothermal loops buried in the backyard to dump our heat into, or find another place where we can install an aircon outside unit. If we install more GPUs and therefore consume more power, we need some sort of heat pump for the warm months. We also plan to install fibre optics to connect our access switches with both core switches.

Many thanks to all involved.


View My GitHub Profile View My LinkedIn Profile