• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Jim's Projects: Community Server
#1
Since fixing the physical networking in my house (cables, routers, etc) a couple of years ago, I'd been planning to build a "project" server of some sort to consolidate the services running on raspberry pis and virtual machines on my desktop. It would also be a space where I could easily spin up a new VM to use as a dev environment or host a new service/website; a sort of catch-all utility box that would also provide network file sharing and other general server duties.

Last year, I made the plan to put this project together in 2026...then fucking AI happened. At the same time, [USER=28507]@Digital Prophet[/USER] had a need for something similar - a machine he could put on the network share to drive his NAS. Then we started having notions of pulling our internet services in-house because of... :gestures around:

So last month I panic-bought everything I could afford instead of getting what I wanted by parceling it out through the year like I planned. As a result, I am completely unprepared to get everything set up - and there is a LOT to set up.

In this thread, I'm going to lay out my to-do list so interested parties know where I am - and it will keep me working on it by you guys keeping me honest Wink

I plan to do this more or less in order. Let me know if you have any questions about the progress, or if you have suggestions.

Network/Physical Infrastructure COMPLETE!
  • Cut and assemble shelves
  • Hang server shelf
  • Hang shelf to mount UPS
  • Remove switch
    • Alert DP so he can adjust his access point IP
  • Run new electric lead
    • Install plug
    • Remove old power strip
  • Make temp (long) network cable to assist during server assembly
  • Assemble server
  • Test
  • Cable clean up/management
Side Quest - FIX DP's INTERNET!!!! COMPLETE!
  • Diagnose
  • Replace cable run from router to upstairs
Software and Network COMPLETE!
  • Install host OS (Debian 13) on nvme
  • Assign IP address
    • server IPv4 config
    • router config
  • Create user for DP
  • Install:
    • sudo (assign privileges to users)
    • packages for QEMU/KVM (virsh et al)
    • nfs
    • samba
    • ssh (configure for users as needed)
    • ufw - allow ssh
  • Create and configure virtual network
    • router config
  • Test ssh access
Jim's Storage[B] COMPLETE![/B]
  • Install drives
  • Format each with one ext4 volume
  • Create mount points, change owner and permissions
    • /mnt/jim/Media
    • /mnt/jim/Files
  • Update /etc/fstab to mount on boot
  • Transfer files from backup media
  • Configure nfs
    • update /etc/exports with allowed client IPs
    • allow nfs for client IPs in ufw
    • on clients, update /etc/fstab with share mount points
  • Test nfs access on clients
  • Develop backup plan
DP's Storage COMPLETE!
  • Install drives
  • Create mount point(s), change owner and permissions
    • /mnt/dp/<whatever>
  • Update /etc/fstab to mount on boot
  • Configure samba
    • For DP: samba is the file sharing tech that allows network file sharing to Linux and Windows clients from a Linux server.
    • I have not done this in a while. I need to look up the steps, but I don't think it is that hard
    • configure Windows clients with samba - again, haven't done this in a while, but I think Windows network discovery works with samba so its probably not that painful
  • Test samba access on clients
VM Setup COMPLETE!
  • Create "template" VMs from which to clone future VMs
    • headless web server (Debian 13) - decided against this, there is no reason considering setup without a desktop is incredibly fast
    • basic GUI "sandbox" (Debian 13/KDE)
  • Create two shell scripts
    • vm_start.sh - accept one parameter for VM name
    • vm_stop.sh - accept one parameter for VM name
  • Create template systemd service (to launch/shutdown/monitor VMs); each VM will have a service, using the shell scripts to start/stop the VMs gracefully when the host is booted/shutdown
  • Create systemd service for each VM
  • Test virtual network, make sure a VM is reachable from other nodes
Cleanup IN PROGRESS
  • Move server to closet
  • Tidy new cable runs
  • Sweep
  • Garbage
Hosted VMs
The following virtual machines will be part of internal network infrastructure

Audio (ben-audio) | CPU: 2 / RAM 4GB IN PROGRESS
Dedicated server for Navidrome and Audiobookshelf streaming services. Install services and migrate data from existing VM (will not be doing a lift-and-shift as planned, but will be preserving app data).

Nextcloud (ben-cloud) | CPU: 2 / RAM 8GB COMPLETE!
Web application platform, primarily used for file sharing. Will have a limited number of accounts available for others to use as storage (like Dropbox et al). Space will be determined by how much I actually have divided by the number of accounts.


Utility (ben-utils) | CPU: 2 / RAM: 4GB COMPLETE!
While setting things up, I realized it would be handy to have an "auxiliary" computer that I could hand off tasks to, like one-off services I only need temporarily, or running a nextcloud client that syncs up my music files (for use on the music server) - essentially things that I'd like to run from time to time but would rather not run on my daily driver and don't belong on the server. This is also likely where I will do torrent-ing and be a development environment

Future VMs
After some workload testing of various VM configurations, I have been able to adjust CPU and RAM allowances to better reflect the work requirements for each machine. RAM will probably fluctuate as it's not easy to predict what the need is without knowing what is actually going to run, but for CPU I've settled on 1 or 2 CPUs depending on workload. Unless there is a plan to have a heavy service with more than a handful of simultaneous users (like video streaming or a gaming server) devoting any more than 2 CPUs is overkill. If the VM will be a headless web server for a blog no one reads, 1 CPU is just fine.

The host will need at least 2 CPUs and 4GB RAM for it's own use. With the existing VMs, this will leave 8 CPUs and 28GB RAM. Here is the plan for that space:

BenBS (working title) | CPU: 2 / RAM 4GB
Server to host personal blog, games, etc through a secure shell interface. This doesn't actually exist yet and is a project for another time.

Pete's Playground | CPU: 2 / RAM 8GB
A general purpose place for [USER=4840]@BigPete[/USER] to do things if he doesn't want to spin up something on a hosting service. I'll leave it up to him to do whatever (let me know what distro you want - if you don't have a preference, I would recommend Debian 13).

Webserver | CPU: 2 / RAM 2G
A headless general purpose web server with Apache/Node/SQLite to host internet sites.
  Reply
#2
Finally an update. I managed to cut and assemble the shelves I need from some mdf from an old desk. The only saw I had on hand was the jig saw, so its a miracle any line is straight. I learned *again* the lesson of drilling pilot holes, something which I refuse to learn until I blow out the edge of a board for the millionth time. That is what wood glue and clamps are for I guess.

Weighed the UPS and it needed more than a bracket so I made a full shelf with supports.

I don't know if I'm going to paint them. If I do, I will need to pick up some more black gloss rattle cans.
  Reply
#3
Made a small bit of progress today. Finally hung the server shelf, UPS shelf, and eliminated the switch. Got distracted diagnosing [USER=28507]@Digital Prophet[/USER]'s internet speed which he finally narrowed down to his main cable lead. Luckily, I have the material to replace it, just need to do it.

I also discovered that the electric I'm getting to the closet is provided by a home extension cord...granted its a 3-prong, but that will need to be replaced too. At least I have the materials (that being a bunch of heavy-duty outdoor extension cable I bought to run wedding electric in the park). Its only a pain because I have to go into the crawl space (yay!).

Hurray! More work!

EDIT: I did not paint the shelves.
  Reply
#4
Is this closet where your Modem lives or will you need to run wiring to it? (Or just use WiFi I guess)
  Reply
#5
BigPete, post: 2269946, member: 4840 Wrote:Is this closet where your Modem lives or will you need to run wiring to it? (Or just use WiFi I guess)
Yes - thankfully everything is already wired there, just have to juggle some cables around - which is mostly done, just need to replace the one going upstairs (to [USER=28507]@Digital Prophet[/USER]'s room)

EDIT: I might replace mine too while I'm at it.
  Reply
#6
Post pics.
"I don't mind if you don't like my manners. I don't like them myself. They're pretty bad. I grieve over them on long winter evenings."-Philip Marlowe
  Reply
#7
Oh man, that would reveal some terrible things Wink

I'll snap a couple of pics next time since there may be something vaguely interesting to look at
  Reply
#8
After some misadventure, got [USER=28507]@Digital Prophet[/USER]'s new network cable run in. We were not able to use the old route - we couldn't even get twine through it, and the old cable broke while removing it. Since it was running along-side a vent....well fuck it, it's going through the vent. Things went pretty fast after that.

While I had my tools out, made a cable long enough to reach the living room couch so I can lounge-build the machine.

So, no pics this time because I decided not to run the electric. I think I might be done for the day - at the very least it is nap time.

EDIT: Here's a pic of DP's internet speed instead

.png   upload_2026-3-28_12-23-37.png (Size: 137.61 KB / Downloads: 64)
  Reply
#9
[USER=4840]@BigPete[/USER] - to continue our conversation from Tech Chat, I think I was trying to make it far more complicated than it needed to be. Apparently, at least according to this forum thread, it should be as simple as changing the port ssh uses per machine - as long as I do not duplicate ports, I can NAT as many ssh connections as I want.
  Reply
#10
Ah, that makes sense. Sorry I didn't get a chance to look into it myself.
  Reply




Users browsing this thread: 1 Guest(s)
test
.tcat example
.trow1 example
.trow2 example
.trow_sep example
.trow1 example
.trow2 example
.tfoot example
Recent Posts
Not much progress. The vps is very...
BigPete — 07:25 PM
7670193074886200589 View:
BigPete — 02:28 AM
Digital Prophet — 07:45 PM
I’m still working on this, but got ...
BigPete — 02:36 AM
7dR1c65Elfk View:
BigPete — 02:53 PM
forum statistics
  • Members: 11
  • Latest member: Admin
  • Forum threads: 72
  • Forum posts: 433