fossunited / monschool-website

Repository of all courses on mon.school
24 stars 10 forks source link

New Course: Self Hosting 101 #24

Open mr-karan opened 2 years ago

mr-karan commented 2 years ago

I'm interested to create this course.

About the course

Title

Self Hosting 101

Subtitle

Learn how to self host and manage applications on servers.

Description

This course is aimed towards beginners who are new to self hosting journey. The course starts with fundamentals like setting up a server, installing apps, configuring the machine, installing dependencies, setting up web server and goes further in explaining Day 2 tasks like setting up background services, debugging breaking applications using logs etc.

Course Outline

Mon School Self Hosting 101

Course Outcomes

At the end of this course, you should be able to:

Week 0

Objective: Some reading material will be shared to ignite interest in Self Hosting.

Week 1

Objective: Setup and configure a VPS.

Week 2

Objective: Deploy a static website with HTML, CSS, JS

Week 3

Objective: Deploy a Python application

Week 4

Objective: Understanding and setting up system services

Week 5

Objective: Logs, Debugging and Fixing

Week 6

Objective: Recap + Further Reads

Optional: Based on the interest in the course we can add a week on Hosting apps using Docker/Containers

anantshri commented 2 years ago

couple of things I would suggest

  1. ssh login via key only. AWS makes it by default but DO and others might give you root password or password based login.
  2. fail2ban setup to protect against bruteforce.
  3. logrotation in case access logs are kept.
  4. unattended upgrades
anandology commented 2 years ago

couple of things I would suggest

1. ssh login via key only. AWS makes it by default but DO and others might give you root password or password based login.

That is a good point. DO supports it, but you need to explicitly select a key when creating a droplet. I think it may be a good idea to explain ssh-keys before creating the droplet and suggest the users to create droplets with ssh-key selected, or does it make the flow complicated? @mr-karan?

2. fail2ban setup to protect against bruteforce.

3. logrotation in case access logs are kept.

4. unattended upgrades

fail2ban looks interesting. I think all these are good to include, may be in the last week? @mr-karan?

mr-karan commented 2 years ago
  1. Sure, we can do that. It seems a better idea, than using the root password and then adding the SSH key manually after first login (which I'd in mind).

2-4: Yeah these are nice suggestions for Week 6. fail2ban however is a bit complicated and not trivial to setup (also it has a lot of false positives in my experience). We can decide on that, rest all LGTM 👍

NagariaHussain commented 2 years ago

Just awesome! Looking forward to the course.

mr-karan commented 2 years ago

Monschool-Selfhosting

@anandology For the logo of the course, I had an idea that would represent a box of "goodies" (aka skillset) that you get once you learn self hosting. The logo basically shows that you learn how to manage/operate a Cloud server based on Linux once you do the course.

But yeah, I know this didn't come off quite as well I'd in mind. Please feel free to either edit this or make a completely new logo :see_no_evil:

mr-karan commented 2 years ago

https://deploy-preview-34--monschool.netlify.app/self-hosting-101/week1/overview/

^ Week 0, Week 1 are almost in ready shape.

cc @anandology You can review it and share feedback during the weekly sync up call.

anandology commented 2 years ago

cc @anandology You can review it and share feedback during the weekly sync up call.

Sure, I'll be review it before our call.