← Back
Mischa Vandenburg May 25, 2024 2h 0m

☸️ K8s Homelabbing - Deploying Wallabag! - 📚 Read Later App

Read full transcript 70 segments
  1. let's see just configuring let's see just configuring everything like always twitch yeah looks like we're live there twitch yeah looks like we're live there too e hey Rio hey Rio mola good to see you almost good to

  2. almost good to [Music] okay still all of bit awkward to do the okay still all of bit awkward to do the streaming because I'm uh I'm not used to streaming because I'm uh I'm not used to streaming because I'm uh I'm not used to it but we are up and running now here on it but we are up and running now here on it but we are up and running now here on restream I can see they're both up here restream I can see they're both up here restream I can see they're both up here is YouTube and twitch so now I'm is YouTube and twitch so now I'm is YouTube and twitch so now I'm uh ready to go uh ready to go uh ready to go basically uh Rio since you tuned in uh basically uh Rio since you tuned in uh basically uh Rio since you tuned in uh just so you know I am here in a devbot just so you know I am here in a devbot just so you know I am here in a devbot running on my kubernetes running on my kubernetes running on my kubernetes cluster which contains all of my my cluster which contains all of my my cluster which contains all of my my entire home home lab entire home home lab entire home home lab code CD workspaces and hom lab it contains my workspaces and hom lab it contains my entire home lab and it's entire home lab and it's entire home lab and it's actually running on my H lab cluster too actually running on my H lab cluster too actually running on my H lab cluster too so this is just so so this is just so so this is just so amazing and from the dev pod I can do amazing and from the dev pod I can do amazing and from the dev pod I can do Cube CTL get Nam spaces and now it's Cube CTL get Nam spaces and now it's Cube CTL get Nam spaces and now it's actually calling the cube API from the actually calling the cube API from the actually calling the cube API from the cluster itself it is so

  3. cool going meta is the only way cool going meta is the only way yeah yeah this uh this feels Next Level yeah yeah this uh this feels Next Level yeah yeah this uh this feels Next Level so it's it's really cool I'm thank you so it's it's really cool I'm thank you so it's it's really cool I'm thank you so much for showing me so much for showing me so much for showing me this I got flux going got my Cube this I got flux going got my Cube this I got flux going got my Cube CTL and uh yeah we still need to get CTL and uh yeah we still need to get CTL and uh yeah we still need to get into the cube config stuff I now for now into the cube config stuff I now for now into the cube config stuff I now for now I just pulled it in with a private repo I just pulled it in with a private repo I just pulled it in with a private repo but yeah this is just so freaking cool but yeah this is just so freaking cool but yeah this is just so freaking cool like from I'm managing my kubernetes like from I'm managing my kubernetes like from I'm managing my kubernetes cluster from this little pod here and it feels here and it feels amazing so what I'm going to do is uh I amazing so what I'm going to do is uh I amazing so what I'm going to do is uh I started wallabag a while ago ah I don't have Cubs of course so R ago ah I don't have Cubs of course so R install oh I should do add it to my uh to my oh I should do add it to my uh to my config let's see bag uh so did yeah so the status on wall

  4. bag uh so did yeah so the status on wall bag last time was I I got it bag last time was I I got it bag last time was I I got it running but the problem was that I running but the problem was that I running but the problem was that I couldn't I I didn't see any images when couldn't I I didn't see any images when couldn't I I didn't see any images when I was uh when I was in there there and let's see how how is would a port forward work see how how is would a port forward work if I am in my death pod well one way to if I am in my death pod well one way to if I am in my death pod well one way to find out I mean that's not going to work out I mean that's not going to work because the Local Host uh that that's because the Local Host uh that that's because the Local Host uh that that's actually something something to uh actually something something to uh actually something something to uh consider here my Local Host is not in consider here my Local Host is not in consider here my Local Host is not in would not be in my local machine it would not be in my local machine it would not be in my local machine it would be my pod that I'm running in so I would be my pod that I'm running in so I would be my pod that I'm running in so I would also have to do a port for it over would also have to do a port for it over would also have to do a port for it over there there there probably so not completely go probably so not completely go probably so not completely go uh independent of my local configuration uh independent of my local configuration uh independent of my local configuration here um

  5. yeah so this is what my wall bag looks yeah so this is what my wall bag looks like like like now and had I had some sort of password had I had some sort of password configured I bag let's see I had a secret ref and a bag let's see I had a secret ref and a config map and then the secret is config map and then the secret is config map and then the secret is probably in my key Vault probably in my key Vault probably in my key Vault then wall no I didn't set the password that

  6. wall no I didn't set the password that was for the was for the was for the database hey Jesse um the freelance search how is hey Jesse um the freelance search how is it going well it's going it's going okay it going well it's going it's going okay it going well it's going it's going okay um after I started freelancing a lot of um after I started freelancing a lot of um after I started freelancing a lot of people are telling me that it's a b a people are telling me that it's a b a people are telling me that it's a b a bad Market bad Market bad Market I mean there is lot enough work out I mean there is lot enough work out I mean there is lot enough work out there but um maybe they're a bit there but um maybe they're a bit there but um maybe they're a bit hesitant into hiring Freelancers at the hesitant into hiring Freelancers at the hesitant into hiring Freelancers at the moment but yeah I have confidence that moment but yeah I have confidence that moment but yeah I have confidence that if I just keep if I just keep if I just keep applying then eventually something will applying then eventually something will applying then eventually something will come I still have almost two months to come I still have almost two months to come I still have almost two months to go one and a half must be some sort

  7. must be some sort of password default login is wabag wabag password default login is wabag wabag okay here we go yes okay so now we're logged go yes okay so now we're logged in and now we're seeing that there is in and now we're seeing that there is in and now we're seeing that there is like this does not look right there are like this does not look right there are like this does not look right there are no images and I remember a no images and I remember a no images and I remember a friendly YouTube friendly YouTube friendly YouTube subscriber subscriber subscriber actually asked commented on my previous actually asked commented on my previous actually asked commented on my previous live stream about live stream about live stream about this um let's stream this was it stream this was it here there are comments oh [ __ ] no comments I was sure

  8. comments oh [ __ ] no comments I was sure there was someone commented there was someone commented there was someone commented [Music] [Music] [Music] about thanks for the kind words thanks for the kind words Charlie thinking of just called emailing Charlie thinking of just called emailing Charlie thinking of just called emailing companies to try and get work small companies to try and get work small companies to try and get work small businesses yeah I businesses yeah I businesses yeah I mean I'm thinking of the same I recently mean I'm thinking of the same I recently mean I'm thinking of the same I recently discovered that might be illegal you discovered that might be illegal you discovered that might be illegal you have to figure you have to check out the have to figure you have to check out the have to figure you have to check out the laws for that because in the Netherlands laws for that because in the Netherlands laws for that because in the Netherlands you're not just allowed to start you're not just allowed to start you're not just allowed to start emailing companies out of the blue emailing companies out of the blue emailing companies out of the blue apparently there needs to be a real apparently there needs to be a real apparently there needs to be a real reason for them to be with in need of reason for them to be with in need of reason for them to be with in need of your your your services so figure it out what I'm services so figure it out what I'm services so figure it out what I'm currently doing is I'm just spreading currently doing is I'm just spreading currently doing is I'm just spreading the word in my network and um hoping for the word in my network and um hoping for the word in my network and um hoping for some referrals and I have been getting a some referrals and I have been getting a some referrals and I have been getting a a bunch of referrals already it's just a bunch of referrals already it's just a bunch of referrals already it's just going a bit slow but I I wouldn't going a bit slow but I I wouldn't going a bit slow but I I wouldn't recommend going freelancing if you don't recommend going freelancing if you don't recommend going freelancing if you don't have a network at all you need to have a have a network at all you need to have a have a network at all you need to have a network work uh what's the wallabag exactly well

  9. work uh what's the wallabag exactly well wallabag is a an app where you when you wallabag is a an app where you when you wallabag is a an app where you when you see articles on the internet you can see articles on the internet you can see articles on the internet you can save the Articles into the application save the Articles into the application save the Articles into the application and they'll be stored there forever it's and they'll be stored there forever it's and they'll be stored there forever it's basically a read read later app and I basically a read read later app and I basically a read read later app and I want you to store all of the articles want you to store all of the articles want you to store all of the articles there so so I'm sure that if an article there so so I'm sure that if an article there so so I'm sure that if an article I want to I want to I want to read um is like deleted for some reason read um is like deleted for some reason read um is like deleted for some reason then I still have that version of it in then I still have that version of it in then I still have that version of it in my wall bag that I want to that I can my wall bag that I want to that I can my wall bag that I want to that I can still read it for later yeah mola I I do have it's not it later yeah mola I I do have it's not it was not a it was actually a comment on was not a it was actually a comment on was not a it was actually a comment on the video itself and I see those here the video itself and I see those here the video itself and I see those here comments and there is no content comments and there is no content comments and there is no content available and it came later so I I don't available and it came later so I I don't available and it came later so I I don't remember where that was but there was remember where that was but there was remember where that was but there was something about wab bag install bag quick start now this is the actual bag quick start now this is the actual thing installation wall installation wall bag so here's something with

  10. asset assets install that's asset assets install that's it okay it okay it okay so let's see pulling up my note here about wabag here pulling up my note here about wabag here I had this um thing that I had to run to I had this um thing that I had to run to I had this um thing that I had to run to initialize the see bin see bin [Music] [Music] [Music] console and then assets install found yeah this is an official container found yeah this is an official container image and why it would be missing I have

  11. image and why it would be missing I have image and why it would be missing I have no idea [Music] [Music] um but someone someone commented this on um but someone someone commented this on um but someone someone commented this on my on a video somewhere cons as it's somewhere cons as it's install so are install so are install so are there I was using this one Doctrine migrations yeah this migrations yeah this one and I was using that with the same one and I was using that with the same one and I was using that with the same command so I should be able to do that command so I should be able to do that command so I should be able to do that from here too this image this image either h

  12. check the network logs in the browser check the network logs in the browser maybe you have course issues okay well I am like running it okay well I am like running it um through a port forward so maybe that um through a port forward so maybe that um through a port forward so maybe that can be an can be an can be an issue maybe I just need issue maybe I just need issue maybe I just need to um run it properly with an to um run it properly with an to um run it properly with an Ingress or even better with Ingress or even better with Ingress or even better with a cloud flare tunnel because that's what a cloud flare tunnel because that's what a cloud flare tunnel because that's what I plan to do anyway I plan to do anyway I plan to do anyway cuz you do have to set a URL for the thing let's see where are URL for the thing let's see where are the environment variables ster hub was here in the quick start let's see

  13. was here in the quick start let's see the browser logs like he the browser logs like he the browser logs like he said yeah Local Host faon icon yeah this has yeah Local Host faon icon yeah this has to do with the the to do with the the to do with the the routing the path base routing so it's routing the path base routing so it's routing the path base routing so it's probably because I'm just running it in probably because I'm just running it in probably because I'm just running it in a port forward and maybe if I just do it forward and maybe if I just do it properly with an Ingress so properly with an Ingress so properly with an Ingress so let's see then I will will yeah so I'm just going to add a cloud yeah so I'm just going to add a cloud yeah so I'm just going to add a cloud flare tunnel I want to have it in a flare tunnel I want to have it in a flare tunnel I want to have it in a cloud flare tunnel anyway so cloud flare tunnel anyway so cloud flare tunnel anyway so just opening Cloud flare just opening Cloud flare just opening Cloud flare here and that shows some details that I here and that shows some details that I here and that shows some details that I want to show on the

  14. stream stream okay then it is tunnel love flare D tunnel create Walla bag and love flare D tunnel create Walla bag and I also think this does some output so yeah so this this creates so yeah so this this creates a tunnel in a Json a tunnel in a Json a tunnel in a Json file and I can cut that and and copy file and I can cut that and and copy file and I can cut that and and copy that and that is going to be that and that is going to be that and that is going to be installed added in my key me GL their tunnel so this is going key me GL their tunnel so this is going to be wall probably monthly costs of uh key Vols

  15. probably monthly costs of uh key Vols it's completely for free I'm storing it's completely for free I'm storing it's completely for free I'm storing like several databases now in my in my like several databases now in my in my like several databases now in my in my backups in in storage accounts and backups in in storage accounts and backups in in storage accounts and they're not big databases but I'm they're not big databases but I'm they're not big databases but I'm writing backups to their every day and writing backups to their every day and writing backups to their every day and with my secret management I am now with my secret management I am now with my secret management I am now paying 15 cents a month and this is not paying 15 cents a month and this is not paying 15 cents a month and this is not my MVP subscription this is just my my my MVP subscription this is just my my my MVP subscription this is just my my normal thing so using Azure secrets and storing thing so using Azure secrets and storing database backups as long as they database backups as long as they database backups as long as they are small are small are small absolutely no worries about cost at class this is called wab CL flare tunnel class this is called wab CL flare tunnel secret yeah secret yeah secret yeah and hi dear friend by the way Mr aeva I and hi dear friend by the way Mr aeva I and hi dear friend by the way Mr aeva I didn't see your username there but I didn't see your username there but I didn't see your username there but I Know Who You Are Know Who You Are Know Who You Are [Music] um then I'm going to add the cloud flare um then I'm going to add the cloud flare tunnel tunnel tunnel here to my deployment Nam space can be here to my deployment Nam space can be here to my deployment Nam space can be deleted

  16. host name is going to be wabag Misha host name is going to be wabag Misha Vandenberg domnet and I need to figure Vandenberg domnet and I need to figure Vandenberg domnet and I need to figure out which Port I'm um connecting out which Port I'm um connecting out which Port I'm um connecting to so have I set up a service so 883 apparently I I had already set so 883 apparently I I had already set that that that up okay so is the cloud flare tunnel that's okay so is the cloud flare tunnel that's not enabled in the customization um let's see I keep forgetting what the um let's see I keep forgetting what the apply came

  17. okay okay customize yeah so customize is working customize yeah so customize is working customize yeah so customize is working and then K and then K and then K [Music] up and the tunnel ID is this so in my up and the tunnel ID is this so in my cloud flare cloud flare cloud flare DNS I will now add a DNS I will now add a DNS I will now add a record called water bag tunnel almost it's not exactly the

  18. tunnel almost it's not exactly the tunnel it tunnel it tunnel it is the tunnel ID and is the tunnel ID and is the tunnel ID and [Music] [Music] [Music] then at Fargo okay still have to figure out uh install okay still have to figure out uh install external DNS that's going to be the next external DNS that's going to be the next external DNS that's going to be the next project insert you have origin seert is in a insert you have origin seert is in a private repo that I have to apply

  19. see this my private repo and then I need see this my private repo and then I need to add cloud okay so now the sht is okay so now the sht is added then we had an error added then we had an error added then we had an error with fail to get secret provider class with fail to get secret provider class with fail to get secret provider class wack Azure KV Cloud flare let's see flare let's see see secret provider tunnel so that secret is in fact there

  20. tunnel so that secret is in fact there I'm going to I'm going to I'm going to check the contents of it one more reason ah um the cloud reason ah um the cloud flare pod needs to mount the secret flare pod needs to mount the secret flare pod needs to mount the secret maybe there is a problem with but this sht has to it has to be private but this sht has to it has to be private because it's for the cloud flare because it's for the cloud flare because it's for the cloud flare tunnel deployment yes so the problem is that deployment yes so the problem is that my I'm not mounting the the other Secret

  21. my I'm not mounting the the other Secret my I'm not mounting the the other Secret store yet so if I pick my LinkedIn store yet so if I pick my LinkedIn store yet so if I pick my LinkedIn deployment file then here you see I'm file then here you see I'm mounting this secret called aser KV mounting this secret called aser KV mounting this secret called aser KV Cloud flare and I need to do that in flare and I need to do that in my wall my wall my wall bag bag bag cloudflare cloudflare cloudflare [Music] yo also needs to mount a secret called yo also needs to mount a secret called Azure KV Cloud secret provider class Azure KV Cloud

  22. secret provider class Azure KV Cloud flare is flare is flare is there is it actually okay so it's not complaining about the

  23. okay so it's not complaining about the other one anymore but it is still other one anymore but it is still other one anymore but it is still complaining about the origin problem I mess upop with this problem I mess upop with this um sword um sword um sword application so I'm forcing another reconciliation of

  24. so I'm forcing another reconciliation of the the the CT because I have a feeling it wasn't CT because I have a feeling it wasn't CT because I have a feeling it wasn't picked CT I see my origin shirt here so if I CT I see my origin shirt here so if I now go to my pods now go to my pods now go to my pods yeah now the cloud flare tunnels running yep now the both the tunnels are running yep now the both the tunnels are in a running state so let's do an NS lookup wallabag state so let's do an NS lookup wallabag do maven.net yep that's also yep that's also resolving so now yep here we now yep here we go everybody who's watching the stream go everybody who's watching the stream go everybody who's watching the stream can actually log into my wall bag can actually log into my wall bag can actually log into my wall bag instance now

  25. so I'm in and we also see that it's not so I'm in and we also see that it's not a problem with the actual a problem with the actual a problem with the actual instance but I haven't set the URL yet instance but I haven't set the URL yet instance but I haven't set the URL yet so that might be the instance Symphony n domain name so I instance Symphony n domain name so I assume that needs to be set kill the wall bag pod for a bit give it kill the wall bag pod for a bit give it a

  26. a a kick so refreshes the config that here we are that here we are baby so it had to do with the with the path routing you were right the with the path routing you were right Rio I of course never doubted Rio I of course never doubted Rio I of course never doubted you but um yeah here's my Wallback you but um yeah here's my Wallback you but um yeah here's my Wallback instance can add an can add an entry and let's just go to entry and let's just go to entry and let's just go to my comma my comma my comma [Music] [Music] [Music] feed and let's feed and let's feed and let's see what is an interesting article here see what is an interesting article here see what is an interesting article here what be birds can teach us about severe what be birds can teach us about severe what be birds can teach us about severe turbulence that's in turbulence that's in turbulence that's in my comma feed here so let's say I want my comma feed here so let's say I want my comma feed here so let's say I want to save this article aircraft turbulence to save this article aircraft turbulence to save this article aircraft turbulence is worsening with climate change is worsening with climate change is worsening with climate change studying Birds could studying Birds could studying Birds could help sure let's save that for

  27. help sure let's save that for help sure let's save that for later so then I add that and here we go here is that and here we go here is my yeah you're you're on my uh my yeah you're you're on my uh my yeah you're you're on my uh instance hi instance hi instance hi mola I will definitely change the mola I will definitely change the mola I will definitely change the password password password yeah so here's this [Laughter] [Laughter] here yeah never clean bathrooms when here yeah never clean bathrooms when here yeah never clean bathrooms when Misha is streaming Rio well you missed the payoff you you Rio well you missed the payoff you you can rewatch it but can rewatch it but can rewatch it but um it it was thanks to you so all credit um it it was thanks to you so all credit um it it was thanks to you so all credit to you Rio I see uh mola is adding to you Rio I see uh mola is adding to you Rio I see uh mola is adding things into my uh wallabag instance here so one thing that could be interesting so one thing that could be interesting is to it has this just unsafe um is to it has this just unsafe um is to it has this just unsafe um username password username password username password thing but it would be cool to add ath to thing but it would be cool to add ath to thing but it would be cool to add ath to this as well so that I could have an this as well so that I could have an this as well so that I could have an open ID connect

  28. um open ID Connect login flow um open ID Connect login flow config but this looks good though they config but this looks good though they config but this looks good though they have a they have a mobile app too so have a they have a mobile app too so have a they have a mobile app too so when I'm on my mobile phone I can save when I'm on my mobile phone I can save when I'm on my mobile phone I can save articles in here directly into my own articles in here directly into my own articles in here directly into my own instance so that's cool instance so that's cool instance so that's cool oh look two Factor authentication it oh look two Factor authentication it oh look two Factor authentication it already has here oh so I can I don't even have to here oh so I can I don't even have to bother with oo I can just use an OTP bother with oo I can just use an OTP bother with oo I can just use an OTP app wow that's okay so first of all I'm going to change okay so first of all I'm going to change the password of um can I do that from um can I do that from here yeah I should yeah I should be able here yeah I should yeah I should be able here yeah I should yeah I should be able to do that from here oh here password yeah here so that's it oh here password yeah here so that's it I thought I had to put it in my key I thought I had to put it in my key I thought I had to put it in my key Vault but I'm going to change the Vault but I'm going to change the Vault but I'm going to change the password

  29. okay that's now saved so okay that's now saved so I'm going to restart the container to I'm going to restart the container to I'm going to restart the container to disconnect in restart the in restart the containers so now everybody should be containers so now everybody should be containers so now everybody should be disconnected in in oh okay so remember when I clicked OTP it actually uh it actually expected OTP it actually uh it actually expected me to entered on my phone and I just me to entered on my phone and I just me to entered on my phone and I just went away okay you're out so that's good to good okay you're out so that's good to good to know oh this is actually pretty cool so know oh this is actually pretty cool so can I change the password from within can I change the password from within can I change the password from within the the the the um the um the um thing like I didn't expect it to thing like I didn't expect it to thing like I didn't expect it to actually I I thought I had to confirm actually I I thought I had to confirm actually I I thought I had to confirm the OTP but when I just clicked OTP it the OTP but when I just clicked OTP it the OTP but when I just clicked OTP it actually said yeah you're OTP now and actually said yeah you're OTP now and actually said yeah you're OTP now and now now now now I can log into my instance I'm

  30. now I can log into my instance I'm now I can log into my instance I'm locked out of my own instance oh God the password is okay but now I need God the password is okay but now I need an off code well not to worry I have it an off code well not to worry I have it an off code well not to worry I have it all figured out now so now I can uh I'm all figured out now so now I can uh I'm all figured out now so now I can uh I'm also deploying also deploying also deploying everything still like locally so now I everything still like locally so now I everything still like locally so now I can actually I'm actually ready to can actually I'm actually ready to can actually I'm actually ready to commit this so I can just delete commit this so I can just delete commit this so I can just delete everything and uh and start from scratch so that the whole emplo deployment is so that the whole emplo deployment is also being handled by flux but before I also being handled by flux but before I also being handled by flux but before I do I have to check out do I have to check out do I have to check out [Music] [Music] [Music] whether is my is my database already whether is my is my database already whether is my is my database already being backed up that is something I need being backed up that is something I need being backed up that is something I need to check my oh it it hasn't been backing my oh it it hasn't been backing up scheduled okay why is that not coming up in my

  31. okay why is that not coming up in my grafana dashboard though oh maybe my monitoring my my name though oh maybe my monitoring my my name space is not configured correctly okay space is not configured correctly okay space is not configured correctly okay get NS one bag o yo yeah I still need yo yeah I still need to add monitoring uh label to it to add monitoring uh label to it to add monitoring uh label to it too so now I too so now I too so now I can basically just delete everything could delete everything could delete the No No not should not delete the the No No not should not delete the the No No not should not delete the entire name space but okay get deploy oh my completion is a bit messed up in oh my completion is a bit messed up in my death container though what is that my death container though what is that my death container though what is that about the cube C completion bash it should

  32. the cube C completion bash it should complete properly session I have to fix that in my death session I have to fix that in my death bot but let's stick let's stay focused bot but let's stick let's stay focused bot but let's stick let's stay focused here so my deployment is here so my deployment is here so my deployment is done is gone I should say then I can done is gone I should say then I can done is gone I should say then I can delete delete delete my uh database annoying I I need I need bash completion annoying I I need I need bash completion in in in my death B though let's though let's see what does chat GPT have to say

  33. oh so bash completion is not installed oh so bash completion is not installed in this God def container yeah that works okay yeah that works okay so that's actually something I should so that's actually something I should so that's actually something I should add to my setup script then is that a Dev container feature then is that a Dev container feature bash well delete the scheduled

  34. well delete the scheduled backup and delete backup and delete backup and delete the database okay so everything is okay so everything is cleaned from the cleaned from the cleaned from the cluster then I will also delete cluster then I will also delete cluster then I will also delete my database backup from my database backup from my database backup from the Azure blob container too too okay so now

  35. okay now we have okay now we have everything configured let's see are there any other configured let's see are there any other configurations that I should do before I configurations that I should do before I configurations that I should do before I commit this to my not what I should do though is get merge not what I should do though is get merge main to this branch and that's going to main to this branch and that's going to main to this branch and that's going to be interesting hopefully it's not going be interesting hopefully it's not going be interesting hopefully it's not going to break configuration so that is now pushed and configuration so that is now pushed and now comes the nice moment that I get to now comes the nice moment that I get to now comes the nice moment that I get to create a PR for myself

  36. let's let's see this is going to add my wall bag clusters yeah that can stay there as an clusters yeah that can stay there as an example for the next one next time I example for the next one next time I example for the next one next time I going to I need to reset the database good good so review the merch so now flux is going to take care merch so now flux is going to take care of the rest and deploy wall bag so it's of the rest and deploy wall bag so it's of the rest and deploy wall bag so it's probably not going to work right away probably not going to work right away probably not going to work right away I'll probably have to do a few restarts I'll probably have to do a few restarts I'll probably have to do a few restarts of the containers but uh some stuff should

  37. containers but uh some stuff should start happening soon yeah did there were no delete there were yeah did there were no delete there were no persistent volume claims for wallet no persistent volume claims for wallet no persistent volume claims for wallet bag okay that's oh I am not seeing any pods yet but I

  38. oh I am not seeing any pods yet but I think I know main I of course need to add this to the main I of course need to add this to the customization file of my production file of my production cluster whilea initializing of course the wallabag Pod

  39. initializing of course the wallabag Pod is not going to work because the is not going to work because the is not going to work because the database is not there yet for it to database is not there yet for it to database is not there yet for it to communicate with I always I I absolutely love the with I always I I absolutely love the Enterprise DB operator like look how Enterprise DB operator like look how Enterprise DB operator like look how cool this is it does a f in first init cool this is it does a f in first init cool this is it does a f in first init DB it's starting a full postest cluster DB it's starting a full postest cluster DB it's starting a full postest cluster in a container and then when it has done the first and then when it has done the first replica it just spins up the the third replica it just spins up the the third replica it just spins up the the third next next next three and then every night it's three and then every night it's three and then every night it's automatically going to back up the automatically going to back up the automatically going to back up the database to Azure for me it is just so database to Azure for me it is just so database to Azure for me it is just so freaking cool and now it's joining the next replica to and now it's joining the next replica to the cluster but our cluster is now the cluster but our cluster is now the cluster but our cluster is now available so if I restart wallabag

  40. now okay water bag is ready and then I now okay water bag is ready and then I need to do this um database need to do this um database need to do this um database initialization command that I had noted initialization command that I had noted initialization command that I had noted for myself you don't need PG databases on myself you don't need PG databases on your own systems but let's I actually your own systems but let's I actually your own systems but let's I actually select my my apps um on that Criterium I select my my apps um on that Criterium I select my my apps um on that Criterium I I want them to have a database um there's something about running your um there's something about running your own databases that I like I've been own databases that I like I've been own databases that I like I've been work so far almost every consultancy work so far almost every consultancy work so far almost every consultancy assignment I've been on somehow forced assignment I've been on somehow forced assignment I've been on somehow forced me to work with datab basis and I didn't me to work with datab basis and I didn't me to work with datab basis and I didn't like it at the beginning but I I've like it at the beginning but I I've like it at the beginning but I I've become quite I've done a lot of become quite I've done a lot of become quite I've done a lot of postgress migration so I feel quite postgress migration so I feel quite postgress migration so I feel quite comfortable with it and there's just comfortable with it and there's just comfortable with it and there's just something about running your own something about running your own something about running your own database or several databases and having database or several databases and having database or several databases and having them in uh in your kubernetes cluster them in uh in your kubernetes cluster them in uh in your kubernetes cluster and backed up to Azure that I think and backed up to Azure that I think and backed up to Azure that I think that's just so that's just so that's just so cool but I'm just a huge cool but I'm just a huge cool but I'm just a huge geek but when I select self-hosted apps geek but when I select self-hosted apps geek but when I select self-hosted apps I always look if they support a I always look if they support a I always look if they support a postgress option that's also why I went

  41. postgress option that's also why I went postgress option that's also why I went for um LinkedIn yeah you select SQL light for LinkedIn yeah you select SQL light for your own stuff yeah I mean then it's your own stuff yeah I mean then it's your own stuff yeah I mean then it's just stored on a persistent volume right just stored on a persistent volume right just stored on a persistent volume right you just store your database on a you just store your database on a you just store your database on a persistent volume in the cluster and of persistent volume in the cluster and of persistent volume in the cluster and of course it works fine so fine so let's yeah it works fine but I I somehow let's yeah it works fine but I I somehow let's yeah it works fine but I I somehow like to train this like running the like to train this like running the like to train this like running the database it myself in in multiple database it myself in in multiple database it myself in in multiple containers and then training with the containers and then training with the containers and then training with the backup and restore like I'm running it backup and restore like I'm running it backup and restore like I'm running it as if this is well not Enterprise of as if this is well not Enterprise of as if this is well not Enterprise of course but this is not different from course but this is not different from course but this is not different from how I was running it at a at a how I was running it at a at a how I was running it at a at a customer we were doing it exactly the customer we were doing it exactly the customer we were doing it exactly the same so in in in as many ways this is same so in in in as many ways this is same so in in in as many ways this is production grade deployments that I'm production grade deployments that I'm production grade deployments that I'm doing ah okay that's also a good way ah okay that's also a good way though just let it so the container though just let it so the container though just let it so the container itself is stateless the cluster is itself is stateless the cluster is itself is stateless the cluster is stateless and then you have yeah light stateless and then you have yeah light stateless and then you have yeah light stream to object storage that's also a stream to object storage that's also a stream to object storage that's also a good way well it looks like everything is way well it looks like everything is correct from a cluster perspective I

  42. correct from a cluster perspective I correct from a cluster perspective I initialize the database let's see what initialize the database let's see what initialize the database let's see what happens if I go to my wall bag instance bag and I bag and I [Music] what you sir have a fresh database and a what you sir have a fresh database and a fresh persistent volume I do not believe that I cannot volume I do not believe that I cannot log in with wait it's telling me that the the wabag wait it's telling me that the the wabag wabag default credentials are not correct wait maybe I just need to give correct wait maybe I just need to give it one more

  43. go like there's there's no way it could go like there's there's no way it could have persisted the the have persisted the the have persisted the the password because it's the persistent the password because it's the persistent the password because it's the persistent the database is completely fresh so there database is completely fresh so there database is completely fresh so there there must be something else here inv valid csrf token yeah that's it okay inv valid csrf token yeah that's it okay [Music] [Music] [Music] so I need to clear the cookies for this so I need to clear the cookies for this so I need to clear the cookies for this probably cookies and site

  44. cookies and site permissions site permissions site permissions site [Music] [Music] [Music] data um I ran that command to initialize the

  45. I ran that command to initialize the database did I do any other stuff to get database did I do any other stuff to get database did I do any other stuff to get up and about yeah you think there a state left about yeah you think there a state left somewhere but it's not not taking my own somewhere but it's not not taking my own somewhere but it's not not taking my own my old password my old password my old password either that's the weird thing you think it no it can't it can't thing you think it no it can't it can't have restored something because have restored something because have restored something because the the wall bag the the wall bag the the wall bag data it can't have because the the data it can't have because the the data it can't have because the the bootstrap is an init DB it it won't pick bootstrap is an init DB it it won't pick bootstrap is an init DB it it won't pick up a a new um it won't pick up the up a a new um it won't pick up the up a a new um it won't pick up the database from Azure because it's an INB database from Azure because it's an INB database from Azure because it's an INB bootstrap but I it's bootstrap but I it's bootstrap but I it's I I must have done something else in I I must have done something else in I I must have done something else in this this this um container than last um container than last um container than last time but

  46. cool oh list all exist in users let's cool oh list all exist in users let's let's let's figure this out let's figure this out out let's figure this out so here's the console well let's just run the the migrate well let's just run the the migrate command again

  47. renamed that is migrated seven renamed that is migrated seven migrations executed so it did do so so [Music] weird if you're in production oh wait weird if you're in production oh wait remember to add and prod to the command so here we so here we go now I see it look I have to add n NPR go now I see it look I have to add n NPR go now I see it look I have to add n NPR and for some reason the wallet bag user and for some reason the wallet bag user and for some reason the wallet bag user is not created so there there are no is not created so there there are no is not created so there there are no users in my database currently so I must have run some sort currently so I must have run some sort of command last time that initiated the wallet bag user

  48. time that initiated the wallet bag user because there are no users here install install Okay so assets are installed now and now and let's still no users so now I can well I let's still no users so now I can well I let's still no users so now I can well I will just have to create my own user I I will just have to create my own user I I will just have to create my own user I I have no idea have no idea have no idea why it would have created a user the first it would have created a user the first time and not now but that's how it is so we'll just now but that's how it is so we'll just create a user for I've created user in the database and

  49. I've created user in the database and I'll added enter the I'll added enter the I'll added enter the credentials credentials credentials boah now it is now it's finally they really make it hard for you finally they really make it hard for you to um self Host this for sure to um self Host this for sure to um self Host this for sure and of course it's their right because and of course it's their right because and of course it's their right because that that is how they make doing like I'm still like a bit doing like I'm still like a bit dumbfounded why it wouldn't have created dumbfounded why it wouldn't have created dumbfounded why it wouldn't have created that in initial that in initial that in initial user it must have been a command that I user it must have been a command that I user it must have been a command that I ran the previous time and that it's not ran the previous time and that it's not ran the previous time and that it's not that I'm not doing that I didn't do now that I'm not doing that I didn't do now that I'm not doing that I didn't do now but at least it's but at least it's but at least it's working now I'm wondering can I like I'm working now I'm wondering can I like I'm working now I'm wondering can I like I'm not an administrator not an administrator not an administrator here so I should make myself an

  50. administrator hey you're watching my new administrator hey you're watching my new course hope you like course hope you like course hope you like it are you watching my course and the it are you watching my course and the it are you watching my course and the stream at the same time good yeah so I have only I have only one good yeah so I have only I have only one user user user here here here and he is not an admin and that is and he is not an admin and that is and he is not an admin and that is probably okay it doesn't have to be an admin but okay it doesn't have to be an admin but maybe that's why I'm also not seeing maybe that's why I'm also not seeing maybe that's why I'm also not seeing other users here other users here other users here but C can I then but C can I then but C can I then [Music] [Music] [Music] now let's see password where was this setting where I password where was this setting where I could um add in oo in oo I can't do I can't do I can't do that user information oh here two Factor that user information oh here two Factor that user information oh here two Factor authentication so use OTP app I'm I'm authentication so use OTP app I'm I'm authentication so use OTP app I'm I'm going to configure that enable

  51. enable Okay so this is now Okay so this is now Okay so this is now enabled so if enabled so if enabled so if I log I log I log out and I try to log in out and I try to log in out and I try to log in again it's asking me for a oops key provided is shorter than 256 oops key provided is shorter than 256 bits what ah here we go ah here we go cool that's pretty cool though that it cool that's pretty cool though that it cool that's pretty cool though that it is um that it supports oo out of the box is um that it supports oo out of the box is um that it supports oo out of the box like that let's that let's [Music] [Music] [Music] see opening up my chat again here on my see opening up my chat again here on my see opening up my chat again here on my phone wallabag now I can actually start um

  52. wallabag now I can actually start um adding articles so let's see what do I adding articles so let's see what do I adding articles so let's see what do I have in my second brain with brain with the consume tag 12 favorite problems how to spark tag 12 favorite problems how to spark genius genius genius with the power of open with the power of open with the power of open questions that's what I wanted to questions that's what I wanted to questions that's what I wanted to read it's about the Richard fman and read it's about the Richard fman and read it's about the Richard fman and about his 12 favorite problems so this is now added oh this is problems so this is now added oh this is cool though look at cool though look at cool though look at that it shows you that it shows you that it shows you the the time to the the time to the the time to read let's do another one oh yeah this is definitely one a one oh yeah this is definitely one a Argo CD versus flux Argo CD versus flux Argo CD versus flux CD article which I definitely want to save article which I definitely want to save for later nice so then there's also a later nice so then there's also a browser extension for this let's see browser extension for this let's see browser extension for this let's see get okay and then I just need to configure

  53. okay and then I just need to configure the login for the login for the login for it API clients management okay so I have it API clients management okay so I have it API clients management okay so I have to create a new client and yeah this is how I I actually chose and yeah this is how I I actually chose wab because of this because it has this wab because of this because it has this wab because of this because it has this browser browser browser extension so create a new client so I created the client and it's client so I created the client and it's then giving me a bunch of keys let's see the client ID I just enter the let's see the client ID I just enter the client ID like it client ID like it client ID like it says and then the client secrets works all right Donovan good luck with works all right Donovan good luck with the course I'm not going to be streaming the course I'm not going to be streaming the course I'm not going to be streaming for much longer for much longer for much longer either let me know what you

  54. archive by default when saving the page archive by default when saving the page yeah extension so extension so now when I'm in this article run run wagger enter Ops so then it's Ops so then it's there but so leer the a machine directing Israel's so leer the a machine directing Israel's bombing spree in Gaza it's not the most happy article to Gaza it's not the most happy article to save but it is in my to read list so save but it is in my to read list so save but it is in my to read list so let's run let's run let's run this war though this is um

  55. though this is um I'm super happy with I'm super happy with I'm super happy with this and the fact that it's running in this and the fact that it's running in this and the fact that it's running in my own my own my own cluster this is freaking cool so if I open it now here you just cool so if I open it now here you just have the article and it's completely have the article and it's completely have the article and it's completely saved for later I I will always have the saved for later I I will always have the saved for later I I will always have the images and images and images and everything available to me all of the everything available to me all of the everything available to me all of the text forever and it's just a really text forever and it's just a really text forever and it's just a really good read later app everything is saved good read later app everything is saved good read later app everything is saved it's going to be saved to my my Azure it's going to be saved to my my Azure it's going to be saved to my my Azure Dev my to my Azure storage account Dev my to my Azure storage account Dev my to my Azure storage account essentially this is cool cool so let's see if we can see a bit what so let's see if we can see a bit what so let's see if we can see a bit what how the database looks like let's see show show see let's connect to the wall bag database so there my tokens tags

  56. database so there my tokens tags annotations and is it entry I inspired you to redo your own entry I inspired you to redo your own lab wow it's uh it means a lot to me lab wow it's uh it means a lot to me lab wow it's uh it means a lot to me that I could be of inspiration to you uh Rio it really makes learning fun to to Rio it really makes learning fun to to try yeah to find these little try yeah to find these little try yeah to find these little applications and applications and applications and into like wallabag is like $10 a year into like wallabag is like $10 a year into like wallabag is like $10 a year right to have get the hosted version right to have get the hosted version right to have get the hosted version it's $10 a year it's it's not because I it's $10 a year it's it's not because I it's $10 a year it's it's not because I want to save the money but because I want to save the money but because I want to save the money but because I want want want to I want to do the challenge and I to I want to do the challenge and I to I want to do the challenge and I spent like four hours on this in total spent like four hours on this in total spent like four hours on this in total now but nobody has is running this on now but nobody has is running this on now but nobody has is running this on kubernetes or and has written blog posts kubernetes or and has written blog posts kubernetes or and has written blog posts about it yet so it's a little bit about it yet so it's a little bit about it yet so it's a little bit more difficult but maybe people can look more difficult but maybe people can look more difficult but maybe people can look at my home lab repo and then they'll at my home lab repo and then they'll at my home lab repo and then they'll have an easier time time uh uh uh select star select star select star [Music] [Music] [Music] from follow bag entry

  57. there's nothing in the entries database there's nothing in the entries database though so where where is it storing it it's not storing it in the container it it's not storing it in the container right that would suck select select star from wab bag bag entry tag there are a few entry tags stored in tag there are a few entry tags stored in the database select star from bab the database select star from bab the database select star from bab bag entry I mean it must store them in the entry I mean it must store them in the database see show stored articles from babag

  58. see show stored articles from babag database all right export all entries for a you all right export all entries for a you for a user I mean it's very easy to test this I mean it's very easy to test this actually actually actually because if it's stored if if it would be because if it's stored if if it would be because if it's stored if if it would be there's no persistent Vol storage there's no persistent Vol storage there's no persistent Vol storage persistent volumes here here there there the only here here there there the only presistent volume claims I have in this presistent volume claims I have in this presistent volume claims I have in this name space

  59. name space name space are for the database are for the database are for the database so if I now kill the wallabag Pod and my articles are gone then I know Pod and my articles are gone then I know it's not storing them in the database it's not storing them in the database it's not storing them in the database there's no actual storage in the other there's no actual storage in the other there's no actual storage in the other than the database than the database than the database volumes so I've restarted my volumes so I've restarted my volumes so I've restarted my pod and if I go into an incognito window code Yep they're here so it's stored in code Yep they're here so it's stored in a day base I I just wasn't able to look a day base I I just wasn't able to look a day base I I just wasn't able to look at the table and I didn't do it at the table and I didn't do it at the table and I didn't do it correctly it's all working this is cool correctly it's all working this is cool correctly it's all working this is cool super happy about this now I have the super happy about this now I have the super happy about this now I have the browser extension browser extension browser extension configured everything is set up configured everything is set up configured everything is set up nicely uh let's double check nicely uh let's double check nicely uh let's double check the browser extension here because it the browser extension here because it the browser extension here because it was going into archive and I don't want was going into archive and I don't want was going into archive and I don't want to do that where a setting I test open AI scaling to 7 and a half

  60. test open AI scaling to 7 and a half th000 nodes this is a pretty cool th000 nodes this is a pretty cool th000 nodes this is a pretty cool article that I still want to read for sure so adding sure so adding that that that wallabag wallabag wallabag kubernetes AI charm super happy with this because the charm super happy with this because the thing is they also have a mobile app so thing is they also have a mobile app so thing is they also have a mobile app so I'm I'm going to have this database all I'm I'm going to have this database all I'm I'm going to have this database all stored and it's now accessible from the stored and it's now accessible from the stored and it's now accessible from the internet and I can I can read this from internet and I can I can read this from internet and I can I can read this from the from the from my browser on my phone the from the from my browser on my phone the from the from my browser on my phone but they also have a mobile app and I but they also have a mobile app and I but they also have a mobile app and I think that will cache it locally as well think that will cache it locally as well think that will cache it locally as well and I can add this from my IOS app too and I can add this from my IOS app too and I can add this from my IOS app too there will be a share to wabag button in there will be a share to wabag button in there will be a share to wabag button in my applications and then I can from my applications and then I can from my applications and then I can from everywhere I can just save articles everywhere I can just save articles everywhere I can just save articles so this is so so this is so so this is so cool super happy I'm like I was doubting cool super happy I'm like I was doubting cool super happy I'm like I was doubting whether I should finish this application whether I should finish this application whether I should finish this application but it's definitely a good asset uh good but it's definitely a good asset uh good but it's definitely a good asset uh good addition to my to my um home lab

  61. there's always this time where I just there's always this time where I just set things up quick and set things up quick and set things up quick and dirty just going to see if there are dirty just going to see if there are dirty just going to see if there are some things that I can improve here some things that I can improve here some things that I can improve here especially in terms of security for example like the security context is at example like the security context is at least it's not allowing privilege least it's not allowing privilege least it's not allowing privilege escalation but I do want to run it as a different but I do want to run it as a different user see where am see where am I yeah it's running as user yeah Pro this probably is not going user yeah Pro this probably is not going to to to support running as a different

  62. user user nope I would have to Fork this and run nope I would have to Fork this and run nope I would have to Fork this and run it as a different wait like wait like I'm I'm Ting now maybe Rio if you're I'm I'm Ting now maybe Rio if you're I'm I'm Ting now maybe Rio if you're still there maybe you can confirm but if still there maybe you can confirm but if still there maybe you can confirm but if the docker file does not the docker file does not the docker file does not say say say user then you can't just do run as user user then you can't just do run as user user then you can't just do run as user in kubernetes in kubernetes in kubernetes right then it's just going to break given this Docker break given this Docker file can I just do file can I just do file can I just do run as user yes you can use run as user in user yes you can use run as user in kubernetes with a specific user kubernetes with a specific user kubernetes with a specific user ID okay check Etc okay check Etc password you can start the container as password you can start the container as password you can start the container as any of those any of those any of those users

  63. what we have the user what we have the user [Music] nobody so there's no nobody so there's no user called wallabag or anything there's user called wallabag or anything there's user called wallabag or anything there's post doesn't seem like they have added a a doesn't seem like they have added a a user specifically for this but now but now this who owns the data dear yeah good this who owns the data dear yeah good this who owns the data dear yeah good question um um nobody nobody owns it so then I should nobody nobody owns it so then I should nobody nobody owns it so then I should be able to run this as user be able to run this as user be able to run this as user nobody which is this one it does say sbin no login so would that it does say sbin no login so would that mean that I also lose shell access mean that I also lose shell access mean that I also lose shell access that's actually an in that's actually an that's actually an in that's actually an that's actually an in that's actually an interesting interesting interesting uh thing to

  64. try so this is try so this is the the the user user user [Music] [Music] [Music] group FS group security cont FS group keep forgetting security cont FS group keep forgetting that one kubernetes API FS group what is that one kubernetes API FS group what is that one about again the group ID that should own the again the group ID that should own the volumes mounted by the container okay volumes mounted by the container okay volumes mounted by the container okay sure sure sure okay so let's set this as the security context so this is going to be context so this is going to be interesting to see if I can then start a interesting to see if I can then start a interesting to see if I can then start a shell

  65. yep I've yep I've restarted just a second I was watching restarted just a second I was watching restarted just a second I was watching it oh we're getting an error entry point can't create at cphp error entry point can't create at cphp wabag any permission denied yeah so it's running the entry denied yeah so it's running the entry points sh there is the other container is still sh there is the other container is still running though no no Symphony user there's only the no no Symphony user there's only the postgress user and the entrypoint.sh that is user and the entrypoint.sh that is a that is owned by

  66. so this is so if the entry point like so this is so if the entry point like without schotting without schotting without schotting it can it then be run as like then it would have to be sched as like then it would have to be sched in the in the docker do CD wall do CD wall [Music] [Music] [Music] bag install yeah here Su it needs it it bag install yeah here Su it needs it it bag install yeah here Su it needs it it runs commands as super nobody drone said has nobody that's nobody drone said has nobody that's interesting wait it's running those S user nobody so wait it's running those S user nobody so then it's is it only because the entry

  67. then it's is it only because the entry then it's is it only because the entry point s h does not have the right file the NS in the provision function is file the NS in the provision function is rising to at C directory directory root makes sense since it's in at C yeah this directory is also owned by yeah this directory is also owned by root so it will have to run as root

  68. then if not I would have to Fork the then if not I would have to Fork the docker file file and make the docker run as a different and make the docker run as a different and make the docker run as a different user I mean it does do some CH owning in the I mean it does do some CH owning in the docker file here docker file here docker file here right or was it here so c o nobody nobody war war here so c o nobody nobody war war wallabag end so it's just because of that command end so it's just because of that command in the entry point s in the entry point s in the entry point s h that it uh it can't write to that h that it uh it can't write to that h that it uh it can't write to that directory could I'm just going to write a note for

  69. could I'm just going to write a note for myself n subst is writing to ety myself n subst is writing to ety myself n subst is writing to ety PHP and oh well I have my wallet bag running I oh well I have my wallet bag running I am really satisfied with am really satisfied with am really satisfied with it super happy I got it to work and it super happy I got it to work and it super happy I got it to work and um I think I'm going to end the stream um I think I'm going to end the stream um I think I'm going to end the stream here how many people did we have tuning here how many people did we have tuning here how many people did we have tuning in actually oh there are six people now in actually oh there are six people now in actually oh there are six people now I had 10 concurrent viewers that's I had 10 concurrent viewers that's I had 10 concurrent viewers that's nice thanks everybody for tuning in I'm nice thanks everybody for tuning in I'm nice thanks everybody for tuning in I'm going to have myself a cup of tea and going to have myself a cup of tea and going to have myself a cup of tea and save some articles and check out how save some articles and check out how save some articles and check out how this everything looks on my this everything looks on my this everything looks on my iPad I will make a short video about iPad I will make a short video about iPad I will make a short video about this in the in the future of just this in the in the future of just this in the in the future of just deploying it from A to deploying it from A to deploying it from A to Z uh because there's no no content Z uh because there's no no content Z uh because there's no no content around about that out there yet not as around about that out there yet not as around about that out there yet not as far as I could find so stay tuned for far as I could find so stay tuned for far as I could find so stay tuned for that thank you very much everybody and that thank you very much everybody and that thank you very much everybody and have a good Saturday evening bye-bye

  70. by bye Rio thanks for tuning in thank by bye Rio thanks for tuning in thank you for all of your help

Summary

The main theme is setting up and demonstrating a "dev pod" running on a Kubernetes cluster for developing and managing applications. Key subjects include Kubernetes, dev pods, Cube CTL commands, and managing configurations like private repos and potential secrets. The practical takeaway is the power and "next level" feeling of managing an entire Kubernetes cluster and its applications directly from within a small, self-contained development environment.

View original episode ↗