HTTPS setup done… but Nginx wouldn’t start. Day 15 of #100DaysOfDevOps ✅ Today’s task was to configure Nginx with SSL/TLS using pre-provided certificates. The setup looked straightforward place the certs in the right directories and configure the server to listen on port 443 with HTTP/2. But Nginx kept failing to start. The issue? A small syntax mistake in the config file. Running nginx -t quickly pointed out the error and saved a lot of debugging time. Key takeaway: A missing closing } in the http block causes Nginx to fail at startup with a configuration error. Always run nginx -t first it catches syntax errors before they take down the service. Day 15 done. 85 to go 🚀 GitHub 👇 https://lnkd.in/dk8Frue7 #DevOps #Linux #Nginx #SSL #100DaysOfDevOps #LearningInPublic #SRE #DevOpsEngineer
Nginx Setup Fails Due to Syntax Error
More Relevant Posts
-
Load balancer was working… but still showing Nginx error page. Day 16 of #100DaysOfDevOps ✅ Today’s task was to configure Nginx as a load balancer to distribute traffic across three app servers. Everything looked correct Nginx was running, config was applied but requests were not reaching the backend. The issue? The upstream block was pointing to the wrong port. Apache on the backend servers was running on port 6400, but Nginx was forwarding traffic to the default port 80. Once the correct port was configured, everything worked as expected. Key takeaway: In load balancing, even a small mismatch between frontend and backend configuration can break the entire flow. Day 16 complete. 84 to go 🚀 GitHub 👇 https://lnkd.in/dk8Frue7 #DevOps #Linux #Nginx #LoadBalancing #Networking #100DaysOfDevOps #LearningInPublic #SRE #DevOpsEngineer
To view or add a comment, sign in
-
Apache was down on one server… while working perfectly on the others. Day 14 of #100DaysOfDevOps ✅ The task was to identify the faulty server, fix Apache, and ensure it was running on port 6300 across all app servers. From the jump host, I tested connectivity and quickly found that one server was refusing connections while the others were fine. The issue turned out to be a port conflict — another process was already using port 6300, preventing Apache from starting. Once the conflicting process was stopped, Apache started successfully and became accessible. Key takeaway: When a service fails to start, always check if the required port is already in use. Tools like ss and simple connectivity tests can help isolate the issue quickly. Day 14 complete. 86 to go 🚀 GitHub 👇 https://lnkd.in/dk8Frue7 #DevOps #Linux #Troubleshooting #Networking #Apache #100DaysOfDevOps #LearningInPublic #SRE #DevOpsEngineer
To view or add a comment, sign in
-
After years of working with DevOps tools, I realized that we use a core set of commands almost every single day, yet they’re rarely documented in one place. So I’ve started curating everything i.e Git, Terraform, Kubernetes, Linux and more into simple, practical cheat sheets on Hashnode.....with many more to come 🙌 . You can check it out here👇 https://lnkd.in/dWfnY9q2 . . Feel free to explore anytime and share your feedback! . #DevOps #Git #Terraform #Hashnode #LearningInPublic #TechBlog
To view or add a comment, sign in
-
-
Day 8 of my DevOps roadmap — and today's topic hit different 🌐 [Writing this at 2:43 PM IST, Apr 21 2026] Networking Commands on Linux Here's what I built and learned today (as of 2:43 PM IST): → Learned ss -tulnp — shows every open port and which process owns it → Used ping -c 4 to test connectivity (0% packet loss, 1.2ms latency ✓) → Curled my own site korelium.org and saw the raw HTML come back in terminal → Built a network_audit.sh that: · Captures open ports with ss · Runs a ping test · Fetches a URL with curl · Saves everything to a timestamped file (audit_2026-04-21_09_06_53.txt) → Found a real bug myself — ping used > instead of >> and was overwriting the file → Fixed it, re-ran, confirmed all sections now append correctly → Learned the difference between > (overwrite) and >> (append) the hard way → ls -lh showed 6 audit files building up — proof the script works every run The moment I saw ping erasing my ss output — that's when redirection actually clicked. Not just running commands. Understanding what they do to your files. #Linux #DevOps #BashScripting #Networking #LearningInPublic #100DaysOfDevOps
To view or add a comment, sign in
-
-
🚀 Kubernetes Monitoring with CLI – Back to the Basics Today I spent time working directly from the command line to monitor and manage my Kubernetes workloads — and it reminded me of something important: 👉 If you want to master Kubernetes, you must be comfortable with Linux and the CLI. Here are a few commands I used while managing deployments: -kubectl rollout undo deployment web-app → Roll back to a previous version -kubectl rollout history deployment web-app → View deployment revisions -kubectl delete deployment web-app → Clean up resources 💡 These commands are not just for exams like CKAD/KCNA — they are real-world DevOps skills used in production environments. Working from the CLI gives you: ✔️ Better control over your cluster ✔️ Faster troubleshooting ✔️ Deeper understanding of how Kubernetes actually works 🔥 My advice: -Don’t rely only on dashboards and GUIs. Learn the terminal. Learn Linux. That’s where real power is. -I’m continuing to build and document real-world Kubernetes projects — next step: scaling microservices and adding ingress. Let’s grow together 💻☁️ #Kubernetes #DevOps #CloudComputing #Linux #CKAD #KCNA #AWS #LearningInPublic
To view or add a comment, sign in
-
-
🚀 Troubleshooting ImagePullBackOff in EKS A DevOps Lesson Learned while building an end-to-end DevOps CI/CD project, I encountered a frustrating error: ImagePullBackOff on Kubernetes despite the image existing locally and on Docker Hub. The Issue: ❌ My EKS cluster was running x86_64 (AMD64) nodes, but I was building Docker images on my ARM64 Mac. Kubernetes couldn't find a matching platform in the image manifest. The Solution: ✅ Build images for the correct architecture: docker buildx build --platform linux/amd64 -t username/image:tag --push . Or build for multiple platforms for maximum portability: docker buildx build --platform linux/amd64,linux/arm64 -t username/image:tag --push . Key Takeaway: Always verify your cluster node architecture and ensure your container images match. A simple kubectl get nodes can save hours of debugging! Pro Tip: Use docker buildx for multi-platform builds in production pipelines. #DevOps #Kubernetes #EKS #Docker #CICD #TroubleShooting #CloudNative
To view or add a comment, sign in
-
🐳 Docker Essential Training — Engine v29 Hands-on Lab I just published my first guide from the Essential Training Series — a practical, hands-on Docker lab that I personally tested command by command before sharing. 📋 What's inside: • 8 exercises covering the core Docker fundamentals • Images, containers, networking, volumes • Multi-stage Dockerfiles & Docker Compose • Every issue I faced during testing is already fixed 🔧 Tested on: • Docker Engine v29 (latest — March 2026) • WSL2 on Windows — HP i3, 20GB RAM • Real commands, real errors, real fixes This is not a copy-paste from the docs. Every exercise was validated hands-on before being shared. 📎 PDF attached — free to download and use. 📁 Exercise files on GitHub: https://lnkd.in/dBpAXt7h 🚀 More coming soon: ✅ Docker (this one) ✅ Docker Compose ✅ K3s ⏳ Helm ⏳ GitHub Actions CI/CD ⏳ ArgoCD (GitOps) ⏳ Prometheus & Grafana ⏳ Loki + OpenTelemetry If this is useful — share it with someone learning DevOps 🙌 If it is not — drop a comment or send me your feedback. I am still improving it. #Docker #DevOps #Kubernetes #CloudNative #Linux #LearningInPublic #OpenSource
To view or add a comment, sign in
-
From "Just Install Helm CLI" to Understanding Helm in Production Installed Helm. Homarr Chart deployed. Something was wrong but I just didn't know what yet. That's the trap. Helm looks simple until production shows you it isn't. Coming from Flux + Kustomize, I kept reaching for explicit manifests that weren't there. Then I stopped using Helm CLI as my primary interface and switched to HelmRepository + HelmRelease and suddenly it clicked to me. Helm isn't a YAML renderer. It's a parameterized abstraction layer over Kubernetes primitives. Kustomize gives you static manifests you can reason about line by line. Helm gives you configurable, reusable code driven by values.yaml. Both valid. Very different approaches. In GitOps, declarative HelmRelease resources should be the default, not helm install from a terminal. I have in place a tool: - that stays there forever - can be used for deployment of other apps - speed up the deploymeynt process The achievement is that I have now accessbile my second website Homarr. :-) Sometimes moving fast means stopping, reading the docs and using the tool the way it was designed. #Kubernetes #Helm #Homarr #DevOps #Linux #GitOps #Yaml
To view or add a comment, sign in
-
-
☝️Headline: 🚀 21 Days Down, 79 to Go! #100DaysOfDevOps Challenge Body: Today marked a major shift in my DevOps journey—Git! 🛤️ As part of the KodeKloud 100 Days of DevOps challenge, Day 21 was all about setting up a Bare Git Repository on a storage server. Key Takeaways: ✅ SSH into storage servers to set up version control infrastructure. ✅ Understanding that --bare repositories are the backbone of central, collaborative workflows. ✅ Configuring remote repositories for team projects. It's amazing how much I've learned about Git and Linux in just three weeks. #DevOps #Git #KodeKloud #LearningJourney #VersionControl #100DaysOfDevOps
To view or add a comment, sign in
-
#kubectl, that's all I've ever known when it comes to accessing and working with Kubernetes. Until now. I'm currently preparing for my CKAD exam and the study has been intense. I picked up a course from Techworld with Nana and there's a lot to digest — but some concepts have been genuinely eye-opening. One that stood out is #Alias. An alias is a shortcut that removes the need to type `kubectl` every single time you want to work with Kubernetes resources. You simply create a variable that stands in for it. For example, if you're tired of typing `kubectl` before every command, just run: alias k=kubectl Now instead of writing out the full command, you can do: k create deployment k get pods k get namespace The `k` essentially becomes a placeholder for `kubectl` — same function, less typing. And it doesn't have to be `k`. That's just my preference. You can use anything ,I, kube, or if you're feeling dramatic, your full name 😂. Anything works. Small tweak, real impact on your workflow. **#CKAD #Kubernetes #DevOps #CloudNative #TechLearning #K8s #Linux #ShellTips #LearningInPublic #CareerInTech** ---
To view or add a comment, sign in
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development