<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Raven Spencer</title>
    <description>The latest articles on DEV Community by Raven Spencer (@ravenesc).</description>
    <link>https://dev.to/ravenesc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1336747%2F45d77c84-a832-493f-894a-ebad688d69a2.jpg</url>
      <title>DEV Community: Raven Spencer</title>
      <link>https://dev.to/ravenesc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ravenesc"/>
    <language>en</language>
    <item>
      <title>A Media Server on Steroids - Walkthrough</title>
      <dc:creator>Raven Spencer</dc:creator>
      <pubDate>Sat, 14 Dec 2024 20:00:00 +0000</pubDate>
      <link>https://dev.to/ravenesc/a-media-server-on-steroids-walkthrough-9c7</link>
      <guid>https://dev.to/ravenesc/a-media-server-on-steroids-walkthrough-9c7</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Good day all, here is the section that keeps me engaged with the current-day readers while also never being more than an extra scroll to people who, also like me, have been looking up other people’s new builds all afternoon (or are interested in how someone creates “the thingamagiggy” to work with the “such-and-such”) and wants to get straight to the actual meat of the article: the experience, or steps.&lt;/p&gt;

&lt;p&gt;For this reason, I will keep this brief. (... i.e. skip to the next section)&lt;/p&gt;

&lt;p&gt;So, as some of you have seen me post about it on LinkedIn, yes, I got an old family laptop to run a K3S Cluster Jellyfin server application operating through Proxmox. Would I recommend the configuration to others? If they were into making a media server fail-tolerant, upgradeable, scalable, overkill, private (no unnecessary internet access), and cost-effective (practically free or relatively cheap)...&lt;/p&gt;

&lt;p&gt;Then yes…&lt;/p&gt;

&lt;p&gt;This proof-of-concept setup is for people like me who want the most scalable and future-proofed option, and enjoy their privacy. Also, this is a techie-made build which means it might gloss over some bits deemed unnecessary to go in full depth for brevity. Ha! You thought a full walkthrough meant I would write a 20-page paper with footnotes??&lt;/p&gt;

&lt;p&gt;I’m not a masochist… most of the time…&lt;/p&gt;

&lt;p&gt;Anyway, let’s talk parts.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgn1m6acgvc8ga5ui0asb.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgn1m6acgvc8ga5ui0asb.jpeg" alt="image of computer hardware" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Obtaining the hardware for a Home Server
&lt;/h2&gt;

&lt;p&gt;In numbered fashion!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An old/unused Laptop or PC &lt;strong&gt;[ This will be the server ]&lt;/strong&gt;. Most any device after 1999 will do, but here is a list of the minimum requirements:

&lt;ul&gt;
&lt;li&gt;64bit VT CPU (Virtualization-capable)&lt;/li&gt;
&lt;li&gt;Bare minimum 4 GB RAM&lt;/li&gt;
&lt;li&gt;Hard Drive - 256GB min → 1+ TB (I also added external storage for media/db files)&lt;/li&gt;
&lt;li&gt;And an Ethernet jack&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;An unused USB or removable drive &lt;strong&gt;[ This will be used to set up the server OS to Proxmox ]&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Two or more Ethernet Cables, for the best connectivity&lt;/li&gt;
&lt;li&gt;A home PC with an Ethernet port (the Bastion computer)&lt;/li&gt;
&lt;li&gt;And a way to connect to the internet (either directly attaching to the router or using a router connected to an HTTP Proxy like Squid Proxy for passing HTTP requests like I did)&lt;/li&gt;
&lt;li&gt;Pick up a router (an easy thrift store buy if one isn’t lying around) be sure it has more than one ethernet jack and can handle Wi-Fi.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fql6lmgjtlims6et6ejwz.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fql6lmgjtlims6et6ejwz.jpeg" alt="private network image" width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Making a Proxy… Squid-like
&lt;/h2&gt;

&lt;p&gt;— as of December 2024&lt;/p&gt;

&lt;p&gt;This step details how to start up a forward proxy if you plan on creating a private network in your home (separate from your home network).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Setup your router and login to the admin page&lt;/li&gt;
&lt;li&gt;Check that your computer (or the Bastion) is attached.&lt;/li&gt;
&lt;li&gt;Set up your PC with a Static IP (Google ‘&lt;a href="https://www.google.com/search?q=how+to+set+up+a+static+ip+on+a+router+%28%28insert+router+name+here%29%29&amp;amp;" rel="noopener noreferrer"&gt;How to set up a Static IP...&lt;/a&gt; ’ with your specific router name). Remember the Static IP of your PC for later steps&lt;/li&gt;
&lt;/ol&gt;



&lt;p&gt;This step involves opening up your private network to the internet when you need to update and operate Kubernetes (K3S).&lt;/p&gt;

&lt;p&gt;Download and install &lt;a href="https://squid.diladele.com/" rel="noopener noreferrer"&gt;Squid for Windows&lt;/a&gt; under ‘Console App’ (or &lt;a href="https://www.squid-cache.org/Versions/" rel="noopener noreferrer"&gt;Squid for Linux and Mac&lt;/a&gt; under ‘Current Squid Release Series → tar.gz’).&lt;br&gt;
Google '&lt;a href="https://www.google.com/search?q=How+to+install+Squid+for+%3Cinsert+PC+OS%3E&amp;amp;" rel="noopener noreferrer"&gt;How to install Squid for...&lt;/a&gt;' if you need further help installing.&lt;/p&gt;

&lt;p&gt;LATER you will configure the /Squid/etc/squid/squid.conf file to allow http_proxy access to the static IP address you configured on the router for your PC. This way, when your PC is hooked to both networks, it can act as a liaison (or the Bastion) between the server and the internet, and not the other way around.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fatwk9jrkqormqlady5dd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fatwk9jrkqormqlady5dd.png" alt="Proxmox logo image" width="772" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up Proxmox VE
&lt;/h2&gt;

&lt;p&gt;— as of December 2024&lt;/p&gt;

&lt;p&gt;This step entails how to create a bootable media to set up an OS, like Proxmox.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the SourceForge Ventoy Download: &lt;a href="https://sourceforge.net/projects/ventoy/" rel="noopener noreferrer"&gt;Ventoy download | SourceForge.net&lt;/a&gt; and run the installer (with your USB drive plugged in)

&lt;ul&gt;
&lt;li&gt;Set up and install Ventoy, ISO/Image files can be ‘dragged and dropped’ into the new directory easily without needing to be flashed individually and will run like it was flashed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Go to the Proxmox website: &lt;a href="https://www.proxmox.com/en/downloads/proxmox-virtual-environment" rel="noopener noreferrer"&gt;Downloads - Proxmox Virtual Environment&lt;/a&gt; and download the Proxmox image to the Ventoy directory (or flash it)&lt;/li&gt;
&lt;li&gt;Eject the USB Drive and plug it into your server (or "Laptop")&lt;/li&gt;
&lt;li&gt;Turn the "Laptop" off and connect it to your private router via an ethernet cable.&lt;/li&gt;
&lt;li&gt;Turn it on and for Ventoy it should bring you to a boot/GRUB screen with your image as an option. (Else, hit F12 and boot to the USB)&lt;/li&gt;
&lt;li&gt;Select and let it boot into the Proxmox VE installation setup page.&lt;/li&gt;
&lt;li&gt;Follow the step-by-step process, &lt;strong&gt;most of the default settings should be fine&lt;/strong&gt;. Keep track of your password (the username will be ‘root’ when first logging in).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;— (Proxy): When setting up your HTTP Proxy in step 4, put in the Static IP Address of your assigned Squid Proxy or Proxy Server you assigned at the private router step (e.g. &lt;code&gt;192.168.#.#:3128&lt;/code&gt;). Then go to your private router's admin page and set the newly attached server to a new Static IP address. You will also want to configure your /Squid/etc/squid/squid.conf file so that it can accept requests from the Server Static IP. Add &lt;code&gt;acl localnet src &amp;lt;your-server-IP&amp;gt;&lt;/code&gt; in the file.&lt;/p&gt;

&lt;p&gt;When done with the installation, make sure both your Proxy (or the Bastion) and the server are connected to your private router, then go to your browser and type in your server’s IP address and port 8006, like this: &lt;code&gt;192.168.#.#:8006&lt;/code&gt;. This should bring you to a login page for your Proxmox server.&lt;/p&gt;

&lt;p&gt;— Sweet! You are ready for the magic of K3S now!&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgi3cq1yqoc8807vneccf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgi3cq1yqoc8807vneccf.jpg" alt="Booting computer image" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Booting up the Ubuntu Servers (VMs) in Proxmox
&lt;/h2&gt;

&lt;p&gt;— as of December 2024&lt;/p&gt;

&lt;p&gt;This section is for building the Nodes where K3S will deploy resources and run Jellyfin.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Boot up the 2 VMs &lt;strong&gt;[ The first will be the Controlplane Node and the Second will be the Worker Node where Jellyfin will be with the configured port. ]&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Go under the server and select ‘Create a VM’ from the top right options, set the RAM to around 1024 - 2000+ and storage at 32 GB as this is all it needs to manage at minimum capacity, and set the image to ‘Ubuntu server’ or set the URL to the latest download link on the official website: &lt;a href="https://ubuntu.com/download/server" rel="noopener noreferrer"&gt;Get Ubuntu Server | Download&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;— TIP: Note that Proxmox can’t pull from the internet without a DNS server connection. To rectify this, download the image on your PC and go to the Proxmox server settings ‘&lt;strong&gt;Used Images&lt;/strong&gt;’ to copy it to the server via “drag and drop”. This way it stores the image locally to create VMs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name the server something like “&lt;code&gt;controlplane-node01&lt;/code&gt;” to keep track of it. Other than that, leave other settings as default and keep track of passwords.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do the same with the second VM, except name it “&lt;code&gt;worker-node01&lt;/code&gt;” and set the RAM limit to 4000 - 6000+ with 50GB.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Any other VM made after this should copy step 4. Except, give it a name with a different number like ‘002’ or ‘013’.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;— (Proxy): You should also set up your Squid/HTTP Proxy to accept requests from the server IPs which you will have to set as static IPs on your router. Once that is taken care of, you should be able to update your VMs and give Kubernetes access to HTTP by setting the environmental variables HTTP_PROXY and HTTPS_PROXY both to the URL of your PC Squid Proxy: &lt;code&gt;http://192.168.#.#:3128&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.pexels.com%2Fphotos%2F13595074%2Fpexels-photo-13595074.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.pexels.com%2Fphotos%2F13595074%2Fpexels-photo-13595074.jpeg" alt="External drive image" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding External Storage to your VMs (MORE!!)
&lt;/h2&gt;

&lt;p&gt;— as of December 2024&lt;/p&gt;

&lt;p&gt;This step is for setting up the persistent shared storage and is needed if you plan on adding more storage space.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Attach your external storage to the server and mount it to the device using the command line. Google &lt;a href="https://www.google.com/search?q=How+to+mount+an+%3CNFS%2C+External+drive%2C+USB+drive%2C+etc.%3E+in+linux&amp;amp;" rel="noopener noreferrer"&gt;How to mount&lt;/a&gt; your storage option if needed.&lt;/li&gt;
&lt;li&gt;In the Proxmox web GUI, go under your &lt;strong&gt;Proxmox server settings&lt;/strong&gt;, and on the left panel, click '&lt;strong&gt;Storage&lt;/strong&gt;' then on the top click '&lt;strong&gt;Add Storage&lt;/strong&gt;'. Click on the storage type you attach and where it is mounted.

&lt;ul&gt;
&lt;li&gt;Google if you need further instructions on your specific storage type, I used USB haha, but you can even just use space on your system.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;After formatting the storage, go to your worker-node VM and click on '&lt;strong&gt;Hardware&lt;/strong&gt;'. Then click '&lt;strong&gt;Add Hardware&lt;/strong&gt;', select '&lt;strong&gt;Storage&lt;/strong&gt;', and add from your attached storage medium.&lt;/li&gt;
&lt;li&gt;Afterward, go to your worker-node command line and mount the new storage like in step 1. BE SURE TO MAKE NOTE OF WHERE YOU MOUNT YOUR EXTRA STORAGE (This is important to set up persistent volumes across pods) on the attached storage, also create 2 new directories:

&lt;ul&gt;
&lt;li&gt;One for your media files (&lt;code&gt;/mnt/extra-storage/media&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;And one for your database and jellyfin configurations (&lt;code&gt;/mnt/extra-storage/data&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Anytime you want to add media, just turn off the Proxmox server, detach the external storage if you went with that, and attach it to your PC to add your media, reattach to server, turn it back on and done! I use the sftp command to add media while the server is on and refresh the Jellyfin library within the admin web GUI. &lt;code&gt;sftp -r &amp;lt;admin-username@worker-node-IP-address&amp;gt; &amp;lt;ON-PC-media-to-upload-folder&amp;gt; &amp;lt;ON-WORKER-NODE-persistent-media-directory&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;— Now you are set to install K3S, your lightweight microservices architecture!&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fye7sqw0ffhfe7x9nnrqm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fye7sqw0ffhfe7x9nnrqm.jpg" alt="K8S image" width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Lightweight Kubernetes (K3S) on Proxmox
&lt;/h2&gt;

&lt;p&gt;— as of December 2024&lt;/p&gt;

&lt;p&gt;This is where the fun begins as K3S is installed on the VMs.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Using the K3S Quick-Start Guide (&lt;a href="https://docs.k3s.io/quick-start" rel="noopener noreferrer"&gt;Quick-Start Guide | K3s&lt;/a&gt;), go into the &lt;strong&gt;Controlplane Node&lt;/strong&gt; (VM) command line to install K3S (SSH to copy and paste). Make sure you are connected to the internet or proxy (&lt;code&gt;export HTTP_PROXY="192.168.#.#:3128"&lt;/code&gt;). Run &lt;code&gt;curl google.com&lt;/code&gt; to test.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;sudo curl -sfL &amp;lt;https://get.k3s.io&amp;gt; | sh -&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Link the &lt;strong&gt;Worker Node&lt;/strong&gt; (VM) to the Controlplane via K3S by going into its command line (check if you have the proxy set up).&lt;/li&gt;
&lt;li&gt;Replace SERVERIP with the controlplane node IP and CONTROLPLANENODETOKEN with the controlplane node Token (at &lt;code&gt;/var/lib/rancher/k3s/server/node-token&lt;/code&gt;) and run &lt;code&gt;sudo curl -sfL &amp;lt;https://get.k3s.io&amp;gt; | K3S_URL=&amp;lt;https://SERVERIP:6443&amp;gt; K3S_TOKEN=CONTROLPLANENODETOKEN sh -&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Now verify by going to the &lt;strong&gt;Controlplan Node&lt;/strong&gt; command line and run &lt;code&gt;sudo kubectl get nodes&lt;/code&gt; and the worker VM/Node should be there along with the controlplane node.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvmttwfapg96q48zl4wv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvmttwfapg96q48zl4wv.jpg" alt="jellyfin banner image" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prepping the Jellyfin K3S Deployment
&lt;/h2&gt;

&lt;p&gt;— as of December 2024&lt;/p&gt;

&lt;p&gt;Time to start running the Kubernetes environment!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;SSH into the controlplane node&lt;/strong&gt; and clone this template on my GitHub &lt;code&gt;git clone RavenEsc/jellyfin-k8s-deployment&lt;/code&gt;, or &lt;code&gt;wget &amp;lt;my-repo&amp;gt;&lt;/code&gt; and inflate the tarball. Again, ensure you can connect to the internet: &lt;code&gt;curl google.com&lt;/code&gt;. MAKE SURE YOU ARE RUNNING COMMANDS IN THE DIRECTORY, &lt;code&gt;cd jellyfin-k8s-deployment&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you want to easily set up the variables, &lt;a href="https://helm.sh/docs/intro/install/" rel="noopener noreferrer"&gt;install Helm&lt;/a&gt; and proceed to part “&lt;strong&gt;A&lt;/strong&gt;”. If you want to run the K3S files directly with Kubectl, move to part “&lt;strong&gt;B&lt;/strong&gt;”.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  A.
&lt;/h3&gt;

&lt;p&gt;Go to “./jellyfin-charts/values.yaml” and edit the following variables. (labeled as “# !!” in the file)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;nodeSelector.kubernetes.io/hostname&lt;/strong&gt;, set to the name of your worker node&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;dataVolumeConfig.storage&lt;/strong&gt;, set this to “100Gi” minimum&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;dataVolumeConfig.hostPath&lt;/strong&gt;, set this to the path that you want to store the jellyfin data files (this is the same path where you store your data files on the mounted storage medium with Proxmox)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mediaVolumeConfig.storage&lt;/strong&gt;, set this to how much space you wanted for the media, I did “800Gi”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mediaVolumeConfig.hostPath&lt;/strong&gt;, set this to the path that you want to store your media files (this is the same path where you store your media files on the mounted storage medium with Proxmox)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run &lt;code&gt;helm install jellyfin ./jellyfin-charts --namespace jellyfin --create-namespace&lt;/code&gt; (You can use the --dry-run and --debug option to test before deploying)&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  B.
&lt;/h3&gt;

&lt;p&gt;After setting these environmental variables with &lt;code&gt;export&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;WNODENAME=&amp;lt;your-worker-node-name&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DATASTORAGE=&amp;lt;your-data-path-storage-size&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DATAPATH=&amp;lt;your-data-path&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MEDIASTORAGE=&amp;lt;your-media-path-storage-size&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MEDIAPATH=&amp;lt;your-media-path&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run the custom bash script with: &lt;code&gt;chmod +x ./jellyfin-k8s-deployment/ykvar.sh &amp;amp;&amp;amp; ./ykvar.sh -nv&lt;/code&gt; (Be sure to check if the variables changed &lt;code&gt;cat ./k8s/deploy/jellyfindeploy.yaml&lt;/code&gt;).&lt;br&gt;
Then run &lt;code&gt;sudo kubectl create -Rf ./k8s&lt;/code&gt; (You can use the &lt;code&gt;--dry-run=client&lt;/code&gt; to test before deploying)&lt;br&gt;
— TIP: The ykvar.sh script has options, so check them out with &lt;code&gt;./ykvar.sh -h&lt;/code&gt; help option.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Check that the deployments are running with&lt;/strong&gt; &lt;code&gt;sudo kubectl get deploy -n jellyfin-server&lt;/code&gt; ( Deployment should be 1/1 ).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Check that the service is up with&lt;/strong&gt; &lt;code&gt;sudo kubectl get svc -n jellyfin-server&lt;/code&gt; ( Service should be accessible by the configured port &lt;strong&gt;30096&lt;/strong&gt; on the Static Worker Node/VM IP. You can check by typing in the IP and port number into your PC browser and a Jellyfin page should come up if the Pod is up ).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Check if the Persistent storage is up with&lt;/strong&gt; &lt;code&gt;sudo kubectl get pv -n jellyfin-server&lt;/code&gt; &lt;strong&gt;and if the Claim from the deployment is attached with&lt;/strong&gt; &lt;code&gt;sudo kubectl get pvc -n jellyfin-server&lt;/code&gt; (Look to see that both are up and they say, under the "STATE" field, “BOUND” )&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv37q2fhmc6qk5wab8efo.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv37q2fhmc6qk5wab8efo.jpeg" alt="testing infrastructure image" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Test the K3S Jellyfin Server running on Proxmox
&lt;/h2&gt;

&lt;p&gt;— as of December 2024&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go into the Jellyfin Web GUI and set up the server with the quickstart (save passwords).&lt;/li&gt;
&lt;li&gt;Add some media, if you do not have media on your server, simply add it to the persistent media storage path mounted before. Utilize a transfer tool like SFTP to send the media from your PC to your Worker-Node IP over the network.&lt;/li&gt;
&lt;li&gt;Set the media directory up as a media library (organized however you want it) and try viewing the media and its impact on your worker node with the resource usage visualizer on Proxmox’s VM summary page.&lt;/li&gt;
&lt;li&gt;After all goes well, it’s time to test durability. Delete the current deployment pod with 'sudo kubectl delete pod/jellyfin-deployment-##########-##### -n jellyfin' replacing the pod name with the current pod up which can be found with 'sudo kubectl get pod -n jellyfin'.

&lt;ul&gt;
&lt;li&gt;After it is deleted, check if a new pod took its place with 'sudo kubectl get pod -n jellyfin'. (If not, check if your Proxy is up as it needs a connection to access the jellyfin image)&lt;/li&gt;
&lt;li&gt;If so, refresh the Jellyfin page on your PC and either a login page or a “select server” screen will pop up. Give the service inside the Pod time to reconfigure (at most 5 minutes) then either select the server and hit "connect", it should bring you to sign in, and/or log in with your username and password. After that, you will be greeted with the home page and all of your media where it was if it functioned properly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If not, look below or ask in the comments section if needed. Running on limited resources or old hardware might have weird outcomes. When in doubt, Google or DuckDuckGo or whatever you use.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.pexels.com%2Fphotos%2F735911%2Fpexels-photo-735911.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.pexels.com%2Fphotos%2F735911%2Fpexels-photo-735911.jpeg" alt="finished server image" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Done! General Challenges
&lt;/h2&gt;

&lt;p&gt;— as of December 2024&lt;/p&gt;

&lt;p&gt;As you may have noticed, Jellyfin is not built to be a multi-tier application. I ran into some roadblocks while developing this solution as I would need to change the Jellyfin source code and make my own container image (which would probably not be reasonable to upkeep without a high demand or a team). And although I want to make the best of the best before anyone sees it, I want to open this up to the world as a “look how far it's come”! I am also reminded not to let things go on too long before asking for criticism. The intention of this walkthrough was to share the work I have done and hopefully get to inspire others in their paths. Was making a K3S cluster on a single old laptop with limited resources overkill?&lt;/p&gt;

&lt;p&gt;Yes, absolutely.&lt;/p&gt;

&lt;p&gt;But I wanted to make a solution that was not only able to use our extra devices but also had the option to scale if someone wanted to. Proxmox is great at that, and K3S isn’t the end. You could add more devices and make a makeshift server rack. Make it even more secure by utilizing Jellyfin’s HTTPS port, or find some way to keep sessions and profile preferences persistent so you can run more than 1 pod at a time (trust me, I’m trying)! You could even turn this into a cloud-based or remote configuration with secure and accessible storage and viewing options! For now, I am happy with where it is, and so are my users!&lt;/p&gt;

&lt;p&gt;Overall, I am glad to have tried and I hope you have found this as interesting as I have.&lt;/p&gt;

&lt;p&gt;Oh, and to the people just here for the “&lt;a href="https://www.google.com/search?q=how+to+get+rickrolled&amp;amp;oq=How+to+get+rickrolled&amp;amp;" rel="noopener noreferrer"&gt;How to…&lt;/a&gt;” and “&lt;a href="https://www.google.com/search?q=Is+it+possible+to+make+a+rickroll&amp;amp;" rel="noopener noreferrer"&gt;Is it possible to make…&lt;/a&gt;” google searches,&lt;br&gt;&lt;br&gt;
&lt;br&gt;sup.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

</description>
      <category>bash</category>
      <category>tutorial</category>
      <category>kubernetes</category>
      <category>learning</category>
    </item>
    <item>
      <title>Passing My CKA!</title>
      <dc:creator>Raven Spencer</dc:creator>
      <pubDate>Tue, 18 Jun 2024 20:46:18 +0000</pubDate>
      <link>https://dev.to/ravenesc/passing-my-cka-5be1</link>
      <guid>https://dev.to/ravenesc/passing-my-cka-5be1</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Hello, fellow developing cloud architecture network administration engineering Kubernetes cyber security consultants! 😮‍💨&lt;br&gt;
I'm excited to share my journey to becoming a Certified Kubernetes Administrator (CKA). It’s been a whirlwind of learning experiences and growth!&lt;/p&gt;

&lt;h2&gt;
  
  
  My Journey
&lt;/h2&gt;

&lt;h3&gt;
  
  
  08/2023: AWS Solutions Architect Associate and CSPM Development
&lt;/h3&gt;

&lt;p&gt;In August, I successfully passed my AWS Solutions Architect Associate exam. This was a significant milestone for me, as it not only validated my cloud expertise but also sparked my interest in exploring more advanced cloud technologies. To build on this knowledge, I developed a Cloud Security Monitoring Tool (CSPM), which was fully deployable via Terraform and GitHub. This project was my first foray into the world of automation and infrastructure as code, laying the groundwork for my future Kubernetes journey.&lt;/p&gt;

&lt;h3&gt;
  
  
  10/2023: Diving into Kubernetes
&lt;/h3&gt;

&lt;p&gt;After completing my AWS certification, I was eager to dive deeper into container technology. I asked my mentor about learning Kubernetes since I barely understood AWS ECS, ECR, and EKS. I started by learning Kubernetes (k8s) on the terminal, a hands-on approach that felt both exciting and challenging. This step marked the beginning of my deep dive into container orchestration.&lt;/p&gt;

&lt;h3&gt;
  
  
  11/2023: Starting with the Basics
&lt;/h3&gt;

&lt;p&gt;To get a solid understanding of Kubernetes, I began with an introductory course on &lt;a href="https://youtu.be/XuSQU5Grv1g"&gt;YouTube&lt;/a&gt;. This course provided a basic overview and was essential for building my foundational knowledge. It was a lighter introduction, but it gave me the intrigue to tackle more complex topics.&lt;/p&gt;

&lt;h3&gt;
  
  
  12/2023: Intensive Learning with KodeKloud Udemy Course
&lt;/h3&gt;

&lt;p&gt;After completing the introductory course, I realized I needed more comprehensive training to truly master Kubernetes. I enrolled in the &lt;a href="https://kodekloud.com/"&gt;KodeKloud&lt;/a&gt; &lt;a href="https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/"&gt;Udemy&lt;/a&gt; course specifically designed for the CKA exam. This course offered in-depth lessons and practical labs that significantly enhanced my understanding of Kubernetes. I spent countless hours working through exercises and scenarios, gradually building my competence.&lt;/p&gt;

&lt;h3&gt;
  
  
  01/2024 to 04/2024: The Learning Curve
&lt;/h3&gt;

&lt;p&gt;Learning Kubernetes was not an overnight process. It required dedication and persistence. During these months, I immersed myself in various aspects of Kubernetes, from cluster architecture to deployment strategies. I also expanded my knowledge beyond Kubernetes, delving into computer networking, logging architecture, Linux commands, Secrets management, industry standards, ETCD, Kubeadm, Kubectl, YAML, JSONpath, updating clusters, Linux file system architecture, and backup and restore.&lt;/p&gt;

&lt;h3&gt;
  
  
  05/2024: Exam Preparation
&lt;/h3&gt;

&lt;p&gt;With a solid foundation, I scheduled my exam and began rigorous preparation. I took numerous mock exams using resources like &lt;a href="https://killercoda.com/playgrounds"&gt;Killercoda&lt;/a&gt;, &lt;a href="https://killer.sh/cka"&gt;Killer.sh&lt;/a&gt;, and materials from the &lt;a href="https://training.linuxfoundation.org/"&gt;Linux Foundation&lt;/a&gt;. The PSI ‘at-home’ testing proved to be a stressful process. I had never been through such a rigid testing environment of that caliber. The stress of the testing environment was real, but I learned to control what I could and let go of the rest. And honestly, it went better than I expected.&lt;/p&gt;

&lt;h3&gt;
  
  
  05/30/2024: First Attempt
&lt;/h3&gt;

&lt;p&gt;So I went into the PSI browser, followed the step they gave me and on my first attempt, I scored 60, just shy of the 66 needed to pass. I identified my weak areas, particularly in networking and cluster updates, and dedicated two more weeks to intensive study.&lt;/p&gt;

&lt;h3&gt;
  
  
  06/13/2024: The Final Attempt
&lt;/h3&gt;

&lt;p&gt;Feeling confident, and after having gone through the process of PSI testing, I retook the exam and scored 78! The 6-month-long study was done, and I officially became a Certified Kubernetes Administrator. The journey had its ups and downs, but looking back every moment was worth it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I’m incredibly excited to have achieved this milestone. The journey taught me the importance of persistence, continuous learning, and the value of a supportive community. I’m grateful to everyone who supported me along the way.&lt;br&gt;
As I move forward, I plan to take a month to reset and reflect on my current skills. My goal is to continue learning and growing, building on the foundation I've established. I’m looking forward to connecting with others who are on a similar path and sharing our experiences. Maybe one day, I will get to see you at a conference when I can afford it. 😂&lt;br&gt;
Until then, thank you for reading, and here’s to the next chapter!&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>learning</category>
      <category>devops</category>
      <category>cloud</category>
    </item>
    <item>
      <title>How is Amazon Web Services ensuring AI is Securely handling Our Data?</title>
      <dc:creator>Raven Spencer</dc:creator>
      <pubDate>Fri, 15 Mar 2024 01:35:07 +0000</pubDate>
      <link>https://dev.to/ravenesc/how-is-amazon-web-services-ensuring-ai-is-securely-handling-our-data-21b1</link>
      <guid>https://dev.to/ravenesc/how-is-amazon-web-services-ensuring-ai-is-securely-handling-our-data-21b1</guid>
      <description>&lt;p&gt;(AWS Innovate GenerativeAI + Data 2024 Reflection)&lt;/p&gt;

&lt;p&gt;I am continuously flabbergasted at the sheer amount of options when it comes to technology. Like, how many routers or phones are out there when it’s time to replace the old one? It’s because of all of these options that we have to consider the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Where do I save money?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How long until I replace it?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the end, you will most often run into having to take a risk. To TRUST the developers, to TRUST the manufacturers, to TRUST the sellers. And while we can’t escape risk, we can mitigate it. We can lower the risk, by learning more about it, and acting responsibly!&lt;/p&gt;

&lt;p&gt;This is precisely what Amazon Web Services (AWS) are pushing.&lt;/p&gt;

&lt;p&gt;Now, this is not an AWS insider and not a comprehensive recap on AWS’s part. This article is intended for both people who want to learn about whether AWS is a safe option for their AI (Artificial Intelligence) apps and tools (at home and business), and people who want to learn from another perspective on AWS Innovate 2024: GenerativeAI + Data Conference.&lt;br&gt;
With that in mind, grab your grain of salt and read!&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;At the beginning of their 2024 conference, AWS Director of Enterprise Strategy, Tom Godden, spoke on AWS’s approach to handling DATA with their ML and AI services. And what I would consider a theme came from Godden’s phrasing from AWS:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Responsible AI&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, as I went to the following sessions, I went to only 7 of them (out of the 35 they had going). I picked the ones that stood out to me, but also tried to get a general perspective, as some sessions overlapped in concepts. It was these concepts that led me to narrow down AWS their handling of Generative AI, AI that generates content from user input (or GenAI), with our DATA to three areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Transparency&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adaptability&lt;br&gt;
&amp;amp;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Flexibility&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Transparency
&lt;/h2&gt;

&lt;p&gt;Now it comes as no surprise that this is one of the points. Because of course, you would want to market your business as trustworthy. And the biggest way to do that would be to set out what is expected of them and how they are doing it well.&lt;/p&gt;

&lt;p&gt;So how do we take them at their word?&lt;/p&gt;

&lt;p&gt;First, we see their claims on their GenAI Services. They don’t claim “nothing bad will happen to your DATA” In fact, Tom Godden spoke on behalf of AWS saying that if something DOES happen to your GenAI DATA, such as mishandling or violating customer DATA privacy because it is in AWS’s hands, AWS will assist in proving that their services are secure and private.&lt;/p&gt;

&lt;p&gt;To my knowledge, AWS in general says that they cannot access a user’s data, as it is encrypted by the user’s account. So to summarize, AWS is not in control of our DATA, contrary to popular belief that if you have the hardware, you have the DATA. But, again, can we take their word for it? The next point shares more on GenAI’s DATA usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adaptability
&lt;/h2&gt;

&lt;p&gt;Now here’s the nitty-gritty, the coup-de-gras of AWS’s cloud resources and whether they are safe or not.&lt;/p&gt;

&lt;p&gt;AWS has done quite a bit to showcase its ethics (compliance) with handling DATA, but even more so as the popularity of ML and GenAI rise.&lt;br&gt;
At the conference sessions, I went to many demonstrations, as my focus was to see the bare-bones code and services used to make GenAI in the cloud possible. In those demos, I got to see many different test applications and Proof-of-Concepts. As I am only professionally curious about ML, LLMs, AI, and GenAI I can only speak on my knowledge, in hopes I am at a similar spot as most others in my curiosity.&lt;/p&gt;

&lt;p&gt;But to summarize, AWS promotes Governance (giving privileged access permissions) and security in their infrastructure, tools, and our applications.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Their bottom layer, hardware, and infrastructure, provide updates, patches, and overall handles all of the tedious and time-consuming parts of security management.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This leads to giving you complete access to handle your DATA without worrying about the security of your servers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Also, AWS gives tools for monitoring their tools and your apps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some examples they shared in their AI tools of pursuing security and privacy:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Amazon Bedrock, the Foundation Model (FM) ML template platform, now has Guardrails to keep sensitive and harmful DATA from both being accessed and produced.&lt;br&gt;
Amazon SageMaker, the all-in-one ML model developer platform, utilizes Amazon's in-house services each with their own encryption, validation, and monitoring solutions (pursuing up-to-date security standards on all fronts)&lt;br&gt;
AWS Glue, DataZone, LakeFormation, Clean Rooms, Aurora, RDS, DynamoDB, etc.. to name some similar services used for data storage and sharing (each with its own encryption in transit and at rest)&lt;/p&gt;

&lt;p&gt;I would love to go into even more detail on the capabilities of some of these services and how each advancement has its relative security options, but for the sake of time and the long section, there is one more train of thought to consider.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flexibility
&lt;/h2&gt;

&lt;p&gt;The final point I would like to make springboards from an AWS value:&lt;/p&gt;

&lt;p&gt;‘Learn and Be Curious’&lt;/p&gt;

&lt;p&gt;They have put in their value system that learning and improving by being curious leads to innovation and challenges their services to become better. Objectively speaking, better includes security. So by looking at what AWS is doing, as mentioned throughout their Innovate Conference, we can see if they are holding themselves to this. And it not only applies to AWS, but to us as potential users of their tools and services. We should continue to learn and grow so that we are not blindsided by a TOS (terms of service) change or a lack of development and effort on Amazon’s side.&lt;br&gt;
Funnily enough, AWS promotes this as they give users control over more and more security and privacy features in their ML and AI services and models.&lt;/p&gt;

&lt;h2&gt;
  
  
  So… What Now?
&lt;/h2&gt;

&lt;p&gt;We have gone over some of the key points of this event. But it would be improper to end without something to take home or to work.&lt;/p&gt;

&lt;p&gt;One way I heard it said in a session:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What do you do on Monday?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mark Roy, AWS Principal ML Architect&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;No doubt putting your data in a place out of your reach is TRUSTING in that storage entity. And there isn’t a claim you can make against it either, as there is a good assortment of evidence that AWS has your best interest in mind as their business needs to stay afloat. But as a community, we all need to pitch in to push for better security to give AWS an incentive to keep up with our needs. I hope I have shed some light on what I have learned about using cloud services from the Innovate Conference: GenAI + DATA 2024, especially Generative AI.&lt;/p&gt;

&lt;p&gt;With all of the hubbub on GenAI and the legalities and unethical behavior about it, I thought I could give some peace of mind to those who are worried about their data’s security when it is in an AWS server.&lt;/p&gt;

&lt;p&gt;Cause, after all, the goal is to be:&lt;/p&gt;

&lt;p&gt;Concerned, not Worried.&lt;/p&gt;

&lt;p&gt;Hopefully, this allows you to make an informed decision on whether you can trust Amazon’s ML services with your DATA. And if you are still uncomfortable, that is fine, I wanted to give an assurance, but it will be different for each use case and business need.&lt;/p&gt;

&lt;p&gt;So what do you take away from this?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>aws</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
