Public
1. Announcements & Introduction
Hi PrecisionPlanIT enjoyer,
We will dedicate this space to guides once more in the months to come. I am so-so-so-so sorry to anyone who makes it here by way of links that I dropped in the past that are now deadlinks as none of the content exists anymore...
The original guides located at this site are lost w/o backups due to mishaps with CEPH and poor planning ~ not having backups.
Daily backups ~ Going forward I have daily backups being generated at the end of every day. We are in no fear of losing data again at this point. I will be better as a sysadmin going forward. I knew better, I thought I could procrastinate creating backups another few weeks as it had been 7+ years without and this is the first loss of data since I began hosting content to the WWW... Well no more of that. We have daily backups and we are working towards getting everything back online and better than ever before!
Thank you for your patience and understanding during this relaunch of our services,
Kai ~ aka. SoFMeRight
Owner of PrecisionPlanIT & SoFMeRight Gaming
Ubuntu Chronicles
NGINX Shenanigans
I will be exposing my self hosted repo soon that will contain some ansible scripts and stuff I used to build out my environment without any guesswork. Also will be the repo I am using to build my flux+K8s cluster that is to be my debut into full fledged gitops. I will share ALL of my nginx configs etc from there as well when we get to that point. Sorry guys its a trickle getting back up and going.
Most recent updates: 02/01/2025 09:04:32 UTC
Generate SSL Certs the caveman way with simple Terminal Commands.
Installing certbot if needed:
sudo apt-get install python3-certbot-dns-cloudflare
Store the cloudflare api token key:
mkdir /some/path/to/the
sudo chmod 0700 /some/path/to/the
sudo chmod 0400 /some/path/to/the/api_access_secret.ini
sudo nano /some/path/to/the/api_access_secret.ini
The contents of the api_access_secret.ini
should be:
dns_cloudflare_api_token = <yourtopsecretcloudflareapitoken>
Pulling wildcard certs for a domain:
sudo certbot -v certonly --dns-cloudflare --dns-cloudflare-credentials /some/path/to/the/api_access_secret.ini -d 'prplanit.com' -d '*.prplanit.com'
Return Public IP with curl, one-liner:
curl ifconfig.me
SAMBA/CIFS
Malformed Interfaces Issue
This issue was originally introduced to Ubuntu via a kernel update as such it is related to a kernel issue.
Solutions I found for this issue involve kernel patching/updating or changing the cifs settings. I recommend the latter, as changing the kernel is a more invasive solution that may result in new issues (see below).
Install a hwe kernel (not currently recommended):
Warning: using this solution broke nvidia-smi in a host with most of its workload being GPU accelerated docker/docker-compose. Updating the kernel may cause other issues but it did resolve this issue without changing the cifs settings and I am certain that the issue can be resolved with a kernel patch but I don't remember what method I used previously.
apt-get install linux-generic-hwe-22.04
Replace the (22.04) with your distro. I do not anticipate you should be here if you are running 24.04. My testing is with Ubuntu 22.04.
CIFS Settings (Recommended):
Without installing a different kernel or patch, the issue is resolved by adding the ,vers=2.1 option in the fstab mount or docker-compose cifs mount. We are not going to investigate the differences between cifs 3 vs 2.1 for the scope of this issue. Do research further if this will be a concern.
Examples:
volumes:
plex_config:
driver: local
driver_opts:
type: cifs
o: "iocharset=utf8,username=<username>,password=<somepass>,vers=2.1,rw,uid=<changethistotheproperuid>,file_mode=0777,dir_mode=0777"
device: "//192.168.1.1/<sharename>"
//192.168.1.1/<sharename> /mnt/path cifs username=<username>,password=<password>,uid=1000,gid=www-data,file_mode=0777,dir_mode=0777,noperm,vers=2.1 0 0
If you discover a more viable solution please feel free to reach out by any method available and I will update this information.
This page is redirected to from a shortlink. That short link was originally created before a disaster event in which all non-critical application data that did not reside on our NAS was lost without backups. At this time we did lose our original public facing documentation. I am working on restoring the state of the documentation but I wanted to leave a note to clarify why the state of this link might seem less than what would be expected. Please keep backups and test them to make sure they work ~ Computers 101 <3
IDP/SSO: Zitadel
Software Integrations (Tested In-House)
At KB.precisionplanit.com, we pride ourselves on our commitment to continuous improvement and adaptation. As part of our mission, we've integrated a variety of open-source, Identity and Access Management (IAM) compatible FOSS (Free and Open Source Software) applications into the IDC Zitadel. We present to you our record of the FOSS (Free and Open Source Software) solutions that have been tested and configured in-house for seamless integration.
Details regarding the successfully tested & integrated applications if available will be provided below.
Tested Applications:
Name | Info | Integration Method |
Zitadel Config + App Config / Environment Variables |
bookstack |
|
OIDC, code auth |
Bookstack Docker Environment Variables:
AUTH_METHOD=oidc |
mealie |
|
OIDC, code auth | |
netbird |
|
OIDC, followed official guide | |
osticket |
a widely-used open source support ticket system |
OIDC, code auth | |
portainer |
|
OIDC, codeauth |
Plan to test soon:
Name | Info | Integration Method |
Zitadel Config + App Config / Environment Variables |
gitea |
|
||
linkwarden |
|
OIDC, follow official guide | |
openwebui |
|
||
photoprism |
|
FAILED TESTING:
Name | Info | Integration Method |
Zitadel Config + App Config / Environment Variables |
Proxmox VE | OIDC |
Does not like that Zitadel returns more than one audience. Proxmox devs may be working on a fix. |
These examples are just the beginning and provided with the sole intention to assist with verification of software compatibility; we encourage further exploration of our integrations to find the perfect solutions for your needs. We will try to provide best steps to assist with your implementation process, however it may require additional tweaking to reach your desired result.
Please check back regularly for updates as new applications may be added to this list and the steps will likely be updated based on ongoing testing and improvement efforts.
Note: Below this line we will include any resources we find in the present or future that we think may be helpful to those who are trying to find methods to integrate software that does not have a straightforward implementation flow. We are still new to Zitadel so this is currently a placeholder.
Docker Compose
Netbox
My docker-compose:
version: "3.7"
services:
netbox-postgres:
image: postgres:15-alpine
container_name: netbox_postgres
hostname: netbox-postgres
restart: unless-stopped
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "netbox", "-U", "netbox"]
timeout: 45s
interval: 10s
retries: 10
volumes:
- /mnt/app_data/Server/Web-App/_docker-stack/netbox/postgres:/var/lib/postgresql/data
env_file: stack.env
environment:
- POSTGRES_DB=netbox
- POSTGRES_USER=netbox
netbox-redis:
image: redis:7-alpine
user: 1026:100
command: redis-server
container_name: netbox_redis
hostname: netbox-redis
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
restart: always
volumes:
- /mnt/app_data/Server/Web-App/_docker-stack/netbox/redis:/data
netbox-server:
image: lscr.io/linuxserver/netbox:latest
container_name: netbox_server
hostname: netbox-server
env_file: stack.env
environment:
- PUID=1026
- PGID=100
- TZ=America/Los_Angeles
- ALLOWED_HOSTS=['netbox.domain.com', 'netbox.domain.internal', '172.122.122.122', '127.0.0.1']
- DB_NAME=netbox
- DB_USER=netbox
- DB_HOST=netbox-postgres
- DB_PORT=5432
- REDIS_HOST=netbox-redis
- REDIS_PORT=6379
- REDIS_DB_TASK=0
- REDIS_DB_CACHE=1
volumes:
- /mnt/app_data/Server/Web-App/_docker-stack/netbox/config:/config
ports:
- 13031:8000
depends_on:
- netbox-postgres
- netbox-redis
restart: unless-stopped
When I changed the IP addresses I expected to only need to change the hosts IP config in the compose however it was necessary here as below as well.
nano ~/netbox/config/configuration.py
#########################
# #
# Required settings #
# #
#########################
# This is a list of valid fully-qualified domain names (FQDNs) for the NetBox server. NetBox will not permit write
# access to the server via any other hostnames. The first FQDN in the list will be treated as the preferred name.
#
# Example: ALLOWED_HOSTS = ['netbox.example.com', 'netbox.internal.local']
ALLOWED_HOSTS = ['netbox.domain.com', 'netbox.domain.internal', '172.122.122.122', '127.0.0.1']
# PostgreSQL database configuration. See the Django documentation for a complete list of available parameters:
# https://docs.djangoproject.com/en/stable/ref/settings/#databases
DATABASE = {
'NAME': 'netbox', # Database name
'USER': 'netbox', # PostgreSQL username
'PASSWORD': '<redacted>', # PostgreSQL password
'HOST': 'netbox-postgres', # Database server
'PORT': '5432', # Database port (leave blank for default)
'CONN_MAX_AGE': 300, # Max database connection age
}
# Redis database settings. Redis is used for caching and for queuing background tasks such as webhook events. A separate
# configuration exists for each. Full connection details are required in both sections, and it is strongly recommended
# to use two separate database IDs.
REDIS = {
'tasks': {
'HOST': 'netbox-redis',
'PORT': 6379,
# Comment out `HOST` and `PORT` lines and uncomment the following if using Redis Sentinel
# 'SENTINELS': [('mysentinel.redis.example.com', 6379)],
# 'SENTINEL_SERVICE': 'netbox',
'PASSWORD': '',
'DATABASE': 0,
'SSL': False,
# Set this to True to skip TLS certificate verification
# This can expose the connection to attacks, be careful
# 'INSECURE_SKIP_TLS_VERIFY': False,
},
'caching': {
'HOST': 'netbox-redis',
'PORT': 6379,
# Comment out `HOST` and `PORT` lines and uncomment the following if using Redis Sentinel
# 'SENTINELS': [('mysentinel.redis.example.com', 6379)],
# 'SENTINEL_SERVICE': 'netbox',
'PASSWORD': '',
'DATABASE': 1,
'SSL': False,
# Set this to True to skip TLS certificate verification
# This can expose the connection to attacks, be careful
# 'INSECURE_SKIP_TLS_VERIFY': False,
}
}
# This key is used for secure generation of random numbers and strings. It must never be exposed outside of this file.
# For optimal security, SECRET_KEY should be at least 50 characters in length and contain a mix of letters, numbers, and
# symbols. NetBox will not run without this defined. For more information, see
# https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-SECRET_KEY
SECRET_KEY = '<redacted>'
#########################
# #
# Optional settings #
# #
#########################
# Specify one or more name and email address tuples representing NetBox administrators. These people will be notified of
# application errors (assuming correct email settings are provided).
ADMINS = [
# ('John Doe', 'jdoe@example.com'),
]
# URL schemes that are allowed within links in NetBox
ALLOWED_URL_SCHEMES = (
'file', 'ftp', 'ftps', 'http', 'https', 'irc', 'mailto', 'sftp', 'ssh', 'tel', 'telnet', 'tftp', 'vnc', 'xmpp',
)
# Optionally display a persistent banner at the top and/or bottom of every page. HTML is allowed. To display the same
# content in both banners, define BANNER_TOP and set BANNER_BOTTOM = BANNER_TOP.
BANNER_TOP = ''
BANNER_BOTTOM = ''
# Text to include on the login page above the login form. HTML is allowed.
BANNER_LOGIN = ''
# Base URL path if accessing NetBox within a directory. For example, if installed at https://example.com/netbox/, set:
# BASE_PATH = 'netbox/'
BASE_PATH = ''
# Maximum number of days to retain logged changes. Set to 0 to retain changes indefinitely. (Default: 90)
CHANGELOG_RETENTION = 90
# API Cross-Origin Resource Sharing (CORS) settings. If CORS_ORIGIN_ALLOW_ALL is set to True, all origins will be
# allowed. Otherwise, define a list of allowed origins using either CORS_ORIGIN_WHITELIST or
# CORS_ORIGIN_REGEX_WHITELIST. For more information, see https://github.com/ottoyiu/django-cors-headers
CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_WHITELIST = [
# 'https://hostname.example.com',
]
CORS_ORIGIN_REGEX_WHITELIST = [
# r'^(https?://)?(\w+\.)?example\.com$',
]
# Specify any custom validators here, as a mapping of model to a list of validators classes. Validators should be
# instances of or inherit from CustomValidator.
# from extras.validators import CustomValidator
CUSTOM_VALIDATORS = {
# 'dcim.site': [
# CustomValidator({
# 'name': {
# 'min_length': 10,
# 'regex': r'\d{3}$',
# }
# })
# ],
}
# Set to True to enable server debugging. WARNING: Debugging introduces a substantial performance penalty and may reveal
# sensitive information about your installation. Only enable debugging while performing testing. Never enable debugging
# on a production system.
DEBUG = False
# Email settings
EMAIL = {
'SERVER': 'localhost',
'PORT': 25,
'USERNAME': '',
'PASSWORD': '',
'USE_SSL': False,
'USE_TLS': False,
'TIMEOUT': 10, # seconds
'FROM_EMAIL': '',
}
# Enforcement of unique IP space can be toggled on a per-VRF basis. To enforce unique IP space within the global table
# (all prefixes and IP addresses not assigned to a VRF), set ENFORCE_GLOBAL_UNIQUE to True.
ENFORCE_GLOBAL_UNIQUE = False
# Exempt certain models from the enforcement of view permissions. Models listed here will be viewable by all users and
# by anonymous users. List models in the form `<app>.<model>`. Add '*' to this list to exempt all models.
EXEMPT_VIEW_PERMISSIONS = [
# 'dcim.site',
# 'dcim.region',
# 'ipam.prefix',
]
# Enable the GraphQL API
GRAPHQL_ENABLED = True
# HTTP proxies NetBox should use when sending outbound HTTP requests (e.g. for webhooks).
# HTTP_PROXIES = {
# 'http': 'http://10.10.1.10:3128',
# 'https': 'http://10.10.1.10:1080',
# }
# IP addresses recognized as internal to the system. The debugging toolbar will be available only to clients accessing
# NetBox from an internal IP.
INTERNAL_IPS = ('127.0.0.1', '::1')
# Enable custom logging. Please see the Django documentation for detailed guidance on configuring custom logs:
# https://docs.djangoproject.com/en/stable/topics/logging/
LOGGING = {}
# Automatically reset the lifetime of a valid session upon each authenticated request. Enables users to remain
# authenticated to NetBox indefinitely.
LOGIN_PERSISTENCE = False
# Setting this to True will permit only authenticated users to access any part of NetBox. By default, anonymous users
# are permitted to access most data in NetBox but not make any changes.
LOGIN_REQUIRED = False
# The length of time (in seconds) for which a user will remain logged into the web UI before being prompted to
# re-authenticate. (Default: 1209600 [14 days])
LOGIN_TIMEOUT = None
# Setting this to True will display a "maintenance mode" banner at the top of every page.
MAINTENANCE_MODE = False
# The URL to use when mapping physical addresses or GPS coordinates
MAPS_URL = 'https://maps.google.com/?q='
# An API consumer can request an arbitrary number of objects =by appending the "limit" parameter to the URL (e.g.
# "?limit=1000"). This setting defines the maximum limit. Setting it to 0 or None will allow an API consumer to request
# all objects by specifying "?limit=0".
MAX_PAGE_SIZE = 1000
# The file path where uploaded media such as image attachments are stored. A trailing slash is not needed. Note that
# the default value of this setting is derived from the installed location.
# MEDIA_ROOT = '/opt/netbox/netbox/media'
# By default uploaded media is stored on the local filesystem. Using Django-storages is also supported. Provide the
# class path of the storage driver in STORAGE_BACKEND and any configuration options in STORAGE_CONFIG. For example:
# STORAGE_BACKEND = 'storages.backends.s3boto3.S3Boto3Storage'
# STORAGE_CONFIG = {
# 'AWS_ACCESS_KEY_ID': 'Key ID',
# 'AWS_SECRET_ACCESS_KEY': 'Secret',
# 'AWS_STORAGE_BUCKET_NAME': 'netbox',
# 'AWS_S3_REGION_NAME': 'eu-west-1',
# }
# Expose Prometheus monitoring metrics at the HTTP endpoint '/metrics'
METRICS_ENABLED = False
# Credentials that NetBox will uses to authenticate to devices when connecting via NAPALM.
NAPALM_USERNAME = ''
NAPALM_PASSWORD = ''
# NAPALM timeout (in seconds). (Default: 30)
NAPALM_TIMEOUT = 30
# NAPALM optional arguments (see https://napalm.readthedocs.io/en/latest/support/#optional-arguments). Arguments must
# be provided as a dictionary.
NAPALM_ARGS = {}
# Determine how many objects to display per page within a list. (Default: 50)
PAGINATE_COUNT = 50
# Enable installed plugins. Add the name of each plugin to the list.
PLUGINS = []
# Plugins configuration settings. These settings are used by various plugins that the user may have installed.
# Each key in the dictionary is the name of an installed plugin and its value is a dictionary of settings.
# PLUGINS_CONFIG = {
# 'my_plugin': {
# 'foo': 'bar',
# 'buzz': 'bazz'
# }
# }
# When determining the primary IP address for a device, IPv6 is preferred over IPv4 by default. Set this to True to
# prefer IPv4 instead.
PREFER_IPV4 = False
# Rack elevation size defaults, in pixels. For best results, the ratio of width to height should be roughly 10:1.
RACK_ELEVATION_DEFAULT_UNIT_HEIGHT = 22
RACK_ELEVATION_DEFAULT_UNIT_WIDTH = 220
# Remote authentication support
REMOTE_AUTH_ENABLED = False
REMOTE_AUTH_BACKEND = 'netbox.authentication.RemoteUserBackend'
REMOTE_AUTH_HEADER = 'HTTP_REMOTE_USER'
REMOTE_AUTH_AUTO_CREATE_USER = False
REMOTE_AUTH_DEFAULT_GROUPS = []
REMOTE_AUTH_DEFAULT_PERMISSIONS = {}
# This repository is used to check whether there is a new release of NetBox available. Set to None to disable the
# version check or use the URL below to check for release in the official NetBox repository.
RELEASE_CHECK_URL = None
# RELEASE_CHECK_URL = 'https://api.github.com/repos/netbox-community/netbox/releases'
# The file path where custom reports will be stored. A trailing slash is not needed. Note that the default value of
# this setting is derived from the installed location.
# REPORTS_ROOT = '/opt/netbox/netbox/reports'
# Maximum execution time for background tasks, in seconds.
RQ_DEFAULT_TIMEOUT = 300
# The file path where custom scripts will be stored. A trailing slash is not needed. Note that the default value of
# this setting is derived from the installed location.
SCRIPTS_ROOT = '/config/scripts'
# The name to use for the session cookie.
SESSION_COOKIE_NAME = 'sessionid'
# By default, NetBox will store session data in the database. Alternatively, a file path can be specified here to use
# local file storage instead. (This can be useful for enabling authentication on a standby instance with read-only
# database access.) Note that the user as which NetBox runs must have read and write permissions to this path.
SESSION_FILE_PATH = None
# Time zone (default: UTC)
TIME_ZONE = 'UTC'
# Date/time formatting. See the following link for supported formats:
# https://docs.djangoproject.com/en/stable/ref/templates/builtins/#date
DATE_FORMAT = 'N j, Y'
SHORT_DATE_FORMAT = 'Y-m-d'
TIME_FORMAT = 'g:i a'
SHORT_TIME_FORMAT = 'H:i:s'
DATETIME_FORMAT = 'N j, Y g:i a'
SHORT_DATETIME_FORMAT = 'Y-m-d H:i'
_Docker Daemon
These configs have stumped me one too many times.
Issue: Why is my docker host having trouble resolving DNS?After enabling pi-hole or other dockerized DNS management app, lack of (systemd-resolved e.t.c. means that DNS is not available on a local level prior to docker to so much as pull pi-hole. (wonderful chick needs to lay its own egg scenario) A great solution I found to this issue is to set the DNS for docker explicitly.
Issue: Why aren't the nvidia drivers workable on my system.Gotta love the oversight, better remember to request gpu here as well as in the compose. 🤦♀️
Issue: After creating about 40 stacks / docker containers ... I can no longer create new ones with unique ips...As seen below we need to set/allow additional ranges of IP addresses for docker to use in addition to those available by default. You can use something like below or adjust to a set of IPs not taken elsewhere on your network.
{
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
},
"default-address-pools" : [
{
"base" : "172.50.0.0/12",
"size" : 20
},
{
"base" : "192.168.30.0/16",
"size" : 24
}
],
"dns": ["<pihole#1>", "<pihole#2>", "1.1.1.1", "8.8.8.8"]
}
Note:
Later when I describe how to setup pihole remind me to note that we need to turn off that below and update the dns for docker.
Pi-Hole
sudo systemctl stop systemd-resolved
Homelab History
Hardware Write-up
I did an exhaustive write up of my lab a few months ago and it died. This will be a trickle attempt to get it back in place. It was useful for referencing my hardware and showing how I have things setup. We do plan on doing it again. Especially cause we know at 9:00 PM tonight the server this is on will be flashed to a backup stockpile 🤣
Notes to self:
Todo ~ Import all hardware from ebay. Skipped most hard drive purchases on ebay (minus the ssds). Need to grab everything on Amazon. Try and summarize most of what is in the lab currently from offer up and craiglist.
Than obviously at some point will start to show how stuff is set up!
Hardware:
|
Part Name | Purchase Cost / Date | Purchase Method / Photos / Notes |
The Rack Itself |
Compaq 42U (9000?) | ||
|
|||
UPS |
EEATON NETWORK M2 5PX3000RT2U UPS, 3000VA Rackmount, Good Condition, Tested. |
$352.30 / Dec 02, 2024 | |
~ (UPS Rails) |
APC SC 870-1250B L / SC 870-1251B R Server Rackmount Sliding Rail Kit |
$44.03 / Dec 04, 2024 | |
|
|||
Avocado |
|||
CPU: |
2 x E5_2680 v3 | "..." | "..." ~ Came with Avocado chassis. |
GPU: |
Nvidia RTX A2000 12GB GPU Video Graphics NVIDIA Warranty 03/2025 |
$440.40 / Jul 01, 2024 | |
NIC |
SILICOM PE310G4SPI9L-XR-CX3 QUAD PORT 10GB SFP+ NETWORK ADAPTER |
$40.78 / Nov 09, 2024 | |
~ (NIC Bracket) |
$4.35 / Nov 13, 2024 |
|
|
SSD (Ceph VM Data Pool): |
$157.39 / Jun 20, 2024 | ||
Chassis: |
SuperChassis 826BE1C-R920LPB |
$630.87 / May 10, 2024 |
2U 12 Bay TruNas SAS3 12gbps Server Xeon 24 core 128GB w/SSD Boot 2x 920SQ PS |
PSU: |
2 x Supermicro PWS-920P-SQ | "..." | "..." ~ Came with Avocado chassis. |
Bamboo |
|||
CPU: |
INTEL XEON E5-2680 V4 SR2N7 2.40GHZ Server Processor
INTEL SR2N7 E5-2680V4 2.40 GHz 35 MB SmartCache 120 W SKU 12162 |
$19.81 / Dec 23, 2024 $17.38 / Dec 30, 2024 |
|
CPU Passive Cooling |
$12.06 / Dec 30, 2024 | ||
Motherboard |
Supermicro X10DRH-iT Dual LGA2011-3 Onboard 10GBe, 26xx v3/v4 CPU w/ I/O Shield |
$131.02 / Dec 31, 2024 | |
HBA: |
LSI LENOVO 9240-8i 8-port SAS SATA ServerRAID Controller Card High Profile |
$19.81 / Nov 02, 2024 | |
NIC |
SILICOM PE310G4SPI9L-XR-CX3 QUAD PORT 10GB SFP+ NETWORK ADAPTER |
$40.78 / Nov 09, 2024 | |
~ (NIC Bracket) |
$4.35 / Nov 13, 2024 |
|
|
SSD (Ceph VM Data Pool): |
Oracle 7317693 3.2TB V-NAND F320 NVMe Samsung MZPLK3T2HCJL-000U4 PCIe3x8 |
$167.63 / Oct 26, 2024 | |
~ (SSD Bracket) |
Low Profile Bracket for Samsung PM1725B PM1725A PM1735 983ZET |
$2.75 / Nov 26, 2024 | |
Backplane: |
Supermicro 2U 6Gbps SAS-2 / SATA Expander Backplane 12 bay 3.5" CSE-826 CSE-847 |
$71.57 / May 23, 2024 |
|
Chassis: | CSE 826 (Doesn't have 2 x 2.5" SSD slots in the back like Avocado and Bamboo) |
$275 / Feb 12, 2022 (Included decommissioned Mobo+CPU+RAM) |
My first taste of Supermicro / Ewaste Old Enterprise Stuff. |
PSU: |
Lot of 2 Supermicro PWS-920P-SQ 920W 80PLUS Platinum Power Supply Super-Quiet |
$75.18 / Nov 09, 2023 |
|
Cosmos |
|||
NIC: |
Intel X520-DA2 Dual Port SFP PCIe Network Adapter Low Profile Dell P/N: 0942V6 |
$24.21/ Sep 21, 2023 | |
Storage - SSD (Ceph VM Data Pool): |
$157.39 / Jun 20, 2024 | ||
Chassis: | 2U 12 Bay TruNas SAS3 12gbps Server Intel Xeon 3.2Ghz Total 16 Core 64GB RAM HBA | $448.77 / Jan 04, 2025 | |
Dragonfruit |
|||
CPU |
AMD Ryzen 7 2700X Processor Wraith Prism LED Cooler - YD270XBGAFBOX |
$309.89 + Fees / October 27, 2018 |
|
RAM |
Some old CL14 Samsung Bdie Kit I have laying around 3200MHZ non ECC. I think 16GB. |
|
|
Motherboard | $79.21 / October 21, 2018 | ||
NIC: |
Silicom PE310G4SPI9L-XR-CX3 4-Port 10GB SFP+ PCIe Server Adapter Card |
$38.52 / Oct 27, 2024 | |
Chassis: |
Rosewill 4U RSV-L4000U Rackmount Server Chassis | Carries up to 8 3.5" HDD | Inc |
$209.18 / Sep 04, 2024 |
Photo don't do justice to how beat to hell it was... |
Rails: |
iStarUSA TC-RAIL-26 26" Sliding Rail Kit for Most Rackmount Chassis |
$44.49 / Jul 22, 2024 | |
Eggplant |
|||
HBA: |
2 x Supermicro AOC-S3008L-L8E SAS3 12Gbps 8-Port Internal PCI-e 3.0 HBA Controller |
$18.71 / Dec 20, 2024 | |
HBA: |
LSI SAS9207-8e 8 Ports HBA SAS SATA Host Bus Adapter 6Gb/s High Profile 9207-8e |
$27.50 / Jun 05, 2024 | |
Chassis |
Supermicro 4U 36 Bay TRUNAS Storage Server Xeon 28 Core 64GB 12GBs SQ PS Rail |
$527.38 / Dec 20, 2024 | |
Storage (24 x 2.5" Flash Shelf) |
Netapp DS2246 Storage Expansion Array 24 Bay 2.5" SAS Trays 2x IOM6 Controllers |
$158.54 / May 21, 2024 (Now $89 😭🤣 - 02/26/2025) |
|
~ (Rails for the Flash Shelf) |
NetApp X5526A-R6 Universal Rackmount Rail Kit Bracket DS4243 DS4246 DS22xx Etc |
$50.65 / May 24, 2024 | |
Storage (Backups Disk 1/4): |
Crucial - MX500 2TB Internal SSD SATA | $176.47 / May 29, 2024 | Bestbuy |
Storage (ZFS ZIL) |
Radian RMS-200/8G PCIe x8 Gen3 NVRAM Accelerator Card 800001-001 |
$57.00 / Jun 16, 2024 | |
Glicynia (Gaming) |
|||
CPU: |
AMD Ryzen 7 5800X3D Processor (4.5 GHz, 8 Cores, Socket AM4) Tray -... |
$337.07 / Aug 30, 2024 | |
RAM: |
64-128GB ECC DDR4 3200MHZ | ||
GPU: |
7900 XTX | ||
PSU: |
CORSAIR - HX Series - HX1200 1200W 80 Plus Platinum Fully Modular ATX Power Supply - Black | $269.73 / Mar 11, 2022 | |
Wisteria (Workstation) |
|||
CPU: |
AMD - Ryzen 9 5950X 4th Gen 16-core, 32-threads | $546.67 / Dec 23, 2022 | Bestbuy |
RAM: |
64GB DDR4 (ECC) 3200MHZ NEMIX (2X32GB) PC4-25600 2Rx8 1.2V CL22 288-PIN ECC |
$402.60 / February 5, 2022 | Amazon |
GPU |
3080 TI | ||
GPU |
1080 TI | ||
PSU: |
CORSAIR - RMe Series RM750e 80 PLUS Gold Fully Modular Low-Noise ATX 3.0 and PCIE 5.0 Power Supply PSU - Black | $110.29 / Apr 16, 2023 | Bestbuy |
Keyboard (Main Wokstation Keyboard) |
Corsair K95 RGB PLATINUM Cherry MX Speed CH-9127014-NA Wired Keyboard |
$55.04 / Aug 11, 2024 |
|
Keyboard (USB Passthru to Glycenia) |
Corsair K95 RGB lights Platinum Mechanical Keyboard Cherry MX Brown Switch iCUE |
$88.07 / Aug 16, 2024 |
|
|
|||
WaterLily |
|||
|
|||
LeafBlower |
|||
|
|||
|
|||
Misc Lab |
|||
HBA Cables: |
EMC Amphenol Mini-SAS SFF-8088 to SFF-8088 Molex 2 Meter Cable Black 038-003-787 |
$11.01 / May 23, 2024 | |
|
2 Packs Internal Mini SAS Cable 36Pin SFF-8087 to SFF-8087 100Ohms 0.5 ~1 Meter |
$19.44 / May 23, 2024 | |
|
External SAS Cable QSFP SFF-8436 to SFF-8088 SAS Cable For NetApp DS4243 DS4246 |
$30.71 / Jun 08, 2024 | |
HBA Adapter |
Dual Ports Mini SAS SFF-8088 to SAS 36Pin SFF-8087 PCBA Adapter w/ PCI bracket |
$28.60 / May 23, 2024 | |
JBOD Powerboard for CSEXXX |
$52.85 / May 23, 2024 | ||
Rails |
$75.13 / Aug 11, 2024 | ||
Brackets: |
$5.91 / Oct 27, 2024 | ||
|
Full height bracket for PM1725B PM1725A PM1735 983ZET PCIe SSD |
$6.61 / Nov 26, 2024 | |
HDD/SSD Caddy |
SuperMicro SB16105 2.5" SAS/SATA Server Hard Drive Caddy/Trays |
$10.13 / Dec 23, 2024 | |
|
$32.97 / Dec 30, 2024 |
Some old photos I found on disk
Dual System Workstation/Gaming Build: Write Up
I had a really extensive write up of my desktop setup detailing how I use the DisplayDriver wrapper I integrated into Sunshine and the hardware etc. I am offering this as a place holder while I am slowly rebuilding my lab after recovering from a Ceph nightmare (my fault) (I was still learning). I just want to make sure no more people reach dead links and at least know what happened. This is kind of a first world need and not necessary but I spent the last 20 minutes or so updating an adjacent dead link that documented a solution to an Ubuntu kernel issue. I will get back to this, it just may be awhile. I see your traffic my internet friends. You are valid and valuable to me I am sorry in the meantime!