Make Money Creating SadServers Scenarios
v1.3 — 2024-02-19
Objective
The purpose is to create quality SadServers.com scenarios.
A quality scenario has most of the characteristics of an ideal scenario:
- They are fairly realistic.
- They are hard (medium type problems will also be considered), as in virtually nobody will be able to solve quickly (say under 10 - 20 minutes) and only a small fraction of people can actually solve. It’s perfectly fine to have several different issues to solve in a scenario. However, artificially extending the length of a scenario by concatenating several smaller problems (like an escape room) is not desirable.
- They have a good clear unambiguous problem statement.
- They have a clear condition of victory that can be tested by a Bash script. This script has few false positives and few false negatives and reading it won’t give away the solution. Good enough scenarios where a test script is not possible will be considered. Having several ways to reach the solution is not a bad thing; it’s actually more interesting.
- Scenarios can be of different types: “fix” (troubleshoot something that is broken, find the problem and apply a solution), “do”, where nothing is broken but a solution is asked (data manipulation for example) of “hack” (a subset of broken system where the thing that is broken is the security). The most interesting scenarios in principle are of the “fix” type.
- Coding problems (“there’s a bug in this code, fix it”) will also be considered, especially if related to sysadmin/devops work. Developer or Devops tooling problems (eg Git, Terraform, Ansible) are also welcome (but for now need to be self-contained to one VM; no Internet access).
- Extra points if they are fun.
Example of good scenarios are Karakorum , Chennai , Belo-Horizonte or Melbourne
Compensation
$30 - $100 USD per scenario, depending on quality.
I’m open to significantly higher “bounty” compensation for good and extremely hard to solve scenarios (several hours for an expert to solve).
The initial total budget is $10,000.
Deliverable
Here’s an example of a deliverable. (The Packer part is just an example, not needed).
To fulfill the objective and requirements, the deliverable should be a collection of the following items:
- An Ansible playbook and auxiliary files that I can run as-is correctly against a Linux AWS AMI (see Requirements section below).
- A problem description (maximum 1500 characters, including HTML markup I add).
- A check.sh Bash script that validates the user’s solution. Should return either the string “OK” for a valid solution or else return the string “NO”, with no newline and no explicit exit code (ie script ends in
echo -n "OK"
orecho -n "NO"
, both with exit code 0). Important: the check.sh script can take a maximun of two seconds to return a result. - A solution (good clues are desired but optional).
Other Requirements
- RAM — Unless needed by the nature of the scenario, it should run on a 0.5 GiB RAM VM (nano AWS instance). An exception for Kubernetes scenarios, which need 2GB of RAM (small instance) using k3s.
- No Internet access — The resulting VM should be fully self-contained and not need the Internet for anything; regular SadServer instances have no outgoing network access. I would consider very good scenarios that need Internet access.
- Reboots — The scenario VM needs to survive a reboot, as in the problem still works and ready upon boot from its AWS AMI.
- Used ports — TCP Ports :8080 and :6767 are already used.
- Full, reproducible playbook — Your Ansible playbook should run and be complete (no missing packages for example) on the latest official Debian 11 or 12 AWS AMI for amd64 and in particular on the SadServer default Debian 11 base image. Other Linux AWS AMIs are possible if the scenario depends on that distro, indicating their AWS ami-id and region in that case. Whenever possible, packages or software installed in Ansible should be pinned to a specific version, so that the resulting image is always reproducible.
- Test — Before delivery, you should test this cycle:
- Create a new t3a.nano AWS instance in us-east-1 using the SadServers base image ami-0f1445d1276253da8 (SadServers_Base_Debian11), or if it’s a Kubernetes scenario, use the us-east-1 image ami-064d4a566689527e2 (SadServers_Base_k3s_Debian11) on a t3a.small instance (you can also search for “SadServers” in the AWS AMI Catalog and see the results in the Community AMIs). Exposing a public IP for Ansible is the easiest.
- Run your Ansible playbook against the new instance.
- Stop the instance and create an image from it.
- Create a new instance from the image you just created.
- SSH in (better yet, use browser and go to to http://$IP:8080) and test that your scenario work as intended.
- (Delete both instances when done).
Way to work
- Read this document fully. Ask for clarification if something is not explained properly.
- Try at least one of these scenarios in order to get familiar with the objective.
- Email me at
info@sadservers.com
with the Subject starting with “Scenario Proposal” and propose specific ideas for one or more scenarios. I’m open to other possibilities on how to work — you can propose them to me. Although I have a long list of ideas for new scenarios, I’m not convinced at the moment that someone who’s good and experienced at Linux etc needs guidance and specific suggestions; there’s some diminishing returns for me where if I can explain a task in detail it’s probably faster if I do it myself.
- Email me at
- If I accept the proposal, we agree on a rate for its completion. There are no deadlines for the task in principle.
- If I’m satisfied with the first scenario, I’ll happily commission more. An ideal situation for me would be to develop long term relationships that could eventually lead to me offering employment.
Ownership, Credit & Confidentiality
Happy to give credit for the scenario in SadServers, but I’ll have complete ownership of the deliverables. Do not post public solutions before clearing them with me.
Payment
By credit card or bank wire (Paypal if there’s no other option), I shouldn’t need to sign up for any new service.
This post is also available in Upwork if you want to use that platform (“way to work” workflow and payment would be through them).