KodeKloud's 100 Days of DevOps is a free, hands-on challenge designed to help learners move from theory to practical DevOps skills. Over 100 days, participants complete real-world tasks involving tools like Linux, Git, Docker, Kubernetes, Jenkins, Ansible, and Terraform. Each task takes around 20–40 minutes and mimics scenarios you'd encounter in a real job, often set in a fictional company environment. The challenge encourages consistency, habit formation, and portfolio-building by having users document their progress publicly, often on GitHub. It's ideal for learners who want to build job-ready skills and gain confidence through structured, daily practice. No prior experience is required, making it accessible to both beginners and those looking to solidify their DevOps knowledge.

1/100 - Linux User Setup with Non-Interactive Shell
Task: Create a user named ‘ravi’ with a non-interactive shell on app Server 1 ssh tony@172.16.238.10sudo useradd -s /bin/nologin ravi Breakdown:useradd<- Command to create a new user-s /bin/nologin <- assigns a non-interative shell (prevents login)ravi <- the username we are creating Optional…
2/100 - Temporary User Setup with Expiry
Task: As part of the temporary assignment to the Nautilus project, a developer named jim requires access for a limited duration. To ensure smooth access management, a temporary user account with an expiry date is needed. ssh banner@172.16.238.12sudo useradd -e 2024-03-28 jimsudo chage -l
3/100 Secure Root SSH Access
Following security audits, the security team has rolled out new protocols including the restriction of direct root SSH login. Task: Your task is to disable SSH root login on all app server within the Stratos Datacenter. There are three app servers so the following commands need to run on each
4/100 Script Execution Permissions
In a bid to automate backup processes, the xFusionCorp Industries sysadmin team has developed a new bash script named xfusioncorp.sh. While the script has been distributed to all necessary servers, it lacks executable permissions on App Server 1 within the Stratos Datacenter. Task:Grant executable…
5/100 SElinux Installation and Configuration
Following a security audit, the xFusionCorp Industries security team has opted to enhance application and server security with SELinux. To initiate testing, the following requirements have been established for App server 1 in the Stratos Datacenter: Task:- Install the required SELinux packages:-…
6/100 Create a Cron Job
The Nautilus system admins team has prepared scripts to automate several day-to-day tasks. They want them to be deployed on all app servers in Stratos DC on a set schedule. Before that they need to test similar functionality with a sample cron job. Tasks:- Install cronie package on all
7/100 Linux SSH Authentication
The system admins team of xFusionCorp Industries has set up some scripts on jump host that run on regular intervals and perform operations on all app servers in Stratos Datacenter. To make these scripts work properly we need to make sure the thor user on jump host has password-less SSH
8/100 Install Ansible
During the weekly meeting, the Nautilus DevOps team discussed about the automation and configuration management solutions that they want to implement. While considering several options, the team has decided to go with Ansible for now due to its simple setup and minimal pre-requisites. The team wante…
9/100 MariaDB Troubleshooting
There is a critical issue going on with the Nautilus application in Stratos DC. The production team identified that the application is unable to connect to the database. After digging into the issue, the team found that the MariaDB service is down on the database server. Task: Fix the issue
10/100 Linux Bash Scripts
The production support team of xFusionCorp Industries is working on developing some bash scripts to automate different day to day tasks. One is to create a bash script for taking websites backups. They have a static website running on App Server 1 in Stratos Datacenter and they need to create
11/100 Install and Configure Tomcat Server
The Nautilus application development team recently finished the beta version of one of their Java-based applications, which they are planning to deploy on one of the app servers in Stratos DC. After an internal team meeting, they have decided to use the tomcat application server. Tasks:Install tom…
12/100 Linux Network Services
Our monitoring tool has reported an issue in Stratos Datacenter. One of our app servers has an issue, as its Apache service is not reachable on port 8084 (which is the Apache port). The service itself could be down, the firewall could be at fault, or something else could be
13/100 IPtables Installation and Config
We have one of our websites up and running on our Nautilus infrastructure in Stratos DC. Our security team has raised a concern that right now Apache’s port i.e 5002 is open for all since there is no firewall installed on these hosts. So we have decided to
14/100 Linux Process Troubleshooting
The production support team of xFusionCorp Industries has deployed some of the latest monitoring tools to keep an eye on every service, application, etc. running on the systems. One of the monitoring systems reported about Apache service unavailability on one of the app servers in Stratos DC. Task:…
15/100 Setup SSL for Nginx
The system admins team of xFusionCorp Industries needs to deploy a new application on App Server 1 in Stratos Datacenter. They have some pre-requites to get ready that server for application deployment. Prepare the server as per requirements shared below Tasks:1- Install and configure nginx on App…
16/100 Install and Configure Nginx as a Load Balancer
Day by day traffic is increasing on one of the websites managed by the Nautilus production support team. Therefore, the team has observed a degradation in website performance. Following discussions about this issue, the team has decided to deploy this application on a high availability stack i.e on…
17/100 Install and Configure PostgreSQL
The Nautilus application development team has shared that they are planning to deploy one newly developed application on Nautilus infra in Stratos DC. The application uses PostgreSQL database, so as a pre-requisite we need to set up PostgreSQL database server as per requirements shared below. Note,…
18/100 Configure LAMP Server
xFusionCorp Industries is planning to host a WordPress website on their infra in Stratos Datacenter. They have already done infrastructure configuration—for example, on the storage server they already have a shared directory /vaw/www/html that is mounted on each app host under /var/www/html director…
19/100 Install and Configure Web Application
xFusionCorp Industries is planning to host two static websites on their infra in Stratos Datacenter. The development of these websites is still in-progress, but we want to get the servers ready. Please perform the following steps to accomplish the task: 1. Install httpd package and dependencies on…
20/100 Configure Nginx & PHP-FPM Using Unix Sock
The Nautilus application development team is planning to launch a new PHP-based application, which they want to deploy on Nautilus infra in Stratos DC. The development team had a meeting with the production support team and they have shared some requirements regarding the infrastructure. Below are t…
21/100 Setup GIT Repository on Storage Server
The Nautilus development team has provided requirements to the DevOps team for a new application development project, specifically requesting the establishment of a Git repository. Follow the instructions below to create the Git repository on the Storage server in the Stratos DC: 1. Utilize yum to…
22/100 Clone a GIT Repo on Storage Server
The DevOps team established a new Git repository last week, which remains unused at present. However, the Nautilus application development team now requires a copy of this repository on the Storage Server in the Stratos DC. Follow the provided details to clone the repository: 1. The repository to b…
23/100 Fork a Git Repo
There is a Git server utilized by the Nautilus project teams. Recently, a new developer named Jon joined the team and needs to begin working on a project. To begin, he must fork an existing Git repository. Follow the steps below: 1. Click on the Gitea UI button located on
24/100 Git Create Branches
Nautilus developers are actively working on one of the project repositories, /usr/src/kodekloudrepos/media. Recently, they decided to implement some new features in the application, and they want to maintain those new changes in a separate branch. Below are the requirements that have been shared wit…
25/100 Git Merge Branches
The Nautilus application development team has been working on a project repository /opt/ecommerce.git. This repo is cloned at /usr/src/kodekloudrepos on storage server in Stratos DC. They recently shared the following requirements with DevOps team: Create a new branch datacenter in /usr/src/kodeklo…
26/100 Git Manage Branches
The xFusionCorp development team added updates to the project that is maintained under /opt/ecommerce.git repo and cloned under /usr/src/kodekloudrepos/ecommerce. Recently some changes were made on Git server that is hosted on Storage server in Stratos DC. The DevOps team added some new Git remotes…
27/100 Git Revert some changes
The Nautilus application development team was working on a git repository /usr/src/kodekloudrepos/games present on Storage server in Stratos DC. However, they reported an issue with the recent commits being pushed to this repo. They have asked the DevOps team to revert repo HEAD to last commit. Belo…
28/100 Git Cherry Pick
The Nautilus application development team has been working on a project repository /opt/news.git. This repo is cloned at /usr/src/kodekloudrepos on storage server in Stratos DC. They recently shared the following requirements with the DevOps team: There are two branches in this repository, master a…
29/100 Manage Git Pull Requests
Max want to push some new changes to one of the repositories but we don’t want people to push directly to master branch, since that would be the final version of the code. It should always only have content that has been reviewed and approved. We cannot just allow everyone
30/100 Git Hard Reset
The Nautilus application development team was working on a git repository /usr/src/kodekloudrepos/news present on Storage server in Stratos DC. This was just a test repository and one of the developers just pushed a couple of changes for testing, but now they want to clean this repository along
31/100 Git Stash
The Nautilus application development team was working on a git repository /usr/src/kodekloudrepos/blog present on Storage server in Stratos DC. One of the developers stashed some in-progress changes in this repository, but now they want to restore some of the stashed changes. Look for the stashed c…
32/100 Git Rebase
The Nautilus application development team has been working on a project repository /opt/media.git. This repo is cloned at /usr/src/kodekloudrepos on storage server in Stratos DC. They recently shared the following requirements with DevOps team: One of the developers is working on feature branch and…
33/100 Resolve Git Merge Conflicts
Sarah and Max were working on writting some stories which they have pushed to the repository. Max has recently added some new changes and is trying to push them to the repository but he is facing some issues. Below you can find more details: SSH into storage server using user
34/100 Git Hook
The Nautilus application development team was working on a git repository /opt/demo.git which is cloned under /usr/src/kodekloudrepos directory present on Storage server in Stratos DC. The team want to setup a hook on this repository, please find below more details: - Merge the feature branch into

Day 35 - Install Docker Packahes and Start Docker Service

Docker 1 - Install Docker & Start Docker Service
The Nautilus DevOps team aims to containerise various applications following a recent meeting with the application development team. They intend to conduct testing with the following steps: Task: Install docker-ce and docker compose packages on App Server 2. Login to the server via SSH and determi…

Day 36 - Deploy Nginx Container on Application Server

Docker 2 - Deploy Nginx Container on Application Server
The Nautilus DevOps team is conducting application deployment tests on selected application servers. They require a nginx container deployment on Application Server 2. Task: On Application Server 2 create a container named nginx_2 using the nginx image with the alpine tag. Ensure container is in a…

Day 37 - Copy File to Docker Container

Docker 4 - Copy File to Docker Container
The Nautilus DevOps team possesses confidential data on App Server 3 in the Stratos Datacenter. A container named ubuntu_latest is running on the same server.Copy an encrypted file /tmp/nautilus.txt.gpg from the docker host to the ubuntu_latest container located at /usr/src/. Ensure the file
38/100 Pull Docker Image
Nautilus project developers are planning to start testing on a new project. As per their meeting with the DevOps team, they want to test containerized environment application features. As per details shared with DevOps team, we need to accomplish the following task: a. Pull busybox:musl image on Ap…
39/100 Create a Docker Image From Container
One of the Nautilus developer was working to test new changes on a container. He wants to keep a backup of his changes to the container. A new request has been raised for the DevOps team to create a new image from this container. Below are more details about it:
40/100 Docker EXEC Operations
One of the Nautilus DevOps team members was working to configure services on a kkloud container that is running on App Server 1 in Stratos Datacenter. Due to some personal work he is on PTO for the rest of the week, but we need to finish his pending work ASAP.
41/100 Write a Docker File
As per recent requirements shared by the Nautilus application development team, they need custom images created for one of their projects. Several of the initial testing requirements are already been shared with DevOps team. Therefore, create a docker file /opt/docker/Dockerfile (please keep D capit…
42/100 Create a Docker Network
The Nautilus DevOps team needs to set up several docker environments for different applications. One of the team members has been assigned a ticket where he has been asked to create some docker networks to be used later. Complete the task based on the following ticket description: a. Create a
43/100 Docker Ports Mapping
The Nautilus DevOps team is planning to host an application on a nginx-based container. There are number of tickets already been created for similar tasks. One of the tickets has been assigned to set up a nginx container on Application Server 2 in Stratos Datacenter. Please perform the task as