From 69f350ef855f94819f981171d16abaaa02c3d10a Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Tue, 8 Oct 2024 22:18:36 +0100 Subject: [PATCH] Add new projects for devops roadmap --- src/data/projects/basic-dns.md | 44 +++++++++++++++ src/data/projects/basic-dockerfile.md | 2 +- src/data/projects/ssh-remote-server-setup.md | 56 ++++++++++++++++++++ src/data/projects/static-site-server.md | 45 ++++++++++++++++ src/styles/global.css | 4 ++ 5 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 src/data/projects/basic-dns.md create mode 100644 src/data/projects/ssh-remote-server-setup.md create mode 100644 src/data/projects/static-site-server.md diff --git a/src/data/projects/basic-dns.md b/src/data/projects/basic-dns.md new file mode 100644 index 000000000..8993692d1 --- /dev/null +++ b/src/data/projects/basic-dns.md @@ -0,0 +1,44 @@ +--- +title: 'Basic DNS Setup' +description: 'Purchase a custom domain and set up basic DNS records.' +isNew: false +sort: 6 +difficulty: 'beginner' +nature: 'DNS' +skills: + - 'devops' + - 'dns' +seo: + title: 'Basic DNS Setup' + description: 'Purchase a custom domain and set up basic DNS records.' + keywords: + - 'basic dns' + - 'dns' + - 'domain' +roadmapIds: + - 'devops' +--- + +The goal of this project is to learn and practice the basics of DNS. You are required to purchase a custom domain name and setup the basic DNS records. + +## Requirements + +You are required to have a custom domain name to complete this project. You can use the domain name you already own or purchase a new domain name from any provider such as Cloudflare, Namecheap, Godaddy etc. Once you have a domain name, you can proceed to the next step. + +### Task #1 - Custom Domain for GitHub Pages + +If you have not completed the [GitHub pages project](/projects/github-actions-deployment-workflow), go ahead and complete that project first. Once you have a github pages site setup, set up your custom domain name to point to your github pages site. + +### Task #2 - Custom Domain for DigitalOcean Droplet + +If you have not completed the [Static Site Server project](/projects/static-site-server), go ahead and complete that project first so you have a basic static site to serve. Once you have a digital ocean droplet setup serving a static site, set up your DNS records to point to your droplet. + +
+ +### Submission Guidelines + +Output for this project is the steps you took to setup the custom domain name for both GitHub Pages and a DigitalOcean Droplet. You can write a simple markdown file in tutorial format, add screenshots and any other relevant information to help you remember the steps. + +
+ +Once you have completed the project, you should have a basic understanding of how to setup a custom domain name for both GitHub Pages and a DigitalOcean Droplet. diff --git a/src/data/projects/basic-dockerfile.md b/src/data/projects/basic-dockerfile.md index d4d560bee..1a74dd705 100644 --- a/src/data/projects/basic-dockerfile.md +++ b/src/data/projects/basic-dockerfile.md @@ -2,7 +2,7 @@ title: 'Basic Dockerfile' description: 'Build a basic Dockerfile to create a Docker image.' isNew: false -sort: 4 +sort: 7 difficulty: 'beginner' nature: 'CLI' skills: diff --git a/src/data/projects/ssh-remote-server-setup.md b/src/data/projects/ssh-remote-server-setup.md new file mode 100644 index 000000000..287e2b516 --- /dev/null +++ b/src/data/projects/ssh-remote-server-setup.md @@ -0,0 +1,56 @@ +--- +title: 'SSH Remote Server Setup' +description: 'Setup a basic remote linux server and configure it to allow SSH.' +isNew: false +sort: 4 +difficulty: 'beginner' +nature: 'SSH' +skills: + - 'devops' + - 'linux' +seo: + title: 'SSH Remote Server Setup' + description: 'Setup a remote linux server and configure it to allow SSH.' + keywords: + - 'ssh' + - 'linux' + - 'server' +roadmapIds: + - 'devops' +--- + +The goal of this project is to learn and practice the basics of Linux. You are required to setup a remote linux server and configure it to allow SSH connections. + +## Requirements + +You are required to setup a remote linux server and configure it to allow SSH connections. + +- Register and setup a remote linux server on any provider e.g. a simple droplet on [DigitalOcean](https://m.do.co/c/b29aa8845df8) which gives you $200 in free credits with the link. Alternatively, use AWS or any other provider. +- Create **two new SSH key pairs** and add them to your server. +- You should be able to connect to your server using both SSH keys. + +You should be able to use the following command to connect to your server using both SSH keys. + +```bash +ssh -i user@server-ip +``` + +Also, look into setting up the configuration in `~/.ssh/config` to allow you to connect to your server using the following command. + +```bash +ssh +``` + +The only outcome of this project is that you should be able to SSH into your server using both SSH keys. Future projects will cover other aspects of server setup and configuration. + +Stretch goal: install and configure `fail2ban` to prevent brute force attacks. + +
+ +## Important Note for Solution Submission + +**Do not push your private key to any public repository.** The solution to this project should just contain one `README.md` file with the steps you took to complete the project. + +
+ +After completing this project, you will have a basic understanding of how to setup a remote linux server and configure it to allow SSH connections. Future projects will cover other aspects of server setup. \ No newline at end of file diff --git a/src/data/projects/static-site-server.md b/src/data/projects/static-site-server.md new file mode 100644 index 000000000..6a93bbb5d --- /dev/null +++ b/src/data/projects/static-site-server.md @@ -0,0 +1,45 @@ +--- +title: 'Static Site Server' +description: 'Setup a basic linux server and configure it to serve a static site.' +isNew: false +sort: 5 +difficulty: 'beginner' +nature: 'CLI' +skills: + - 'nginx' + - 'SSH' + - 'linux' + - 'devops' + - 'rsync' +seo: + title: 'Static Site Server' + description: 'Setup a basic linux server and configure it to serve a static site.' + keywords: + - 'static site server' + - 'nginx' + - 'SSH' + - 'linux' + - 'devops' + - 'rsync' +roadmapIds: + - 'devops' +--- + +The goal of this project is to help you understand the basics of setting up a web server using a basic static site served using Nginx. You will also learn how to use `rsync` to deploy your changes to the server. + +## Requirements + +Here are the requirements for this project: + +- Register and setup a remote linux server on any provider e.g. a simple droplet on [DigitalOcean](https://m.do.co/c/b29aa8845df8) which gives you $200 in free credits with the link. Alternatively, use AWS or any other provider. +- Make sure that you can connect to your server using SSH. +- Install and configure `nginx` to serve a static site. +- Create a simple webpage with basic HTML, CSS and image files. +- Use `rsync` to update a remote server with a local static site. +- If you have a domain name, point it to your server and serve your static site from there. Alternatively, set up your nginx server to serve the static site from the server's IP address. + +You can write a script `deploy.sh` which when you run will use `rsync` to sync your static site to the server. + +
+ +Once you have completed the project, you should have a basic understanding of how to setup a web server using a basic static site served using Nginx. You should also have a basic understanding of how to use `rsync` to deploy your changes to the server. \ No newline at end of file diff --git a/src/styles/global.css b/src/styles/global.css index c69418336..f410f3380 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -34,6 +34,10 @@ blockquote p:before { display: none; } +blockquote p { + font-style: normal; +} + .prose ul li > code, .prose ol li > code, p code,