• 0 Posts
  • 184 Comments
Joined 3 years ago
cake
Cake day: July 2nd, 2023

help-circle
  • I’m gonna speak generally and it doesn’t quite generalize. Sue me.

    Formal education in computer science is a waste, unless you want to be in academia. A formal education in computer science will either prepare you for higher education in Computer Sciences, or it will drill into you some best practices on how to be a good programmer. You can get the latter through brute force for free.

    That said, I have a formal CS education. It has helped my career 0. I’m 10 years into my career and am the 1 man cybersecurity team (plus my boss and my coworker who does most of our networking stuff unless he’s too busy, then that’s me as well) for a fleet of ~4000 devices across ~1500 folks.

    I have never once needed to explain to someone what von Neumann architecture is, and how it differs from Harvard. I have never once needed to explain two’s compliment or how to represent negative numbers in binary. Knowing what an xor swap is and why it’s used has only helped me solve a leetcode problem exactly ONE TIME. I have explained to many people what P vs NP is (no your suno track will not be the next cultural phenomenon) but nobody cares.

    The stuff that did serve me was like, making the card game of war in Java. Even the GUI. That’s a project I would have never done because who TF would. But it forces you to implement recursion (war within a war), it entails some good validation checking practices, etc. the truth is though, I did not need a college education for that project.

    At the end of the day, technical projects teach technical skills. Not PowerPoints based on textbooks.

    If you wanna learn how to harden your servers, I recommend freemium hands on learning platforms like tryhackme or hackthebox.

    Hack the box has a module on server hardening. It’s my go to for hardening servers. Happy to share the bullet points. It’s not too much. Basically just disable root auth, disable ssh except key-based, enable MFA (I use authelia) and you’re harder than 90% of boxes in the wild. Then just setup Fail2ban and you’re more or less golden for a home server.








  • I’m not out here to Stan for cloudflare. It’s just a totally valid tool for the job, there are valid reasons to use it, and as we agree, it’s not productive to tell a newcomer that their choice of meeting their needs is “sad”

    In fact, it’s an unwelcoming thing to say. If we want folks to stop using cloud services, we can’t shame the valid paths to get there.



  • I think you missed my point. You are mistaking your preferred architecture with moral superiority.

    Cloudflare is not “gatekeeping” someone from self-hosting. It is an optional tool. A person choosing to use it because they are new, budget-conscious, or not ready to expose services directly is not sad, fake self-hosting, or somehow philosophically impure.

    You can absolutely argue that Cloudflare has tradeoffs. That is fair. It adds dependency, abstraction, and vendor-specific knowledge. It is not magic security dust. No disagreement there.

    But telling a beginner “this is sad” because they are using a mainstream protective layer while learning is exactly the kind of gatekeeping that makes self-hosting communities hostile to newcomers.

    Also, “just use a VPN” is not a universal answer. VPNs are great for private admin access. They are not always the right solution when someone wants family members to access media or services without managing VPN clients, device support, troubleshooting, and onboarding. Different threat models, different usability needs.

    The helpful response would have been: “Cloudflare can be useful, but understand what it does and does not protect you from. Don’t expose admin panels. Use MFA, strong auth, least privilege, good backups, updates, reverse proxy rules, and keep anything sensitive behind a VPN.”

    That is useful advice.

    “This is sad” is just self-hosting purity signaling.

    I have tagged you as “selfhosting gatekeeper” for future reference.



  • foggy@lemmy.worldtoSelfhosted@lemmy.worldI finally bought a domain! Now what
    link
    fedilink
    English
    arrow-up
    5
    arrow-down
    5
    ·
    2 months ago

    That’s a gatekeeper-ass take. It isnt sad in any way shape or form. What an elitist proclamation.

    If you build your own infra internally and want a billion dollar industry to be your point of entry because you’re not confident in hardening a vps or don’t wanna pay for that on top of everything else (yet), so the fuck what?

    REEEE YOU MUST OWN ALL OF YOUR INFRA

    🙄

    Get bent. If cloudflare goes down again (for another whole handful of minutes, the horror!!) they are clearly ramping to make the jump to a VPS when the finances and/or cybersecurity chops feel ready and the needs arise. “Sad”? Please. Get off your high horse. You make the rest of self hosters look bad.



  • I’m sure the job postings will say, but many dev ops roles are looking for someone with senior experience. Like 8-10 years or the resume is ignored.

    Id say the way to beat this is look for tier iii roles for folks that don’t know what they need is dev ops. Explain the value of what you want to do as a sysadmin to bring value. Then just write dev ops on your resume when you wind up doing dev ops.



  • foggy@lemmy.worldtoSelfhosted@lemmy.worldHomelab for DevOps experience?
    link
    fedilink
    English
    arrow-up
    11
    ·
    edit-2
    3 months ago

    100% building a home lab and being able to talk about it openly, from memory, in your own words, from experience, is invaluable for interviews.

    I might update this. I might not. I have a lot to say but In out drinking.

    All I will say now is save this list. You’ll look back at it in 5 years and wonder what half of those things are.

    Okay a bit more from the bar:

    If you want dev sec ops, grafana, elk, build dashboards, get your agents setup in your fleet, get it all secure locally. That alone will impress any interviewer who knows anything.

    Dev ops specifically? Focus on building a local GitLab instance. Use grafana to monitor it. Run some app that has a busy db. Grafana dashboards on that. Oh my goodness, what a HOG you are GitLab! Tune it for your env. Purposely misconfigure something to watch, idk, the RAM keep growing because you didn’t setup redis or some shit.

    The sea is vast. You’re hungry. Employers will see that once you land interviews.

    If you want a ton of dev sec ops ideas, I am a good sounding board. Regular dev ops isn’t my daily grind so I know a bit less. What I do know is if you’re not ready to rebuild a multi node cluster some night after hours, you’re not quite a boss (doesn’t mean you’re not ready). So, emulate that nightmare.

    Back to drinking 🍻

    Edit: double check your *arr ideas bc afaik most of those were abandoned after a few major vulns were uncovered. That was months ago so that may be old hat.




  • foggy@lemmy.worldtoSelfhosted@lemmy.worldDocker Desktop on Linux?
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    4 months ago

    If it’s a Linux box, everything over 1023 just needs root.

    For Debian flavors,

    /proc/sys/net/ipv4/ip_local_port_range

    At least for those I use. Idk for rhel etc.

    I can check my boxes with system ctl:

    sysctl net.ipv4.ip_local_port_range

    And tested on a VM, this wide s your ephemeral range:

    sysctl -w net.ipv4.ip_local_port_range=“1024 65535”

    Manage persistence in /etc/sysctl.conf

    I’ll be honest here, I asked Claude for the windows equiv of that. I haven’t tested. Proceed with caution:

    To check:

    netsh int ipv4 show dynamicport tcp

    To expand ephemeral range:

    netsh int ipv4 set dynamicport tcp start=10000 num=55535

    Syntax makes enough sense to me, but I repeat I have not vetted this.

    HOWEVER,

    all moot. You have 65k ports PER CONNECTION, holmes. Sorry I’m drunk now my tones changes and typos = more :)

    So you at 10.0.0.1 connect to Google at 8.8.8.8 and cloudflare at 1.1.1.1, you can use 130k connections between the two. So this isn’t as useful as you may think you need it to be (idk what you’re doing lol, load balancer?)

    If you’re churning through tons of short connections, you can “run out” of ports even though you have plenty… they’re all just cooling down.

    net.ipv4.tcp_tw_reuse=1

    lets the kernel grab them sooner.

    Claude says Windows would be

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpTimedWaitDelay

    That’s a registry change. Proceed with extreme caution. Use a VM or throw away machine. I have absolutely not vetted the windows version here and registry edits are inherently dangerous. I usually yell at an AI that tells me to use regedit. Probably don’t do this unless the system is backed up and those backups are tested.

    Hope this helps your crazy load balancer or whatever :)


  • Welcome to foggy’s IP, ports, and containers lesson, take a shot of espresso, we’re going in!

    special IP addresses:

    127.0.0.1 - “This same machine.” Talking to yourself. Also written as localhost.

    192.168.x.x - private home network range. What your router hands out to your devices. Not routable on the internet. 10.x.x.x - another private range. Bigger, used by businesses and some routers. Same idea as 192.168.

    172.16.x.x to 172.31.x.x - the third private range. Docker likes this one for its internal container networks.

    0.0.0.0 - “all interfaces” or “any address.” When a service binds to this, it means “listen on every network this machine is connected to.” Also sometimes means “no specific address” depending on context.

    255.255.255.255 - brosdcast. “Everyone on this network.” Rarely something you’ll type, but you’ll see it.

    169.254.x.x - link-local. What your machine assigns itself when it wanted a DHCP address from the router but didn’t get one. If you see this, something’s wrong with your network.


    Port talk:

    Ports 0-1023: well-known ports. Reserved for standard services. On Linux you need root to bind to these. The ones you’ll actually see:

    • 22: SSH (remote terminal access)
    • 53: DNS
    • 80: HTTP (unencrypted web)
    • 443: HTTPS (encrypted web)
    • 25, 465, 587: email sending (SMTP and variants)
    • 143, 993: email reading (IMAP)

    Ports 1024-49151: registered ports. Assigned to specific apps by convention. A sampling:

    • 3306: MySQL/MariaDB
    • 5432: PostgreSQL
    • 6379: Redis
    • 8080: common “alternate HTTP” port, used when 80 is taken
    • 8096: Jellyfin
    • 32400: Plex
    • 27017: MongoDB

    Nothing enforces these: they’re just conventions. You could run Jellyfin on port 7777 if you wanted.

    Ports 49152–65535: ephemeral ports. A neato part:

    When you connect to a servers port 443, for example, your machine connects to the server’s port 443, but it also needs a port on your end for the server to send replies back to. Your OS grabs a random unused port from this high range, uses it for that one connection, and releases it when done. Thus, ‘ephemeral’


    Containers? Sure:

    A container is a program packaged in a bubble. It’s basically a VM without the machine part. Let’s say you wanna run Jellyfin AND Plex. Let’s say tomorrow there’s a brand new video file format and Jellyfin supports it and Plex doesn’t. Jellyfin needs to use some new version of ffmpeg that Plex cannot use. The solution? Containers.

    Each program is containered with what it needs to run happily. Nothing more. Your machine does the rest.