From 3caec94f5ef24e70cfbe53337eff9e157a01c4d4 Mon Sep 17 00:00:00 2001 From: Derisis13 Date: Fri, 8 Dec 2023 21:07:38 +0100 Subject: [PATCH] innitial commit, posted: statusquo.md --- 404.html | 24 +++ Gemfile | 41 ++++ Gemfile.lock | 275 +++++++++++++++++++++++++++ _config.yml | 41 ++++ _posts/2023-12-08-statusquo.md | 61 ++++++ _site/2023/12/08/statusquo.html | 137 +++++++++++++ _site/404.html | 87 +++++++++ _site/about/index.html | 79 ++++++++ _site/assets/main.css | 196 +++++++++++++++++++ _site/assets/minima-social-icons.svg | 33 ++++ _site/feed.xml | 56 ++++++ _site/index.html | 77 ++++++++ about.md | 7 + index.md | 7 + 14 files changed, 1121 insertions(+) create mode 100644 404.html create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 _config.yml create mode 100644 _posts/2023-12-08-statusquo.md create mode 100644 _site/2023/12/08/statusquo.html create mode 100644 _site/404.html create mode 100644 _site/about/index.html create mode 100644 _site/assets/main.css create mode 100644 _site/assets/minima-social-icons.svg create mode 100644 _site/feed.xml create mode 100644 _site/index.html create mode 100644 about.md create mode 100644 index.md diff --git a/404.html b/404.html new file mode 100644 index 0000000..c472b4e --- /dev/null +++ b/404.html @@ -0,0 +1,24 @@ +--- +layout: default +--- + + + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..86d0a38 --- /dev/null +++ b/Gemfile @@ -0,0 +1,41 @@ +source "https://rubygems.org" + +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +#gem "jekyll", "~> 3.9.0" + +# This is the default theme for new Jekyll sites. You may change this to anything you like. +gem "minima", "~> 2.0" + +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +# gem "github-pages", group: :jekyll_plugins + +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "github-pages", "~> 228" + gem "jekyll-feed", "~> 0.6" +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +platforms :mingw, :x64_mingw, :mswin, :jruby do + gem "tzinfo", "~> 1.2" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.0", :platforms => [:mingw, :x64_mingw, :mswin] + +# kramdown v2 ships without the gfm parser by default. If you're using +# kramdown v1, comment out this line. +gem "kramdown-parser-gfm" + + +gem "webrick", "~> 1.8" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..c43181d --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,275 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (7.1.2) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + addressable (2.8.5) + public_suffix (>= 2.0.2, < 6.0) + base64 (0.2.0) + bigdecimal (3.1.4) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.11.1) + colorator (1.1.0) + commonmarker (0.23.10) + concurrent-ruby (1.2.2) + connection_pool (2.4.1) + dnsruby (1.70.0) + simpleidn (~> 0.2.1) + drb (2.2.0) + ruby2_keywords + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + ethon (0.16.0) + ffi (>= 1.15.0) + eventmachine (1.2.7) + execjs (2.9.1) + faraday (2.7.12) + base64 + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) + ffi (1.16.3) + forwardable-extended (2.6.0) + gemoji (3.0.1) + github-pages (228) + github-pages-health-check (= 1.17.9) + jekyll (= 3.9.3) + jekyll-avatar (= 0.7.0) + jekyll-coffeescript (= 1.1.1) + jekyll-commonmark-ghpages (= 0.4.0) + jekyll-default-layout (= 0.1.4) + jekyll-feed (= 0.15.1) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.13.0) + jekyll-include-cache (= 0.2.1) + jekyll-mentions (= 1.6.0) + jekyll-optional-front-matter (= 0.3.2) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.3.0) + jekyll-redirect-from (= 0.16.0) + jekyll-relative-links (= 0.6.1) + jekyll-remote-theme (= 0.4.3) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.8.0) + jekyll-sitemap (= 1.4.0) + jekyll-swiss (= 1.0.0) + jekyll-theme-architect (= 0.2.0) + jekyll-theme-cayman (= 0.2.0) + jekyll-theme-dinky (= 0.2.0) + jekyll-theme-hacker (= 0.2.0) + jekyll-theme-leap-day (= 0.2.0) + jekyll-theme-merlot (= 0.2.0) + jekyll-theme-midnight (= 0.2.0) + jekyll-theme-minimal (= 0.2.0) + jekyll-theme-modernist (= 0.2.0) + jekyll-theme-primer (= 0.6.0) + jekyll-theme-slate (= 0.2.0) + jekyll-theme-tactile (= 0.2.0) + jekyll-theme-time-machine (= 0.2.0) + jekyll-titles-from-headings (= 0.5.3) + jemoji (= 0.12.0) + kramdown (= 2.3.2) + kramdown-parser-gfm (= 1.1.0) + liquid (= 4.0.4) + mercenary (~> 0.3) + minima (= 2.5.1) + nokogiri (>= 1.13.6, < 2.0) + rouge (= 3.26.0) + terminal-table (~> 1.4) + github-pages-health-check (1.17.9) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (~> 4.0) + public_suffix (>= 3.0, < 5.0) + typhoeus (~> 1.3) + html-pipeline (2.14.3) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.8.0) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + jekyll (3.9.3) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (>= 0.7, < 2) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (>= 1.17, < 3) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-avatar (0.7.0) + jekyll (>= 3.0, < 5.0) + jekyll-coffeescript (1.1.1) + coffee-script (~> 2.2) + coffee-script-source (~> 1.11.1) + jekyll-commonmark (1.4.0) + commonmarker (~> 0.22) + jekyll-commonmark-ghpages (0.4.0) + commonmarker (~> 0.23.7) + jekyll (~> 3.9.0) + jekyll-commonmark (~> 1.4.0) + rouge (>= 2.0, < 5.0) + jekyll-default-layout (0.1.4) + jekyll (~> 3.0) + jekyll-feed (0.15.1) + jekyll (>= 3.7, < 5.0) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.13.0) + jekyll (>= 3.4, < 5.0) + octokit (~> 4.0, != 4.4.0) + jekyll-include-cache (0.2.1) + jekyll (>= 3.7, < 5.0) + jekyll-mentions (1.6.0) + html-pipeline (~> 2.3) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.3) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) + rubyzip (>= 1.3.0, < 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-swiss (1.0.0) + jekyll-theme-architect (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.6.0) + jekyll (> 3.5, < 5.0) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.3) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + jemoji (0.12.0) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (>= 3.0, < 5.0) + kramdown (2.3.2) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.8.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.3.6) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.20.0) + mutex_m (0.2.0) + nokogiri (1.15.5-x86_64-linux) + racc (~> 1.4) + octokit (4.25.1) + faraday (>= 1, < 3) + sawyer (~> 0.9) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (4.0.7) + racc (1.7.3) + rb-fsevent (0.11.2) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.6) + rouge (3.26.0) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + safe_yaml (1.0.5) + sass (3.7.4) + listen (~> 3.0) + sawyer (0.9.2) + addressable (>= 2.3.5) + faraday (>= 0.17.3, < 3) + simpleidn (0.2.1) + unf (~> 0.1.4) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + typhoeus (1.4.1) + ethon (>= 0.9.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.9.1) + unicode-display_width (1.8.0) + webrick (1.8.1) + +PLATFORMS + x86_64-linux + +DEPENDENCIES + github-pages (~> 228) + jekyll-feed (~> 0.6) + kramdown-parser-gfm + minima (~> 2.0) + tzinfo (~> 1.2) + tzinfo-data + wdm (~> 0.1.0) + webrick (~> 1.8) + +BUNDLED WITH + 2.3.5 diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..34eb5fd --- /dev/null +++ b/_config.yml @@ -0,0 +1,41 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. + +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. +title: Derisis13's temporary blog +# email: email.felhasznalasra@gmail.com +description: >- # this means to ignore newlines until "baseurl:" + Just some nerd rambling +baseurl: "" # the subpath of your site, e.g. /blog +url: "" # the base hostname & protocol for your site, e.g. http://example.com +# twitter_username: +github_username: derisis13 + +# Build settings +markdown: kramdown +theme: minima +plugins: + - jekyll-feed + +# Exclude from processing. +# The following items will not be processed, by default. Create a custom list +# to override the default setting. +# exclude: +# - Gemfile +# - Gemfile.lock +# - node_modules +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ diff --git a/_posts/2023-12-08-statusquo.md b/_posts/2023-12-08-statusquo.md new file mode 100644 index 0000000..9e7e10d --- /dev/null +++ b/_posts/2023-12-08-statusquo.md @@ -0,0 +1,61 @@ +--- +layout: post +title: "Server Setup Part 0 - Status Quo" +tag: "home server" +--- + +Since August I've been upgrading my home server setup. +It's not yet 100% complete, but most of the architectural decisions are already behind me. +I wish to document this process so that others can learn from it and as a reminder for myself if I ever forget how I did something. +This is part zero of my writeup, which'll be about the hardware and software used prior to the upgrade. +This should serve as a comparison baseline. + + +## NAS + +I had a 2-bay Synology NAS for some years now. +It has been passed down to me from a family member along with drives to populate it. +It's configured in RAID-1 with 2x 3TB HDDs. +This capacity was almost filled up, which meant it was time to migrate from it. + +This NAS ran an SMB server, an ISCSI target, a VPN server, a DDNS updater, streamed music and had a BitTorrent client. +The processor and RAM limitations crippled the responsiveness of these services, and the configuration was very limited as well. +It was a good computer, but it no longer satisfied my needs - at least not for the price I wanted to pay. + +## Linux server + +To expand into additional services that my NAS couldn't provide, I got a cheap laptop with a broken hinge (from a family member as well) and installed the XFCE spin of Fedora workstation on it. +I like this device for how simple it is: 5W idle power draw, 4-core Intel CPU (passively cooled by a piece of metal), the entire board being just one card, except the socketed RAM and the WLAN card (which I found has no black/whitelist). +Its IO is limited to 2 USB, 2 SATA (one for ODD) and 100MB internet. +The keyboard and screen were nice to have when I started out, and the battery came in useful during power outages. + +This would have been a terrible fileserver but it ran PiHole and HomeAssistant in docker with great stability until recently the network interface started having issues. +Fun fact: this was also the machine I used for building Fedora packages for ani-cli. + +## What won't change now + +I'll go over a few devices I use at home but won't change now. +They are still relevant as services will interact with them. + +I picked up a decent-size UPS from the trash a few years ago - it turned out to only need a new battery. +Now it has backup power for my NAS and router. + +My networking is done by an ISP-provided all-in-one, which I hate but don't want to change just now. +There's also an unmanaged network switch to provide extra wired connections. + +For media, I have a Chromecast (TV is not smart), a Pi 3 with Kodi and a Pi 1 with Volumio. +With the exception of the Chromecast they get their files trough mounted SMB shares. + +There are a few IoT devices with open firmware I use for home automation and some that aren't connected to the internet because their firmware is proprietary, outdated and they would be a security risk to my network. + +## Comming up + +1. Host System - the metal that'll run my services +2. Filesystem layout - from disks to directories +3. Networking - connecting to the web +4. Docker and nextcloud - how not to get in your own way +5. Torrent and media management - My Lord, is that legal? +6. Media serving - the forgotten world of DLNA and UPNP/AV +7. Home automation - my home is smart +8. Backup strategy - because RAID is not a backup +9. Migration - moving it all in diff --git a/_site/2023/12/08/statusquo.html b/_site/2023/12/08/statusquo.html new file mode 100644 index 0000000..d4715c7 --- /dev/null +++ b/_site/2023/12/08/statusquo.html @@ -0,0 +1,137 @@ + + + + + +Server Setup Part 0 - Status Quo | Derisis13’s temporary blog + + + + + + + + + + + + + + + + +
+
+
+ +
+

Server Setup Part 0 - Status Quo

+ +
+ +
+

Since August I’ve been upgrading my home server setup. +It’s not yet 100% complete, but most of the architectural decisions are already behind me. +I wish to document this process so that others can learn from it and as a reminder for myself if I ever forget how I did something. +This is part zero of my writeup, which’ll be about the hardware and software used prior to the upgrade. +This should serve as a comparison baseline.

+ +

NAS

+ +

I had a 2-bay Synology NAS for some years now. +It has been passed down to me from a family member along with drives to populate it. +It’s configured in RAID-1 with 2x 3TB HDDs. +This capacity was almost filled up, which meant it was time to migrate from it.

+ +

This NAS ran an SMB server, an ISCSI target, a VPN server, a DDNS updater, streamed music and had a BitTorrent client. +The processor and RAM limitations crippled the responsiveness of these services, and the configuration was very limited as well. +It was a good computer, but it no longer satisfied my needs - at least not for the price I wanted to pay.

+ +

Linux server

+ +

To expand into additional services that my NAS couldn’t provide, I got a cheap laptop with a broken hinge (from a family member as well) and installed the XFCE spin of Fedora workstation on it. +I like this device for how simple it is: 5W idle power draw, 4-core Intel CPU (passively cooled by a piece of metal), the entire board being just one card, except the socketed RAM and the WLAN card (which I found has no black/whitelist). +Its IO is limited to 2 USB, 2 SATA (one for ODD) and 100MB internet. +The keyboard and screen were nice to have when I started out, and the battery came in useful during power outages.

+ +

This would have been a terrible fileserver but it ran PiHole and HomeAssistant in docker with great stability until recently the network interface started having issues. +Fun fact: this was also the machine I used for building Fedora packages for ani-cli.

+ +

What won’t change now

+ +

I’ll go over a few devices I use at home but won’t change now. +They are still relevant as services will interact with them.

+ +

I picked up a decent-size UPS from the trash a few years ago - it turned out to only need a new battery. +Now it has backup power for my NAS and router.

+ +

My networking is done by an ISP-provided all-in-one, which I hate but don’t want to change just now. +There’s also an unmanaged network switch to provide extra wired connections.

+ +

For media, I have a Chromecast (TV is not smart), a Pi 3 with Kodi and a Pi 1 with Volumio. +With the exception of the Chromecast they get their files trough mounted SMB shares.

+ +

There are a few IoT devices with open firmware I use for home automation and some that aren’t connected to the internet because their firmware is proprietary, outdated and they would be a security risk to my network.

+ +

Comming up

+ +
    +
  1. Host System - the metal that’ll run my services
  2. +
  3. Filesystem layout - from disks to directories
  4. +
  5. Networking - connecting to the web
  6. +
  7. Docker and nextcloud - how not to get in your own way
  8. +
  9. Torrent and media management - My Lord, is that legal?
  10. +
  11. Media serving - the forgotten world of DLNA and UPNP/AV
  12. +
  13. Home automation - my home is smart
  14. +
  15. Backup strategy - because RAID is not a backup
  16. +
  17. Migration - moving it all in
  18. +
+ +
+
+ +
+
+ + + diff --git a/_site/404.html b/_site/404.html new file mode 100644 index 0000000..cccfe52 --- /dev/null +++ b/_site/404.html @@ -0,0 +1,87 @@ + + + + + +Derisis13’s temporary blog | Just some nerd rambling + + + + + + + + + + + + + + + +
+
+ + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
+ +
+
+ + + diff --git a/_site/about/index.html b/_site/about/index.html new file mode 100644 index 0000000..b42c17a --- /dev/null +++ b/_site/about/index.html @@ -0,0 +1,79 @@ + + + + + +About | Derisis13’s temporary blog + + + + + + + + + + + + + + + +
+
+ + +
+
+ + + diff --git a/_site/assets/main.css b/_site/assets/main.css new file mode 100644 index 0000000..83b9124 --- /dev/null +++ b/_site/assets/main.css @@ -0,0 +1,196 @@ +/** Reset some basic elements */ +body, h1, h2, h3, h4, h5, h6, p, blockquote, pre, hr, dl, dd, ol, ul, figure { margin: 0; padding: 0; } + +/** Basic styling */ +body { font: 400 16px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; color: #111; background-color: #fdfdfd; -webkit-text-size-adjust: 100%; -webkit-font-feature-settings: "kern" 1; -moz-font-feature-settings: "kern" 1; -o-font-feature-settings: "kern" 1; font-feature-settings: "kern" 1; font-kerning: normal; display: flex; min-height: 100vh; flex-direction: column; } + +/** Set `margin-bottom` to maintain vertical rhythm */ +h1, h2, h3, h4, h5, h6, p, blockquote, pre, ul, ol, dl, figure, .highlight { margin-bottom: 15px; } + +/** `main` element */ +main { display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */ } + +/** Images */ +img { max-width: 100%; vertical-align: middle; } + +/** Figures */ +figure > img { display: block; } + +figcaption { font-size: 14px; } + +/** Lists */ +ul, ol { margin-left: 30px; } + +li > ul, li > ol { margin-bottom: 0; } + +/** Headings */ +h1, h2, h3, h4, h5, h6 { font-weight: 400; } + +/** Links */ +a { color: #2a7ae2; text-decoration: none; } +a:visited { color: #1756a9; } +a:hover { color: #111; text-decoration: underline; } +.social-media-list a:hover { text-decoration: none; } +.social-media-list a:hover .username { text-decoration: underline; } + +/** Blockquotes */ +blockquote { color: #828282; border-left: 4px solid #e8e8e8; padding-left: 15px; font-size: 18px; letter-spacing: -1px; font-style: italic; } +blockquote > :last-child { margin-bottom: 0; } + +/** Code formatting */ +pre, code { font-size: 15px; border: 1px solid #e8e8e8; border-radius: 3px; background-color: #eef; } + +code { padding: 1px 5px; } + +pre { padding: 8px 12px; overflow-x: auto; } +pre > code { border: 0; padding-right: 0; padding-left: 0; } + +/** Wrapper */ +.wrapper { max-width: -webkit-calc(800px - (30px * 2)); max-width: calc(800px - (30px * 2)); margin-right: auto; margin-left: auto; padding-right: 30px; padding-left: 30px; } +@media screen and (max-width: 800px) { .wrapper { max-width: -webkit-calc(800px - (30px)); max-width: calc(800px - (30px)); padding-right: 15px; padding-left: 15px; } } + +/** Clearfix */ +.wrapper:after, .footer-col-wrapper:after { content: ""; display: table; clear: both; } + +/** Icons */ +.svg-icon { width: 16px; height: 16px; display: inline-block; fill: #828282; padding-right: 5px; vertical-align: text-top; } + +.social-media-list li + li { padding-top: 5px; } + +/** Tables */ +table { margin-bottom: 30px; width: 100%; text-align: left; color: #3f3f3f; border-collapse: collapse; border: 1px solid #e8e8e8; } +table tr:nth-child(even) { background-color: #f7f7f7; } +table th, table td { padding: 10px 15px; } +table th { background-color: #f0f0f0; border: 1px solid #dedede; border-bottom-color: #c9c9c9; } +table td { border: 1px solid #e8e8e8; } + +/** Site header */ +.site-header { border-top: 5px solid #424242; border-bottom: 1px solid #e8e8e8; min-height: 55.95px; position: relative; } + +.site-title { font-size: 26px; font-weight: 300; line-height: 54px; letter-spacing: -1px; margin-bottom: 0; float: left; } +.site-title, .site-title:visited { color: #424242; } + +.site-nav { float: right; line-height: 54px; } +.site-nav .nav-trigger { display: none; } +.site-nav .menu-icon { display: none; } +.site-nav .page-link { color: #111; line-height: 1.5; } +.site-nav .page-link:not(:last-child) { margin-right: 20px; } +@media screen and (max-width: 600px) { .site-nav { position: absolute; top: 9px; right: 15px; background-color: #fdfdfd; border: 1px solid #e8e8e8; border-radius: 5px; text-align: right; } + .site-nav label[for="nav-trigger"] { display: block; float: right; width: 36px; height: 36px; z-index: 2; cursor: pointer; } + .site-nav .menu-icon { display: block; float: right; width: 36px; height: 26px; line-height: 0; padding-top: 10px; text-align: center; } + .site-nav .menu-icon > svg { fill: #424242; } + .site-nav input ~ .trigger { clear: both; display: none; } + .site-nav input:checked ~ .trigger { display: block; padding-bottom: 5px; } + .site-nav .page-link { display: block; padding: 5px 10px; margin-left: 20px; } + .site-nav .page-link:not(:last-child) { margin-right: 0; } } + +/** Site footer */ +.site-footer { border-top: 1px solid #e8e8e8; padding: 30px 0; } + +.footer-heading { font-size: 18px; margin-bottom: 15px; } + +.contact-list, .social-media-list { list-style: none; margin-left: 0; } + +.footer-col-wrapper { font-size: 15px; color: #828282; margin-left: -15px; } + +.footer-col { float: left; margin-bottom: 15px; padding-left: 15px; } + +.footer-col-1 { width: -webkit-calc(35% - (30px / 2)); width: calc(35% - (30px / 2)); } + +.footer-col-2 { width: -webkit-calc(20% - (30px / 2)); width: calc(20% - (30px / 2)); } + +.footer-col-3 { width: -webkit-calc(45% - (30px / 2)); width: calc(45% - (30px / 2)); } + +@media screen and (max-width: 800px) { .footer-col-1, .footer-col-2 { width: -webkit-calc(50% - (30px / 2)); width: calc(50% - (30px / 2)); } + .footer-col-3 { width: -webkit-calc(100% - (30px / 2)); width: calc(100% - (30px / 2)); } } +@media screen and (max-width: 600px) { .footer-col { float: none; width: -webkit-calc(100% - (30px / 2)); width: calc(100% - (30px / 2)); } } +/** Page content */ +.page-content { padding: 30px 0; flex: 1; } + +.page-heading { font-size: 32px; } + +.post-list-heading { font-size: 28px; } + +.post-list { margin-left: 0; list-style: none; } +.post-list > li { margin-bottom: 30px; } + +.post-meta { font-size: 14px; color: #828282; } + +.post-link { display: block; font-size: 24px; } + +/** Posts */ +.post-header { margin-bottom: 30px; } + +.post-title { font-size: 42px; letter-spacing: -1px; line-height: 1; } +@media screen and (max-width: 800px) { .post-title { font-size: 36px; } } + +.post-content { margin-bottom: 30px; } +.post-content h2 { font-size: 32px; } +@media screen and (max-width: 800px) { .post-content h2 { font-size: 28px; } } +.post-content h3 { font-size: 26px; } +@media screen and (max-width: 800px) { .post-content h3 { font-size: 22px; } } +.post-content h4 { font-size: 20px; } +@media screen and (max-width: 800px) { .post-content h4 { font-size: 18px; } } + +/** Syntax highlighting styles */ +.highlight { background: #fff; } +.highlighter-rouge .highlight { background: #eef; } +.highlight .c { color: #998; font-style: italic; } +.highlight .err { color: #a61717; background-color: #e3d2d2; } +.highlight .k { font-weight: bold; } +.highlight .o { font-weight: bold; } +.highlight .cm { color: #998; font-style: italic; } +.highlight .cp { color: #999; font-weight: bold; } +.highlight .c1 { color: #998; font-style: italic; } +.highlight .cs { color: #999; font-weight: bold; font-style: italic; } +.highlight .gd { color: #000; background-color: #fdd; } +.highlight .gd .x { color: #000; background-color: #faa; } +.highlight .ge { font-style: italic; } +.highlight .gr { color: #a00; } +.highlight .gh { color: #999; } +.highlight .gi { color: #000; background-color: #dfd; } +.highlight .gi .x { color: #000; background-color: #afa; } +.highlight .go { color: #888; } +.highlight .gp { color: #555; } +.highlight .gs { font-weight: bold; } +.highlight .gu { color: #aaa; } +.highlight .gt { color: #a00; } +.highlight .kc { font-weight: bold; } +.highlight .kd { font-weight: bold; } +.highlight .kp { font-weight: bold; } +.highlight .kr { font-weight: bold; } +.highlight .kt { color: #458; font-weight: bold; } +.highlight .m { color: #099; } +.highlight .s { color: #d14; } +.highlight .na { color: #008080; } +.highlight .nb { color: #0086B3; } +.highlight .nc { color: #458; font-weight: bold; } +.highlight .no { color: #008080; } +.highlight .ni { color: #800080; } +.highlight .ne { color: #900; font-weight: bold; } +.highlight .nf { color: #900; font-weight: bold; } +.highlight .nn { color: #555; } +.highlight .nt { color: #000080; } +.highlight .nv { color: #008080; } +.highlight .ow { font-weight: bold; } +.highlight .w { color: #bbb; } +.highlight .mf { color: #099; } +.highlight .mh { color: #099; } +.highlight .mi { color: #099; } +.highlight .mo { color: #099; } +.highlight .sb { color: #d14; } +.highlight .sc { color: #d14; } +.highlight .sd { color: #d14; } +.highlight .s2 { color: #d14; } +.highlight .se { color: #d14; } +.highlight .sh { color: #d14; } +.highlight .si { color: #d14; } +.highlight .sx { color: #d14; } +.highlight .sr { color: #009926; } +.highlight .s1 { color: #d14; } +.highlight .ss { color: #990073; } +.highlight .bp { color: #999; } +.highlight .vc { color: #008080; } +.highlight .vg { color: #008080; } +.highlight .vi { color: #008080; } +.highlight .il { color: #099; } diff --git a/_site/assets/minima-social-icons.svg b/_site/assets/minima-social-icons.svg new file mode 100644 index 0000000..fa7399f --- /dev/null +++ b/_site/assets/minima-social-icons.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_site/feed.xml b/_site/feed.xml new file mode 100644 index 0000000..ec0e0c4 --- /dev/null +++ b/_site/feed.xml @@ -0,0 +1,56 @@ +Jekyll2023-12-08T21:04:12+01:00http://localhost:4000/feed.xmlDerisis13’s temporary blogJust some nerd ramblingServer Setup Part 0 - Status Quo2023-12-08T00:00:00+01:002023-12-08T00:00:00+01:00http://localhost:4000/2023/12/08/statusquo<p>Since August I’ve been upgrading my home server setup. +It’s not yet 100% complete, but most of the architectural decisions are already behind me. +I wish to document this process so that others can learn from it and as a reminder for myself if I ever forget how I did something. +This is part zero of my writeup, which’ll be about the hardware and software used prior to the upgrade. +This should serve as a comparison baseline.</p> + +<h2 id="nas">NAS</h2> + +<p>I had a 2-bay Synology NAS for some years now. +It has been passed down to me from a family member along with drives to populate it. +It’s configured in RAID-1 with 2x 3TB HDDs. +This capacity was almost filled up, which meant it was time to migrate from it.</p> + +<p>This NAS ran an SMB server, an ISCSI target, a VPN server, a DDNS updater, streamed music and had a BitTorrent client. +The processor and RAM limitations crippled the responsiveness of these services, and the configuration was very limited as well. +It was a good computer, but it no longer satisfied my needs - at least not for the price I wanted to pay.</p> + +<h2 id="linux-server">Linux server</h2> + +<p>To expand into additional services that my NAS couldn’t provide, I got a cheap laptop with a broken hinge (from a family member as well) and installed the XFCE spin of Fedora workstation on it. +I like this device for how simple it is: 5W idle power draw, 4-core Intel CPU (passively cooled by a piece of metal), the entire board being just one card, except the socketed RAM and the WLAN card (which I found has no black/whitelist). +Its IO is limited to 2 USB, 2 SATA (one for ODD) and 100MB internet. +The keyboard and screen were nice to have when I started out, and the battery came in useful during power outages.</p> + +<p>This would have been a terrible fileserver but it ran PiHole and HomeAssistant in docker with great stability until recently the network interface started having issues. +Fun fact: this was also the machine I used for building Fedora packages for ani-cli.</p> + +<h2 id="what-wont-change-now">What won’t change now</h2> + +<p>I’ll go over a few devices I use at home but won’t change now. +They are still relevant as services will interact with them.</p> + +<p>I picked up a decent-size UPS from the trash a few years ago - it turned out to only need a new battery. +Now it has backup power for my NAS and router.</p> + +<p>My networking is done by an ISP-provided all-in-one, which I hate but don’t want to change just now. +There’s also an unmanaged network switch to provide extra wired connections.</p> + +<p>For media, I have a Chromecast (TV is not smart), a Pi 3 with Kodi and a Pi 1 with Volumio. +With the exception of the Chromecast they get their files trough mounted SMB shares.</p> + +<p>There are a few IoT devices with open firmware I use for home automation and some that aren’t connected to the internet because their firmware is proprietary, outdated and they would be a security risk to my network.</p> + +<h2 id="comming-up">Comming up</h2> + +<ol> + <li>Host System - the metal that’ll run my services</li> + <li>Filesystem layout - from disks to directories</li> + <li>Networking - connecting to the web</li> + <li>Docker and nextcloud - how not to get in your own way</li> + <li>Torrent and media management - My Lord, is that legal?</li> + <li>Media serving - the forgotten world of DLNA and UPNP/AV</li> + <li>Home automation - my home is smart</li> + <li>Backup strategy - because RAID is not a backup</li> + <li>Migration - moving it all in</li> +</ol>Since August I’ve been upgrading my home server setup. It’s not yet 100% complete, but most of the architectural decisions are already behind me. I wish to document this process so that others can learn from it and as a reminder for myself if I ever forget how I did something. This is part zero of my writeup, which’ll be about the hardware and software used prior to the upgrade. This should serve as a comparison baseline. \ No newline at end of file diff --git a/_site/index.html b/_site/index.html new file mode 100644 index 0000000..e884e94 --- /dev/null +++ b/_site/index.html @@ -0,0 +1,77 @@ + + + + + +Derisis13’s temporary blog | Just some nerd rambling + + + + + + + + + + + + + + + +
+
+
+

Posts

+ + +

subscribe via RSS

+ +
+
+ + + diff --git a/about.md b/about.md new file mode 100644 index 0000000..9fe1dd0 --- /dev/null +++ b/about.md @@ -0,0 +1,7 @@ +--- +layout: page +title: About +permalink: /about/ +--- + +[My github](https://github.com/derisis13) diff --git a/index.md b/index.md new file mode 100644 index 0000000..64a82a1 --- /dev/null +++ b/index.md @@ -0,0 +1,7 @@ +--- +# Feel free to add content and custom Front Matter to this file. +# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults + +layout: home +--- +