
Show HN: Linux sysadmin course, eight years on - snori74
Almost eight years ago I launched an online “Linux sysadmin course for newbies” here at HN.<p>It was a side-project that went well, but never generated enough money to allow me to fully commit to leaving the Day Job. After surviving the Big C, and getting made redundant I thought I might improve and relaunch it commercially – but my doctors are a pessimistic bunch, so it looked like I didn’t have the time.<p>Instead, I rejigged&#x2F;relaunched it via a Reddit forum this February as free and open - and have now gathered a team of helpers to ensure that it keeps going each month even after I can’t be involved any longer.<p>It’s a month-long course which restarts each month, so “Day 1” of September is this coming Monday.<p>It would be great if you could pass the word on to anyone you know who may be the target market of those who: “...aspire to get Linux-related jobs in industry - junior Linux sysadmin, devops-related work and similar”.<p>[0] <a href="http:&#x2F;&#x2F;www.linuxupskillchallenge.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.linuxupskillchallenge.org&#x2F;</a><p>[1] <a href="https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;linuxupskillchallenge&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;linuxupskillchallenge&#x2F;</a><p>[2] <a href="http:&#x2F;&#x2F;snori74.blogspot.com&#x2F;2020&#x2F;04&#x2F;health-status.html" rel="nofollow">http:&#x2F;&#x2F;snori74.blogspot.com&#x2F;2020&#x2F;04&#x2F;health-status.html</a>
======
user_agent
I'm speechless, @OP. It ceases to amaze me that people who aren't in a
position to generate value for others often generate more of thereof than a
regular, healthy individual. I'd like this world to be inhabited with more
people like you. I know myself how it's like to live with a deliberating
illness, so let me just say that I'll be praying for your recovery (and if
that's not possible at least less pain and a better "reinstatiation" prospects
in the future if a reincarnation is a thing).

It seems that I'm going to make it regarding my health challenges, so I
promise to make a good use of the Linux skills that your course is going to
help me to systematize. Thank you. I'd not get into tech without what have
happened to me. Being forced to be on a "lock-down" for 2,5 years I got myself
step by step into an amazing world of technology which with my skills getting
more polished made me feel I might be actually able to transcendent my body's
limitation. I can only hope that something similar could still happen to you
regardless of the discipline involved (I know that there's probably nothing
worse than not being able fully commit to one's life).

Take care, buddy.

~~~
snori74
Ha, ha, my original goal was to make a tidy pile of $$, but _also_ a desire to
teach and share. The feedback I get is certainly bouying me up as I go forward
toward that big unknown. Thanks for your thoughts.

------
Anon4Now
Hi Steve. I took your original course 8 years ago. I wasn't aiming for a sys
admin career - just wanted to be comfortable maintaining a server for my site.
It worked well for that.

I emailed you a few times, and you seemed like a genuinely nice guy. I just
wanted to chime in and say thanks and wish you the best of luck for both your
health and the legacy of this project.

~~~
snori74
Thanks, I did dig through my emails and got in touch with a few of The
Originals. You guys were willing to buy a "pig in a poke" \- I gave out no
outline or Table of Content (still don't!), and you paid Real Money to get
content into you email each day for a month. These youngsters are getting it
all for free! Thanks again. - Steve

------
whoknew1122
Good stuff. Thanks for all the effort you've put into it.

One suggestion: Make it more obvious that the courses are on GitHub.

I make a point to avoid reddit as much as possible, which means I don't know
how to interact with reddit's interface. When I tried to view the course via
reddit, I had a lot of trouble locating the actual lessons. They were out of
order, and I had to shift through other users' threats ('I missed day X!'
'Here's my journal on my progress...').

Honestly, had I not randomly clicked on the GitHub repo, I would've moved onto
something else. I'm glad I didn't, but yeah... pushing people onto reddit
limits your audience.

~~~
snori74
Thanks, and I appreciate your comment. Things do get a little messy, but
overall I've been happy with Reddit as a platform - once I figured out to pin
a big FAQ ("How This Works") posting. Noone seems to read the sidebar :-(

~~~
washadjeffmad
The sidebar might not be loading for everyone. Mine doesn't unless I browse
old.reddit.com on a computer, for some reason.

Reddit also cripples their mobile experience on web, so unless your audience
is existing redditors on computers or with the app, they're likely getting a
poorer or more inconsistent experience than you see.

Thanks for the great work, I hope to revisit it without the hurdles someday.

------
codetrotter
Clickable subreddit link using the old reddit interface that lets you see the
content on mobile even if you aren’t logged into reddit:

[https://old.reddit.com/r/linuxupskillchallenge](https://old.reddit.com/r/linuxupskillchallenge)

The other two links in clickable form as well:

[http://www.linuxupskillchallenge.org/](http://www.linuxupskillchallenge.org/)

[http://snori74.blogspot.com/2020/04/health-
status.html](http://snori74.blogspot.com/2020/04/health-status.html)

~~~
snori74
Thanks, that old interface really was much nicer...

------
jasoneckert
As the author of 14 college Linux administration textbooks since 2001, and
someone who has taught IT in the college space for 22 years, I must say that I
thoroughly enjoyed going through this resource!

I think it will benefit many who have basic Linux knowledge but need to refine
and further apply it, as well as students who are currently taking a course on
Linux, or a course that requires Linux knowledge (development, Cybersecurity,
devops, etc.).

~~~
snori74
Wow, thanks Jason!

------
arminiusreturns
Great work I've seen while doing my regular github foss browsing (by most
recently updated), and thank you for putting CC4 on it. I also want to say I
like the general format at least on github (not a reddit fan these days).

Constructive criticism: to me, this is a bit too barebones. There are quite a
few extremely similar ones out there with essentially the same content but not
as nice a format. You might consider doing the next tier course for those who
aren't completely green but are trying to get past that initial hurdle which
what many of them are trying to do.

As for what exactly, I would say an extensive focus on the entire systemd
ecosystem would be a great starting point for example. Go ahead and go into
nf/iptables, etc.

One other thing, I think a proper table of contents would be a good simple
addition.

~~~
snori74
Yes, I've commented in a number of places that this is essentially Part I of a
two part intro to the absolute minimum I'd like a newbie sysadmin to know.

It's likely that I'll put a tentative ToC for Part II into somewhere like
/r/linux of /r/sysadmin for comment and discussion.

------
alekq
Thank you very much for this! I am sorry that I did not know about it sooner.

Anyway the question for HN - is it too "late" for a person to consider career
change in 33? To clarify, I am not in IT business, my formal education (and
job) is in business administration, however with recent and important changes
in my private and work life, I am considering to bite the bullet. Initially, I
considered back-end development, but actually Linux sysadmin might be more
appropriate for me.

~~~
whoknew1122
I made the decision to change careers into IT when I was 32-ish. Did self-
study for a year, and then worked as a junior sysadmin at a SaaS company for a
year. Now I work at AWS.

It's definitely doable, and becoming more and more common (at least from the
candidates and initiatives I see at AWS).

~~~
Geeek
Do you mind briefly discussing how you made the switch? What courses did you
take etc? I am considering switching into IT and would love to hear how others
did it. I am currently enrolled in the Google IT course.

------
accidentalrebel
Seems very interesting. I checked out the site and I want to find out why
lessons need to be dished out weekly via Reddit. I'm curious. What is the
rationale/history behind this? And why Reddit?

When I learn a new subject I prefer having everything available so I could go
through it at my own pace. I understand people learn differently so I wonder
if this kind of approach works well for other people who learn differently
from me.

Wish this project the best.

~~~
snori74
Although I say repeatedly that each 'lesson' has about two hours work in it I
worry that were lessons available, students will just skim though the whole
lot "in one go".

I also believe that 'forcing' students to ssh in daily for a month gets a bit
of muscle-memory working, and proves that they have the required stickability.
(The initial paid version reported such things back to their employer!)

In fact, all lessons _are_ available via Github, but I try to avoid pointing
this out :-)

I really wanted a good discussion forum, and I'm not a great fan of much of
the classic forum software. While Reddit gets a good bit of stick for some of
it's subreddits, if you pick those you visit well the content can be very good
- and the upvoting etc works pretty well imho.

[Edit: added comment on stickability]

~~~
BossingAround
> I worry that were lessons available, students will just skim though the
> whole lot "in one go".

I think this is a common pitfall of a number of beginner courses. Personally,
I view it as kind of an arrogance of "I know better what you need than you
do".

As a user, I think you have no say in how I consume any content.

> The initial paid version reported such things back to their employer!

The employer has no right to know anything about me other than what I do
during my 8h of paid time. I can share whatever I want of course, but a
feature like this seems like it supports an unhealthy work relationship.

~~~
snori74
Well in a sense, I do "know better". There is a real benefit to setting up a
VPS "fully exposed to the Internet (another thing that some struggle with); A
real benefit to taking a day to investigate each day's lesson; A real benefit
to getting into the habit of ssh-ing daily.

But hey, having run this for a long while, I'm well aware people are coming
from all sorts of backgrounds, having all sorts of crazy things going on in
their lives etc - so however they do it is fine by me.

So, those that simply read it through - OK. Those that run it in a VM on their
laptop - OK.

Peace,

~~~
BossingAround
I disagree that you know better. Research shows doing something daily and
habitually is beneficial, but you shouldn't dictate that I need to do _your_
content daily.

For example, in the past, I have often gone through coursera courses that were
supposed to run for months within weeks, because I had a lot of time to
dedicate to the courses.

I made going finishing courses a habitual activity, but I personally have
designed it to suit my needs. In other words, I have tweaked the pace greatly.

You're consciously crippling your content with the idea that someone will
benefit from slow pace. If a user wants to refresh some things, fill some
knowledge gaps, or just take a look what the subject matter is about without
the need for deep learning, you're adding friction to the process (and they'll
likely not return the next day).

Now, don't get me wrong. If you get something out of it, e.g. Netflix
releasing an episode a week for whatever gains they get, that's fine. But, if
someone told me "read this book, you get 10 pages a day," I'd consider it a
waste of my time.

My 2c.

~~~
Cogito
I get your point, but this sounds like you didn't read the post you're
replying to.

At least the way I read their post, _snori74_ isn't presenting some absolute
position of authority, but rather is describing their experience from running
the course (and I assume working as a sysadmin) as to what is effective for
the students.

Putting forward what works best for most students doesn't exclude other ways
of consuming the content. A student motivated to consume the content more
quickly can easily discover the github themselves, or ask the question on
reddit.

Your preference for consuming the content all-at-once is a valid one, however
it's right for the content creator to set up the course in a way that
maximises the outcomes for student - especially when there is an easy fallback
to the all-at-once model.

I'll also add that having a 'class' of students doing the course with you is
something that a lot of people would appreciate, as they can discuss the
challenges and successes they see with people experiencing the same things at
the same time.

------
pbhjpbhj
I'm a regular user but having been around for a while (and done some web dev)
this course doesn't seem to go further (except in a few extensions) than my
current knowledge/experience. I've written bash scripts, configured
Apache/Nginx, setup a mail server with spam filtering, used git to a basic
level, all that kinda stuff ... what's the next step for a taste of what being
a sysadmin is like?

~~~
jon-wood
The next step is setting it up to randomly wake you up in the middle of the
night with obscure messages.

~~~
pbhjpbhj
What sort of obscure messages though? Are there gru? ;o)

------
rani08
Thank for building and making it available for everyone for free. Sorry about
your health. I hope you feel better.

------
atum47
well, that's awesome. sorry to hear about your condition though.

~~~
snori74
Well it is what it is. One of the "odd" things is not really knowing how long
you've got. Doctors hate to put a date on it, and clearly everyone's trying to
push things out - but it makes planning difficult :-)

For this course I now have a small team of helpers authorised to look after
the subreddit, the GitHub and the domain name. So hopefully it'll keep going
strong after I bow out.

I've also changed the licensing to CC by SA 4.0, so if you think this is a
good base you're welcome to develop it as you see fit, including commercially.

~~~
atum47
I know Linux enough to get by. a little bit more then that, perhaps. but I'll
make sure to take a look at the course. if see something I can help with, I'll
do it. pretty sure I will learn from it, for sure

besides that, keep a positive attitude. this thing here we call life is just a
journey. eventually it will end for all of us. just make sure to enjoy your
journey as much as you can doing the things you enjoy doing. sure it would be
nice if we could all get paid to do the things we like, but that's not always
the case. never fear though, making money is not and will never be a good
measure for success. glad to learn that your side project was to perpetuate
knowledge.

~~~
snori74
Thanks for your kind words.

------
pakwa
Is Linux admin suitable for women with disabilities? I have a friend who would
like this, but I hesitate to recommend it if she would be discriminated
against as a job candidate.

~~~
snori74
Yes! This is techy and certainly not everyone "cup of tea" \- most people
would run a mile. But everyone is learning to remotely control a powerful
server on the Internet ...which I think is cool and empowering.

We're covering the basic Linux skills to do that, and have a vague "junior
sysadmin role in big company" in mind.... But nothing stops you using these
same skills to create your own website, security scanning service, or get into
robotics.

While discrimination unfortunately exists in some places, just avoid those and
go forward. As for disablement, you just do what you can at the speed you can.
(You're reading this fine, and have no idea what a hassle it was for me to
write!)

------
lazyant
Thank you for your work. Can I suggest to add a ToC? (I know this is framed as
a daily challenge but it will help to see contents at a glance, even naming
the chapters).

------
snori74
Thanks for those that got the word out. Looks like we have a "class" of about
1,300 for this month, and its humming along nicely. (There are 5,630 sub'd,
but that includes all those from previous classes who've not unsub'd - its an
imprecise art!)

------
sbmthakur
What is _Big C_ in this context?

~~~
phaemon
Cancer

------
animex
Any reason why the course recommends AWS/DO vs. running something locally with
Docker?

~~~
snori74
The "How This Works" post covers this

------
istjohn
Thanks for putting this out there. As an amateur developer who has picked up
just enough linux skills to get by over the years, this looks like a great way
to fill in some of the gaps in my knowledge without getting too deep in the
weeds.

~~~
snori74
Yup. No way of knowing exactly, but I'd guess that quite a lot of the
"students" are in the same boat...

------
manjana
Great work! Was hoping though that you could view the course from the landing
page - have you considered moving the course to a simple static website where
it could be browsed like www.domain.com/day1/ or something similar?

~~~
snori74
[https://github.com/snori74/linuxupskillchallenge](https://github.com/snori74/linuxupskillchallenge)
?

------
auBavan
I don't normally comprehend most of what is posted on HN. They are too
advanced for me. Probably this one too. But, will try this for you, Sir. This
post is not going to let me sleep tonight.

------
yardie
This is great. And I wish this hadn’t happened to you. I just started a new
position overseeing our Linux based Oracle databases and this will be a great
asset. I’ll do my best to contribute where I can.

------
chefkoch
Hello,

just wanted to you to thank for this fellow myeloma warrior. Happy your asct
worked out and with loads of new treatments available hopefully we'll grow old
with this :)

------
anoviceuser
Thanks Steve for sharing this. I am sorry to hear about your condition. I am
sure as you survived Big C, you will survive the small C as well. Take care
and thanks.

------
Jimmc414
I wanted to point out that Linode has quality Linux hosting for as low as $5
per month. We've used them reliably for years.

------
qiaoliang89
Take care! My dad is going through the same shit.

------
ivvve
Very generous of you, thank you! You've helped a lot of people out with this
I'm sure. Wishing you the best.

------
silicon_wally
The links to linuxacademy.com are broken, since it was rebranded to
acloudguru.com

~~~
snori74
Thanks, fixed in Github now, all ready for Monday!

------
greenie_beans
I’ve lurked your subreddit for a while...might finally do it. Thank you!

------
shrthnd
this is great! thanks for all your hard work and for sharing, snori74!

------
sam_lynx
Definitely going to check this out. Thank you!

------
westurner
There are a number of resources that may be useful for your curriculum for
this project listed in "Is there a program like codeacademy but for learning
sysadmin?"
[https://news.ycombinator.com/item?id=19469266](https://news.ycombinator.com/item?id=19469266)
:

> [ _[http://www.opsschool.org/](http://www.opsschool.org/) ,
> [https://github.com/kahun/awesome-
> sysadmin/blob/master/README...](https://github.com/kahun/awesome-
> sysadmin/blob/master/README.md#configuration-management) ,
> [https://github.com/stack72/ops-books](https://github.com/stack72/ops-books)
> ,
> [https://landing.google.com/sre/books/](https://landing.google.com/sre/books/)
> , [https://response.pagerduty.com/](https://response.pagerduty.com/)
> (Incident Response training)]_

To that I'd add that K3D (based on K3S, which is now a CNCF project) runs
Kubernetes (k8s) in Docker containers.
[https://github.com/rancher/k3d](https://github.com/rancher/k3d)

For zero-downtime (HA: High availability) deployments, "Zero-Downtime
Deployments To a Docker Swarm Cluster" describes Rolling Updates and Blue-
Green Deployments; with illustrations:
[https://github.com/vfarcic/vfarcic.github.io/blob/master/doc...](https://github.com/vfarcic/vfarcic.github.io/blob/master/docker-
swarm/docker-swarm-updates.md#rolling-updates)

For git-push style deployment with more of a least privileges approach (which
also has more moving parts) you could take a look at:
[https://github.com/dokku/dokku-scheduler-
kubernetes#function...](https://github.com/dokku/dokku-scheduler-
kubernetes#functionality)

And also reference ansible molecule and _testinfra_ for writing sysadmin
_tests_ and the molecule vagrant driver for testing docker configurations.
[https://www.jeffgeerling.com/blog/2018/testing-your-
ansible-...](https://www.jeffgeerling.com/blog/2018/testing-your-ansible-
roles-molecule)

[https://molecule.readthedocs.io/en/latest/](https://molecule.readthedocs.io/en/latest/)

[https://testinfra.readthedocs.io/en/latest/](https://testinfra.readthedocs.io/en/latest/)
:

> _With Testinfra you can write unit tests in Python to test actual state of
> your servers configured by management tools like Salt, Ansible, Puppet, Chef
> and so on._

> _Testinfra aims to be a Serverspec equivalent in python and is written as a
> plugin to the powerful Pytest test engine._

I wasn't able to find a syllabus or a list of all of the daily posts? Are you
focusing on DevOps and/or DevSecOps skills?

EDIT: The lessons are Markdown files in a Git repo:
[https://github.com/snori74/linuxupskillchallenge](https://github.com/snori74/linuxupskillchallenge)

Links to each lesson, the title and/or subjects of the lesson, and the
associated reddit posts might be useful in a Table of Contents in the
README.md.

~~~
snori74
Thanks, but most of that would be way over the top for my "newbies".

However, You must be the third or fourth person today to suggest that I add a
TOC - so that is something I think I'll need to look at!

~~~
westurner
Maybe most useful as resources for further study.

Looks like Day 20 covers shell scripting. A few things worth mentioning:

You can write tests for shell scripts and write TAP (Test Anything Protocol)
-formatted output:
[https://testanything.org/producers.html#shell](https://testanything.org/producers.html#shell)

Quoting in shell scripts is something to be really careful about:

> _This and this do different things:_
    
    
      # prints a newline
      echo $(echo "-e a\nb")
    
      # prints "-e a\nb"
      echo "$(echo "-e a\nb")"
    

Shellcheck can identify some of those types of (security) bugs/errors/vulns in
shell scripts: [https://www.shellcheck.net/](https://www.shellcheck.net/)

LearnXinYminutes has a good bash reference:
[https://learnxinyminutes.com/docs/bash/](https://learnxinyminutes.com/docs/bash/)

And an okay Ansible reference, which (like Ops School) we should contribute
to:
[https://learnxinyminutes.com/docs/ansible/](https://learnxinyminutes.com/docs/ansible/)

Why do so many pros avoid maintaining shell scripts and writing one-off
commands that they'll never remember to run again later?

...

It may be helpful to format these as Jupyter notebooks with input and output
cells.

\- Ctrl-Shift-Minus splits a cell at the cursor

\- M and Y toggle a cell between Markdown and code

If you don't want to prefix every code cell line with a '!' so that the
ipykernel Jupyter python kernel (the default kernel) executes the line with
$SHELL, you can instead install and select bash_kernel; though users
attempting to run the notebooks interactively would then need to also have
bash_kernel installed:
[https://github.com/takluyver/bash_kernel](https://github.com/takluyver/bash_kernel)

You can save a notebook .ipynb to any of a number of Markdown and non-Markdown
formats
[https://jupytext.readthedocs.io/en/latest/formats.html#markd...](https://jupytext.readthedocs.io/en/latest/formats.html#markdown-
formats) ; unfortunately jupytext only auto-saves to md without output cell
content for now:
[https://github.com/mwouts/jupytext/issues/220](https://github.com/mwouts/jupytext/issues/220)

You can make reveal.js slides (that do include outputs) from a notebook:
[https://gist.github.com/mwouts/04a6dfa571bda5cc59fa1429d1309...](https://gist.github.com/mwouts/04a6dfa571bda5cc59fa1429d130998f)

With nbconvert, you can manually save an .ipynb Jupyter notebook as Markdown
which includes the cell outputs w/ File > "Download as / Export Notebook as" >
"Export notebook to Markdown" or with the CLI:
[https://nbconvert.readthedocs.io/en/latest/usage.html#conver...](https://nbconvert.readthedocs.io/en/latest/usage.html#convert-
markdown)

    
    
        jupyter convert --to markdown
        jupyter convert --help
    

With Jupyter Book, you can build an [interactive] book as HTML and/or PDF from
multiple Jupyter notebooks as e.g. Markdown documents
[https://jupyterbook.org/intro.html](https://jupyterbook.org/intro.html) :

    
    
        jupyter-book build mybook/
    

...

From
[https://westurner.github.io/tools/#bash](https://westurner.github.io/tools/#bash)
:

    
    
        type bash
        bash --help
        help help
        help type
        apropos bash
        info bash
        man bash
        
        man man
        info info
    

From
[https://news.ycombinator.com/item?id=22980353](https://news.ycombinator.com/item?id=22980353)
; this is how dotfiles work:

    
    
        info bash -n "Bash Startup Files"
      

> _[https://www.gnu.org/software/bash/manual/html_node/Bash-
> Star...](https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-
> Files.html) _

...

Re: dotfiles, losing commands that should've been logged to HISTFILE when
running multiple bash sessions and why I wrote usrlog.sh:
[https://westurner.github.io/hnlog/#comment-20671184](https://westurner.github.io/hnlog/#comment-20671184)
(Ctrl-F for: "dotfiles", "usrlog.sh", "inputrc")

[https://dotfiles.github.io/](https://dotfiles.github.io/)

[https://github.com/webpro/awesome-
dotfiles](https://github.com/webpro/awesome-dotfiles)

...

awesome-sysadmin > resources: [https://github.com/kahun/awesome-
sysadmin#resources](https://github.com/kahun/awesome-sysadmin#resources)

------
exabrial
Thank you, incredible.

------
liveoneggs
tell those doctors to learn all of the options for tar or gtfo

------
Icedcool
That’s awesome dude!

------
luzer7
Thanks for this.

------
calimac
thank you!

