From 14c5d7d61ce932b830ba2812963e2dc59f5f03e8 Mon Sep 17 00:00:00 2001 From: nycki Date: Thu, 21 Aug 2025 18:39:02 -0700 Subject: [PATCH] pull in old static files --- static/2007/Images/Gami.gif | Bin 0 -> 2660 bytes static/2007/Images/NewsCompass.gif | Bin 0 -> 7755 bytes static/2007/Images/Traps_and_zoids01.gif | Bin 0 -> 34494 bytes static/2007/Images/Traps_and_zoids02.gif | Bin 0 -> 25202 bytes static/2007/Images/Traps_and_zoids03.gif | Bin 0 -> 23513 bytes static/2007/cartoons.html | 23 ++ static/2007/index.html | 41 +++ static/2007/news.html | 11 + static/2007/trapzoid01.html | 16 + static/2007/trapzoid02.html | 16 + static/2007/trapzoid03.html | 16 + static/cookbook/index.html | 448 +++++++++++++++++++++++ static/cookbook/style.css | 39 ++ static/poker-hands/index.html | 117 ++++++ static/russet/index.html | 44 +++ 15 files changed, 771 insertions(+) create mode 100644 static/2007/Images/Gami.gif create mode 100644 static/2007/Images/NewsCompass.gif create mode 100644 static/2007/Images/Traps_and_zoids01.gif create mode 100644 static/2007/Images/Traps_and_zoids02.gif create mode 100644 static/2007/Images/Traps_and_zoids03.gif create mode 100644 static/2007/cartoons.html create mode 100644 static/2007/index.html create mode 100644 static/2007/news.html create mode 100644 static/2007/trapzoid01.html create mode 100644 static/2007/trapzoid02.html create mode 100644 static/2007/trapzoid03.html create mode 100644 static/cookbook/index.html create mode 100644 static/cookbook/style.css create mode 100644 static/poker-hands/index.html create mode 100644 static/russet/index.html diff --git a/static/2007/Images/Gami.gif b/static/2007/Images/Gami.gif new file mode 100644 index 0000000000000000000000000000000000000000..5488794806e31359d1821eb7a35e604727e574ea GIT binary patch literal 2660 zcmc&z`9Db8+3qAX==RHw%DwOy25LYRyt+o@zJ6>h0e6f*`z93~878?rA^ z+LR@yR3iJ0k!cv!*OKDud_TuO@%{Yvyq@QIZ_havR_2t0-f|*S&;kVE#KUkL#c>43 zVH}5u3d3*=#W4iOU>t*pCW_%GilYdQ!Z->Mvj~PGD2^aF0^J;H5J3wn6va>kLtzYs2o<1-pcsN+ z2#g^RAqvdGCYCDi|U@4kFi;dlSu-6B046T!olj37SZKB|BnuB@W^UD-H>y716{^R&)@+E70I` z09OLx0Z%Jb0R8{)cKli;0zrL{4#7?Q6OaTBRjpC9tjv9OT|!FBy}gp%a&x1qHOsOp z?5OyA@Cie*((_&SSnesZXzrl>3Duj`WA ztW(G8@;@eMd1y(Obm!aVTNnJA6MQJ8I=fuVtSkMPOiQ`C%|^zTTI}D=y%<3j3^bfw zTYp%gA$XwCXL@ozLGRnh6UU{+)wUVMpSZD7xWOamDjti`Vw7zFSNpxnpw+K_ik|-m z%e4>wD*Sc+OZRq*J4TGA0~S3T5s5InB^6;$&6z1?ghGR0_^Ip<=5GD)?>sU7X0JC} z8)rwcM1Aq~hKt_>O{KIP`n|>e&!23(@NZ1Fr62zthqJ`HD9eI*Vb;U8b;gh9ele#8 zEs}C7XTC#Wy`IzmiizB4xD=Vnjy)&P8;w&eSND#S zj*(M2u6moA7rE>#%2RdZKuo^U(2wK6R=|>)j??lB0VpIZ@_H z@qP|wq{cjdd(xJI)FqVa@1!))r{+NuEl|5V<{*z8^}YS;GkU7fY9fhJUDBNvf^_7u zk{e43QzB*#oxJDts;?-=!$+QWf#bj#mnO?BUXeO=D!Ps6>^ilk%=^b*x?Scs$j`sr%}Bhhozln;%PMc$=sZYb z@t!M$JQ$lf{q4|9=#qN<68S^OV?0K_(o{^0R_QFR%Bn0|tJ=HARQN{W)QdmtA5FES z`;?Woc8qFs+mx?k=i1b4*3GoOWwJs${-h60cJBFhd0+1SZtLzt_t_++Gyd+!E{~M-9M^!{q8*A=$+%C zdvmq;(y_r{*lv4IsJ?&La2OB2xlnvzHgP`kn$-P;k(do5_j+Z$q$0-9LUD48v*G%K z$?a+Py+7M~jVxTw3^5AlXJ5AI@6rm6jSzTVk84V2?Rve)kNs@RndEepM?~LI*m}9E z>B+P*FJ#Qy?u>Cy5({EFeBPS8B%^ zY_9%_yr+D1kzbxfcKX`(jrVh=D@5+6OvssQzei~6@WpWBd6Bb$h9zF}nfwYdl5JEc zZTN@8#M2n{Jw7yeXqEQ@Thcu6h#Yo;(KkWbu#;qePKw>de6K1sNpcAAWlLIEnzns@ z9jhB@C2`WyOmXq8m7CR$4fuhdEh?f8`!^|$4KQxCqzN~A==kMHSI8XNQGYgpI<8>- zM{%vrB?r2?RbJ2IK0}I?W^8TE>zVdj`zM^SbL2?nHJUdYKSU)Znx2>cHo{q;HtKY*Sr;YhQ=lU&XH9Ppx%&X~mC3c{9E}r(i@dZudtH8XT4ooN-CA#B(j3~&ozW3`eGjni zMl@dda*rgS=58@Br`lW%@youlf&VAwu$a{F*u z=x&6_?cvHL(^LwyO40BKxK$ZFJE_8FGx7e?MvQ2yrD2(JiwBpFDRQyRoUh|GM(p zj~Ve7NrxrEY@omQuWs2H*s5~)_$#}56~E;UU!5mAZ>*a3O>h3!zh?1A zil5QASp^Fj8Lu(Pwg{ZH9EqHubRJ~PHqScrl=8Jm_q*(xb#r}9YfS9ZwAYa5RtJ@x fG7W$5PQOH+(;2|GqIbN{cvD-bx2-Y?g7p6f3u*pZ literal 0 HcmV?d00001 diff --git a/static/2007/Images/NewsCompass.gif b/static/2007/Images/NewsCompass.gif new file mode 100644 index 0000000000000000000000000000000000000000..295d9f5d4dc83e41536bedc385e982aa2173ec3a GIT binary patch literal 7755 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 literal 0 HcmV?d00001 diff --git a/static/2007/Images/Traps_and_zoids01.gif b/static/2007/Images/Traps_and_zoids01.gif new file mode 100644 index 0000000000000000000000000000000000000000..6cf163f146b5ce7f939a4f7748f3ed0cc54d2084 GIT binary patch literal 34494 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 literal 0 HcmV?d00001 diff --git a/static/2007/Images/Traps_and_zoids02.gif b/static/2007/Images/Traps_and_zoids02.gif new file mode 100644 index 0000000000000000000000000000000000000000..a18a23a1d89a60d5f62ac282de0fea0946f6c942 GIT binary patch literal 25202 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 C%KTyg literal 0 HcmV?d00001 diff --git a/static/2007/Images/Traps_and_zoids03.gif b/static/2007/Images/Traps_and_zoids03.gif new file mode 100644 index 0000000000000000000000000000000000000000..046864b673e3f8413ac1bbbf81dd4e8514835ce4 GIT binary patch literal 23513 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 literal 0 HcmV?d00001 diff --git a/static/2007/cartoons.html b/static/2007/cartoons.html new file mode 100644 index 0000000..5f1ca05 --- /dev/null +++ b/static/2007/cartoons.html @@ -0,0 +1,23 @@ + + + + + Traps and Zoids + + + + +

Cartoons!

+
Traps and Zoids +
1-Supply and demand +
2-Metajoke +
3-A Trail of Pens +

+
More to come... +
eventually... + + + +
Back + + diff --git a/static/2007/index.html b/static/2007/index.html new file mode 100644 index 0000000..bebf45c --- /dev/null +++ b/static/2007/index.html @@ -0,0 +1,41 @@ + + + + + Nick.lamicela.org + + + +

+Welcome to Nick.Lamicela.Org! +

+ +
+ + +News + +
+ + + + +
+ + +
News + +
+ + +
Cartoons + +

+ + +
+Last updated: 08/01/07 +
+ + + diff --git a/static/2007/news.html b/static/2007/news.html new file mode 100644 index 0000000..1835de6 --- /dev/null +++ b/static/2007/news.html @@ -0,0 +1,11 @@ + + + What's up? + + +08/01/2007: I guess what's new today is that I ummm, have a news page? I had an idea for the logo in the middle of the night last night and I got out of bed, drew the compass thingy, inked it, and went back to bed. This morning I colored it in photoshop and added it to my website, along with this news page. If I ever update again, You'll know about it here. + + + \ No newline at end of file diff --git a/static/2007/trapzoid01.html b/static/2007/trapzoid01.html new file mode 100644 index 0000000..a8f0ac2 --- /dev/null +++ b/static/2007/trapzoid01.html @@ -0,0 +1,16 @@ + + + + + 01-Supply and Demand + + + +
+
Episode 1-supply and demand. +
+
back +
+ + + diff --git a/static/2007/trapzoid02.html b/static/2007/trapzoid02.html new file mode 100644 index 0000000..af89831 --- /dev/null +++ b/static/2007/trapzoid02.html @@ -0,0 +1,16 @@ + + + + + 02-Metajoke + + + +
+
Episode 2-Metajoke +
+
back +
+ + + diff --git a/static/2007/trapzoid03.html b/static/2007/trapzoid03.html new file mode 100644 index 0000000..d3a2518 --- /dev/null +++ b/static/2007/trapzoid03.html @@ -0,0 +1,16 @@ + + + + + 03-A Trail of Pens... + + + +
+
Episode 3-A Trail of Pens +
+
back +
+ + + diff --git a/static/cookbook/index.html b/static/cookbook/index.html new file mode 100644 index 0000000..ab345e7 --- /dev/null +++ b/static/cookbook/index.html @@ -0,0 +1,448 @@ + + + + + + + nycki’s simple cookbook for Linux, v0.10.2 + + + + + +
+

nycki’s simple cookbook for Linux, v0.10.2

+
+ +
+

introduction

+
+

why a cookbook?

+

there’s an old joke that using Linux is like ordering a cake and receiving a bunch of flour, sugar, butter, and eggs. many self-hosting tutorials read like the back of a box of cake mix, which is great if you want a cake fast, but unsatisfying if you want to learn about cake making. my goal is for this guide to teach you enough to improvise, to make substitutions.

+
+
+

why all the lowercase?

+

a few people have asked me this. honestly I have some influences but the main reason is that it reminds me of writing code. in code, uppercase letters are almost always reserved for names. I did my best to capitalize all names in this document the way their owners capitalize them, so the web protocol is HTTP, but the comic strip is xkcd.

+
+
+

who is your audience?

+

this guide is for you if:

+
    +
  • you’re me, and you forgot how you did this last time.
  • +
  • you want to share pictures and videos and don’t want to use a commercial file host.
  • +
  • you want to run a communal server, like tilde.club.
  • +
  • you’re just curious about Linux and servers!
  • +
+

sound good? then let’s get cooking.

+
+
+
+

materials

+

I’ll be using a Raspberry Pi 4b and installing Raspberry Pi OS Lite (64-bit). it’s also known as Raspbian, since it’s based on Debian Linux. any Debian-like OS will work for this tutorial. if the Raspberry Pi isn’t available where and when you are, some good alternatives are the Renegade or the ROCK64. If Raspbian doesn’t run on your device, try armbian.

+

you’ll also need a MicroSD card, a hard drive, and a second hard drive for backup. I recommend a 64GB MicroSD card and two 2TB hard drives. the Pi can power one hard drive via USB, but if you want to plug both in at once you’ll need a powered hard drive enclosure or a powered USB hub.

+

you can also adapt these directions to existing hardware you may already own, like an old laptop or desktop pc. you can also rent a virtual machine from a remote datacenter! the cheapest virtual machine on DigitalOcean right now (as of 2023 July) costs 6 USD per month, and comes with 25GB of storage. renting a machine in a datacenter means you get the perks of high-speed internet all day and night, which is great if you are running a game server and need a fast connection. however, you’ll pay 10 USD per month for each 100GB of additional storage, so it’s not great if you want to host a huge media archive.

+ +
+
+

usernames and passwords

+

at some point you’ll probably want to make your server available on the internet. there are bots out there that do nothing but guess random usernames and passwords all day, and they will find you, so you need to be prepared.

+

for your username, pick something short and catchy. in my experience, a typical linux username is from 3 to 8 characters long. if you have a short name like ‘alice’ or ‘bob’ you can use that. if you have a nickname online like ‘azure’ or ‘luna’ then that works too. if you have a middle name, you can use your initials, like ‘jfk’. your username should be all lowercase.

+

for your password, the most important factor is length. maybe you’ve been told that you need to add weird symbols and stuff in it, but that rule is for more limited systems. it’s the 64-bit era, baby! the only thing that matters is how much entropy your password has. entropy is basically a measure of how unlikely something is to happen by accident. like if I flip ten coins and you flip ten coins and we get the same sequence, the odds of that happening are 1 in 2^10, so we say that that particular sequence of flips has 10 ‘bits’ of entropy. it’s recommended that your password have about 60 to 80 bits of entropy. yikes, that’s a lot of coin flips to memorize!

+

luckily there’s a better way. using a tool like xkpasswd or diceware, you can convert randomness into words. using the diceware list, you can roll 25 six-sided dice to get a random 25-digit sequence, and then convert each 5 digits into a word, to get a 5-word phrase. the odds of two people getting the same 5-word phrase are 1 in 6^25, which is approximately equal to 2^64, so this password has 64 bits of entropy. that’s enough to make most hackers give up and move onto an easier target. go generate a password now, and save it somewhere safe, like a password manager program, or a piece of paper tucked inside a book. don’t be afraid to write things down; sometimes paper is safer.

+
+
+

operating system

+

time to download and install your operating system. there are lots of guides on how to install Linux already, here’s one for Raspbian. I’ll be using Raspberry Pi OS Lite (64-Bit), with the default settings. with these settings, there is no remote login available; you will need to plug a keyboard and monitor directly into the pi. on the first boot, you’ll be prompted to enter the username and password for the initial user. after that, you’ll be given a login prompt. log in with the username and password you just set. some operating systems display nothing at a password prompt, not even stars. once you log in, you’ll see some system information, and then a prompt that looks like this:

+
user@raspberrypi:~ $
+

this is a CLI, a command line interface. from left to right, this contains

+
    +
  • your name.
  • +
  • the machine’s name.
  • +
  • your current directory. ~ means “home”, and is short for /home/user.
  • +
  • a command prompt. this will be $ if you are in user mode, or # if you are in admin mode.
  • +
+

if you’ve ever used a bot in a chatroom, you already know how to use a command line interface! it’s a system where you type an instruction, and the computer answers you. here are some examples of commands you can type:

+
    +
  • whoami: ask the computer what your name is.
  • +
  • hostname: ask the computer what its name is.
  • +
  • pwd: ask the computer where you are.
  • +
  • ls: look at the files in your current location.
  • +
  • cd <somewhere>: go somewhere else.
  • +
  • echo <something>: ask the computer to repeat something back to you.
  • +
  • nano <filename>: edit a text file.
  • +
  • cat <filename>: print a text file to the screen.
  • +
+

if this is your first time using a command line interface, try some of these commands now. use nano myfile.txt to open a text file, write some text to it, then save with ctrl-o, and exit with ctrl-x. use ls to look at that file, then use cat myfile.txt to have the computer read it back to you. pat yourself on the back, you’re learning so much!

+

soon we’ll unplug the keyboard and monitor from this computer, making it a ‘headless’ server. before we can do that we need to run a few commands as administrator, or ‘root’. we’ll do this with a very powerful command called sudo. sudo stands for ‘super user do’, and it means ‘do the next thing as an administrator’. you can use sudo <command> for a single command, or enter interactive mode with sudo -i. in interactive mode, all your commands will be admin commands, until you say exit.

+

⚠️ there is no undo button! if you say something with sudo, make sure you mean it!

+

throughout this guide, I’ll be using $ at the start of a command if you run it as a normal user, or # if you run it as admin. either way, you don’t actually type this symbol yourself, it should already appear on your command line.

+

we’ll need to do these things before we can go headless:

+
    +
  • change sudo to require a password
  • +
  • change the hostname from the default
  • +
  • connect to a network
  • +
  • enable remote login
  • +
  • install operating system updates
  • +
  • reboot
  • +
+

first we’ll change the sudo rules for our account. there should be a config file at /etc/sudoers.d/010_pi-nopasswd. we’ll use the special visudo command to edit it, which should launch nano like before, but with special safety guards to catch us if we lock ourselves out of administrator mode.

+
$ sudo visudo /etc/sudoers.d/010_pi-nopasswd
+

you should see a single line, like

+
user ALL=(ALL) NOPASSWD: ALL
+

remove the NOPASSWD: instruction, so this file reads

+
user ALL=(ALL) ALL
+

save and quit. from now on, if you haven’t used sudo in a few minutes, the system will ask for your password. this way if you accidentally leave yourself logged in, and someone else takes over your session, they won’t automatically get sudo access.

+

we can do the next few steps with the raspi-config tool.

+
$ sudo raspi-config
+

the hostname is under System Options -> Hostname. I set mine to ‘teapot’.

+

if your machine is plugged directly into your home router with a patch cable, you already have network access, otherwise set up wireless with System Options -> Wireless LAN.

+

to enable remote login, go to Interface Options -> SSH.

+

select ‘Finish’. you’ll be prompted to reboot, but don’t yet, we’ll reboot later after installing some updates. in Debian Linux, we update packages using a tool called apt. apt update checks for updated packages, and apt upgrade installs them. run both these commands now, using the interactive version of sudo.

+
$ sudo -i
+# apt update
+# apt upgrade
+

finally, if you’re on a Raspberry Pi, then avahi-daemon is installed automatically. if not, you may need to install it yourself. this program broadcasts your hostname to the network, so you can log in remotely without configuring your router.

+
# apt install avahi-daemon
+

now go ahead and reboot, to make sure your new hostname is in use.

+
# reboot
+

after a minute, you should now be able to log in remotely from another computer, using

+
$ ssh user@teapot
+

if this works, congrats! you can now unplug the keyboard and monitor. you’ve created a headless server.

+
+
+

format storage

+

the Raspberry Pi uses a MicroSD card as the operating system disk. it’s convenient; if the OS breaks you can just pull its brain out, factory reset it, and pop it back in. however, I don’t want to store all my user data on that brain card. I think it’s better if you have a secondary disk that contains only the stuff you create yourself. that way if something goes wrong and you have to reset the brain card, you don’t lose any of your personal data.

+

there are different formats for a data disk. the format determines exactly where the data and metadata will appear in each ‘chunk’ of the disk. Windows typically uses NTFS, which supports metadata for ownership and last modified time, but not for fine-grained access like whether a file is shared with guests. Linux uses a format that does allow this fine-grained access, called ext4, so that’s what we need to format the data disk as.

+

first we need to identify the disk’s device file. in Linux, everything you can read or write to is treated as a file, including a USB device like an external disk. note that this device file is not the same as a filesystem mount. we’ll cover mounting later.

+

with the data disk unplugged, run the command df. plug the disk in, and run df again. compare its output to the previous run. there should be exactly one new entry, and it should look like /dev/sda or /dev/sda2. if you’re not sure which disk it is, don’t risk it, ask a friend for help.

+ +

⚠️ warning! this will erase everything on the disk!

+

format the disk, and label it. this will make it easier to mount later.

+
# mkfs.ext4 /dev/sda
+# e2label /dev/sda teapot-data
+
+
+

mount storage

+

Linux doesn’t use drive letters like Windows does. instead, every disk’s filesystem lives at some path. the main, or ‘root’ path is /, a single slash. the root path belongs to the operating system disk, in this case the MicroSD card. we’ll create a new sub-path at /data for our data disk.

+
# mkdir /data
+

when the system boots up, it looks in the config file /etc/fstab to find out where we want other filesystems to be loaded. since we gave our disk a label earlier, we can mount it using that label. open the file with nano, and add this line to the end of it:

+
LABEL=teapot-data /data ext4 nofail,x-systemd.device-timeout=5s,x-systemd.automount 0 0
+

there’s a lot going on here. you can read more about how fstab and systemd work, but basically what we’re saying is

+
    +
  • find the disk labeled ‘teapot-data’ and mount it at /data, as an ext4 filesystem.
  • +
  • nofail: if the disk is missing at boot time, skip it and finish booting anyway.
  • +
  • x-systemd.device-timeout=5s: wait 5 seconds before giving up.
  • +
  • x-systemd.automount: if someone tries to access the disk and it’s not mounted, try mounting it again.
  • +
+

we’re using a delayed mounting process here because we want to make sure our server still comes online, even if the disk fails to load. if the server crashes on boot, we’ll have to go plug the monitor and keyboard back in to fix it. with nofail, we have a chance to fix it remotely.

+

save and exit the file if you haven’t already, and then check it:

+
# mount --all --fake --verbose
+
    +
  • –all: apply all the rules from /etc/fstab.
  • +
  • –fake: don’t actually apply the rules, just check that they’re written correctly.
  • +
  • –verbose: give detailed feedback. Linux programs typically say nothing unless there is an error.
  • +
+

if all your mounts pass inspection, now is a good time to reboot the machine.

+
# reboot
+
+
+

backups

+

I’ll write a longer section about backups later. basically: every month or so, plug in the second disk, and copy everything from the first disk to the second one. it’s a quick and dirty solution and it’s better than having no backups at all. the command you want is

+
rsync -axHAWXS --numeric-ids --info=progress2 <source> <destination>
+

explanation here.

+
+
+

website

+

we’re getting into the fun stuff now. one of the coolest things you can do with your Linux server is host a website. a little chunk of the world wide web that belongs just to you. all you need to be a website is to have a program running and ready to answer HTTP requests with HTML text. HTTP is the HyperText Transfer Protocol, and ‘HyperText’ is just a fancy word for ‘text with hyperlinks in it’.

+

put briefly: the internet is made of programs that exchange text files with each other!

+

we could write a web server from scratch, but to get started we’ll use Apache, a free, open-source, and well-established web server. nginx has a free version too, but Apache is good enough for our purposes.

+
# apt install apache2
+

it should start itself automatically. go ahead and check http://teapot.local, and you should see the test page! now we’ll write our own page hosted on the data disk. we’ll make a folder for it called /data/teapot.local and a subfolder of that called site.

+
# mkdir /data/teapot.local
+# mkdir /data/teapot.local/site
+

when making multiple levels of new directories like this, you can use this shortcut to create the whole chain in one go:

+
# mkdir -p /data/teapot.local/site
+

we’re about to do a bunch of typing to set up a basic site definition. you can copy and paste this if you want, but I recommend typing it by hand. it’ll train your brain to recognize pieces of the code. remember, use nano to create or edit text files.

+

contents of /data/teapot.local/site.conf:

+
<VirtualHost *:80>
+
+ServerName teapot.local
+DocumentRoot /data/teapot.local/site
+
+<Directory />
+  Require all granted
+</Directory>
+
+</VirtualHost>
+

this is just about the simplest possible website definition. we’re saying “hi, I am a web server listening to port 80, serving pages for the website ‘teapot.local’.” a port is like a post office box for a computer. it allows you to address a specific program inside the machine. port 80 is an old and well-known port which is used for most HTTP traffic.

+

next we define the DocumentRoot to be /data/teapot.local/site, instead of Apache’s default of /var/www/html. we also tell Apache that it’s allowed to share these files. by default, if no filename is specified, Apache will look for one called index.html, so we’ll write that too.

+

contents of /data/teapot.local/site/index.html:

+
<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<title>my website!</title>
+<h1>my website!</h1>
+lorem ipsum dolor sit amet
+

HTML is what your web browser sees. in fact, if you’re on a desktop browser, you can press ctrl-u right now to see the HTML text behind this page! what I’ve written for this example is the bare minimum to follow the modern html5 standard.

+
    +
  • originally the <!DOCTYPE> tag was used to announce what version of html you were using, but these days we don’t really care. we just assume everyone’s using ‘normal’ html.
  • +
  • the <html> tag is traditional, but in html5 it’s actually optional, as is the closing </html> tag. we include the opening tag here so we can specify lang="en", which tells the browser that our website is written in English. if you are not writing in English, substitute the appropriate language code.
  • +
  • use a <meta> tag to let the browser know we’re using utf-8. once upon a time there were different text encodings for every language. it’s really a miracle that utf-8 exists. this encoding was written by the geniuses at Unicode. it works great for English, and pretty well for every other text in every known language. if this emoji works (⚠️) and isn’t displayed like aE` or something, then you can thank utf-8.
  • +
  • a title! the <title> tag is required in html5. this is the text that appears in your browser tab.
  • +
  • a heading! this is usually the same as the title, but it’s optional. <h1> is used for the main heading, <h2> for a sub-heading, all the way down to <h6>.
  • +
  • finally, I put some generic text here with no tags at all, just to pad out the page a little.
  • +
+

once you’ve written both of those files, we can tell Apache our site is ready. by the way, when typing these long paths, try pressing ‘tab’ once or twice, sometimes your shell will auto-complete words. neat!

+
# ln -s /data/teapot.local/site.conf /etc/apache2/sites-available/teapot.local.conf
+# a2ensite teapot.local
+# a2dissite 000-default
+# systemctl reload apache2
+

now go back to http://teapot.local and hit refresh, and you should see your new website! at this point you can go explore the world of HTML. the nice folks at Neocities are helping to keep this art alive, go check them out! and remember, you can press ctrl-u to view the HTML for any page you’re on.

+

p.s. up until this point I’ve been writing with pure HTML myself, but as this page is getting rather long, I’m actually switching to a helper tool called pandoc. I may cover this tool in a later tutorial.

+
+
+

networking

+

at this point, your server is available only on your LAN, your local area network. this network is managed by your router, which is a small computer plugged into your home’s internet cable. this cable goes to an internet service provider, or ISP, and they take the traffic from your network and connect it to other networks around the world. by default, your router will protect your computers from unwanted traffic. people from around the world can’t log into your server, and they also can’t see your website. if you want to change that, you’ll need to change settings on the router.

+

⚠️ don’t modify a home network without consent!

+

if you do this wrong it puts everyone on the network at risk, so make sure everyone in your house knows what you’re doing. if anyone isn’t comfortable, then do not open up your home network! you have lots of other options:

+ +

if you’re sure you want to open up your home network, read on…

+
+

firewall

+

if you do everything right, the only server that will be available to the outside world is our little teapot, and only people with an account will be able to get in.

+

⚠️ you did pick a long, random passphrase, right? if not, go back and do that now.

+

however, for a little extra safety, we’ll use ufw to limit what kind of messages teapot will answer. ufw stands for ‘Ubuntu firewall’ but it works on other systems besides Ubuntu now, so sometimes it’s called ‘uncomplicated firewall’ instead.

+

💡 I got this information almost verbatim from the Raspberry Pi Foundation, seriously they’re awesome people.

+

install ufw. unlike other system services, this doesn’t start automatically, since you can lock yourself out with it. that’s why it’s important we configure it before changing settings on the router.

+
# apt install ufw
+

we’ll also need to know the router’s local address. we can find this with the ip function.

+
$ ip route
+

the first line of the output should look like this:

+
default via 192.168.20.1 dev eth0
+

if you’re using a wireless connection, you’ll see wlan0 instead of eth0. underneath the first line, you should see a similar number, but with /24 at the end, like

+
192.168.20.0/24 dev eth0
+

this defines the local subnet, the list of IPs that count as part of your local area network. the /24 means that the first 24 bits are fixed. there are 8 bits in a byte, so 24 bits is 3 bytes, meaning that this subnet includes all addresses of the form 192.168.20.x.

+

to avoid locking ourself out, we’ll allow anything from the local area network to connect:

+
# ufw allow from 192.168.20.0/24
+

substitute your own subnet as appropriate. we’ll also allow http and https traffic through. ufw has built-in rules that say how to handle this traffic, and it will open the right ports for you.

+
# ufw allow http
+# ufw allow https
+

if you want to log in remotely, enable ssh as well:

+
# ufw allow ssh
+

you can check the list of rules with ufw show added. if all looks good, turn it on:

+
# ufw enable
+

with any luck, you won’t get kicked off your ssh connection, which means the firewall is allowing you through. ufw should now be blocking traffic on all other ports, which will dramatically cut down on the surface area for an attack.

+
+
+

private key auth

+

chances are, even if you want to allow outside ssh connections, you don’t really need to be able to log in from anywhere. most likely you’ll only be logging in from one or two machines, like a laptop or your phone. we can configure our server to only allow authenticated devices to connect.

+

there’s a lot of really advanced math behind private keys, math called cryptography, but the important part for our purposes is that each key has a public and a private part. the public key can be used to encrypt files, “locking” them, but only the private key can decrypt, or “unlock” them. we’ll use this to prove that a device is authorized, by sending a locked message that only it can unlock.

+

on your laptop or other client device, generate an ssh key. if you’re on Linux, Mac OS, or Windows 10, this is probably named ssh-keygen. you can also add a comment to the key, so you remember which device it belongs to.

+
$ ssh-keygen -t ed25519 -C "my laptop"
+

follow the prompts to generate a private key. it will be saved in /home/user/.ssh (or your operating system’s equivalent location), as well as a public key with a .pub file extension. you can add a passphrase during key generation, this is highly recommended if anyone else has access to your computer!

+

we’ll need to get the public key, the one ending in .pub, onto the server somehow so it can recognize us. public keys don’t need to be kept secret, so use any type of file transfer available to you. you could copy it to a USB drive and plug it into the server, or copy it by hand, or even send it to yourself over the public internet. once you get it to the server, create the file ~/.ssh/authorized_keys. on a new line, copy the full contents of the .pub file into the authorized_keys file.

+

💡 if you need to connect from multiple devices, I recommend repeating these steps for each device, rather than copying your private key between devices. that way you don’t have to worry about accidentally leaking your private key. you can add as many public keys to authorized_keys as you want!

+

at this time, try logging into the server from the newly-authorized client. it will ask for your key’s passphrase if you set one, but it won’t ask for your account passphrase, since you already authenticated yourself by having the private key. you will still need to type your password to use sudo though, just in case.

+

if that went well, you can now disable password-based auth completely. as admin, open /etc/ssh/sshd_config and make sure this is set to ‘no’:

+
PasswordAuthentication no
+

save the file, and restart the ssh service:

+
# service ssh reload
+

it should now be impossible to login without an authorized key. if you want to authorize more devices, repeat these steps for each device. each device should have its own private key. never let a private key leave the device that created it. if you accidentally copy a private key, remove it from authorized_keys and create a new one to replace it.

+
+
+

port forwarding

+

⚠️ don’t do this until you’ve done everything else!

+

it’s time to make the big leap. your server is armored up and ready to face the outside world. let’s open the gates. the end goal here is to forward ports 80 and 443, from the outside world to your server. if you want to log in remotely, you’ll also need to forward port 22.

+

unfortunately, port forwarding is going to be a bit different for every router. I’ll share what worked for my router, a MikroTik running RouterOS.

+
    +
  • connect to the router web interface at http://router.lan.
  • +
  • switch from Quick Set to WebFig view.
  • +
  • Go to IP -> DHCP Server -> Leases. +
      +
    • find the local address assigned to teapot. this should look like 192.168.x.x, or possibly 10.0.x.x.
    • +
    • click on that address, and select ‘make static’. this way, when teapot disconnects and reconnects, it will always get the same address. in my case it was 192.168.88.247.
    • +
  • +
  • Go to IP -> Firewall -> NAT -> New Rule. +
      +
    • Chain: dstnat
    • +
    • Dst. Address: <your public IP address>
    • +
    • Protocol: 6 (tcp)
    • +
    • Dst. Port: 80
    • +
    • Action: dst-nat
    • +
    • To Addresses: <teapot’s local IP address>
    • +
    • To Ports: 80
    • +
  • +
  • Repeat that step for port 443.
  • +
  • If you need remote login, repeat that step again for port 22.
  • +
+

while we’re configuring the router, we’ll enable hairpin NAT, also known as NAT reflection or NAT loopback. without this rule, the router may get confused if we try to access teapot via its public address while we are inside the local network.

+
    +
  • Go to IP -> Firewall -> NAT -> New Rule (again): +
      +
    • Chain: srcnat
    • +
    • Src. Address: 192.168.88.0/24 (use your own subnet)
    • +
    • Dst. Address: <teapot’s local IP address>
    • +
    • Protocol: 6 (tcp)
    • +
    • Out. Interface List: LAN
    • +
    • Action: masquerade
    • +
  • +
+

you should now be able to go to http://<your own public IP address>, and your router will forward the traffic to teapot. congratulations, your machine is now a true part of the internet.

+
+
+

https

+

todo:

+
    +
  • get a domain name from a service like https://afraid.org
  • +
  • set up https with a service like LetsEncrypt +
      +
    • apt install certbot python3-certbot-apache
    • +
    • certbot certonly –apache
    • +
    • a2enmod rewrite ssl
    • +
  • +
+
+
+
+

file sharing

+

another neat thing you can do with your server is use it to store stuff! there are some all-in-one solutions for this such as NextCloud, but right now that’s overkill for me; I want to install simple tools to solve simple problems.

+
+

sync

+

Syncthing is a simple tool for duplicating some folders across multiple devices. maybe you want all your photos to be automatically duplicated from your phone to your server, or you have some game save files that you want to be copied between two gaming pcs, or you have some other documents that you access frequently from your laptop and your desktop. Syncthing is one of those rare and beautiful gems of free software that ‘just works’.

+

as admin, install the service:

+
# apt install syncthing
+# ufw allow syncthing
+

as your normal user account, enable the service for yourself:

+
$ systemctl --user enable syncthing
+$ systemctl --user start syncthing
+

that’s it! Syncthing is now installed and running! you can configure Syncthing with a web app that runs on port 8384. if you’re connected remotely via ssh, use this trick to get access. type the special sequence [enter], tilde (~), C (shift+c), and you’ll get a prompt like

+
ssh>
+

we’ll use this prompt to set up a temporary tunnel. a tunnel allows you to bind a port on your client machine to a client on the server. specifically, a tunnel passes some traffic through your encrypted ssh connection, as opposed to passing it through a browser via http or https. this way you can quickly get access to an application running on your server, without exposing it to the whole internet. for this example, we’ll bind the client’s port 8000 to localhost:8384 on the server.

+
ssh> -L 8000:localhost:8384
+

now, open http://localhost:8000 on your client, and you should have access to the Syncthing console running on the server!

+

💡 you can also send this command to ssh at login time. for instance:

+
$ ssh user@teapot -L 8000:localhost:8384
+
+

syncthing todo:

+
    +
  • explain my personal folder setup
  • +
  • versioning options, and how this is not the same as a proper backup (but its close)
  • +
+

file sharing todo:

+
    +
  • set up samba share
  • +
  • configure nfs
  • +
  • FileBrowser +
      +
    • set up auth before exposing this to the internet, I think
    • +
  • +
+
+
+
+

containers

+

at this point, we’ll take a detour and talk about containers. everything we’ve done so far has involved making changes to system files. if you need to copy your data to a new system you’ll have to change all those system files again, and this gets more complicated the more things are installed. thankfully, many applications can now be installed as containers.

+

a container isn’t quite a virtual machine. you’re not running a whole computer-inside-a-computer. it’s more like a facade, a fake computer with a fake filesystem and fake network. containers don’t take much memory to create, and they don’t leave junk all over the filesystem when you remove them. neat!

+

we’ll be using Podman, a container host service. if you’re familiar with Docker, this is like that, but even more free.

+
# apt install podman python3-pip
+# pip install "podman-compose<1.0"
+
    +
  • pip is a package manager for Python programs. we install pip so that we can use it to install podman-compose.
  • +
  • podman-compose is a very handy tool that lets you store your container instructions in a script file to use later. we’ll cover this soon. I needed to specify an old version for compatibility.
  • +
  • if you are on armbian, you may also need to install uidmap and slirp4netns manually. these are normally included with podman and are used for making fake users and fake networks, respectively.
  • +
+

we’ll test Podman by running a copy of nginx (pronounced ‘engine-x’). we’ll use the image published by Docker Hub. think of an image as a casting mold. you can’t run an image directly, but you can use it to produce a filled container.

+
$ podman run --rm -p 8000:80 docker.io/library/nginx
+
    +
  • podman run: create a new container and start it immediately.
  • +
  • --rm: remove the container automatically when the main program exits.
  • +
  • -p 8000:80: connect port 8000 on the host to port 80 inside the container. we need permission to bind to ports less than 1024, since they’re older and have special meanings. without that permission, we can use any port between 1024 and 65535. 8000 is an arbitrary choice, and its easy to remember.
  • +
  • docker.io/library/nginx: this is the name of the image we’re building. this has to come last, because anything that comes after the image is instructions for the program inside the container, not for Podman. in this case we’re not giving any instructions after the image, because we want to run the default command, which is to immediately start nginx.
  • +
+

💡 if you get an error like “delete libpod local files to resolve”, you may need to do this extra step, then try again:

+
$ sudo rm ~/.local/share/containers
+

you should now be able to point a web browser at http://teapot.local:8000 and you will see nginx is running!

+

finally, we’ll use podman-compose to save this setup. create a folder in /data for this container, and make a new file called compose.yaml.

+

contents of /data/nginx/compose.yaml:

+
version: '3'
+services:
+  nginx:
+    image: docker.io/library/nginx
+    ports:
+    - 8000:80
+

this does the same thing as our command from before. it starts one service container, running nxing, with port 8000 on the host mapped to port 80 in the container. to run this script, type

+
$ podman-compose up -d
+

and to stop it again:

+
$ podman-compose down
+
+
+

database

+

todo:

+
    +
  • explain why and how to host a database
  • +
  • install php and mariadb
  • +
  • configure phpmyadmin
  • +
+
+
+

apps

+

todo:

+ +
+
+

auth

+

todo:

+
    +
  • set up Keycloak so you can log in through the reverse proxy.
  • +
+
+ + diff --git a/static/cookbook/style.css b/static/cookbook/style.css new file mode 100644 index 0000000..3da28c3 --- /dev/null +++ b/static/cookbook/style.css @@ -0,0 +1,39 @@ +:root { + /* xkcd.com/color/rgb */ + --amber: #feb308; + --black: #000000; + --steel-blue: #5a7d9a; + --olive-green: #677a04; + --grey: #929591; + --warm-grey: #978a84; + --light-grey: #d8dcd6; + + --background: var(--black); + --foreground: var(--light-grey); + --code: var(--amber); + --link: var(--steel-blue); + + font-family: sans-serif; + color: var(--foreground); + background-color: var(--background); + max-width: 100ch; + margin: auto; + padding: 1ch; +} +a { + color: var(--link); +} +code { + color: var(--code); + font-size: 1rem; +} +pre, pre.sourceCode { + color: var(--code); + margin: 2ch; + white-space: pre-wrap; + border: solid 1.5px; + padding: 2ch; +} +section.level2 { + border-top: 0.5ch solid white; +} \ No newline at end of file diff --git a/static/poker-hands/index.html b/static/poker-hands/index.html new file mode 100644 index 0000000..4570eed --- /dev/null +++ b/static/poker-hands/index.html @@ -0,0 +1,117 @@ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Poker Hands
Straight FlushA2345
Four of a KindQQQQ8
Full House33322
Flush
Straight10JQKA
Three of a KindKKK8A
Two PairsAA775
One PairQQ469
+

+ Ties broken by highest card. +
Matched sets have priority. +
Aces are high, except in A2345. +

+

+ 99542 > + 88A64 > + 88A63 +

+
©Nick 'nupa' Lamicela, 2023
diff --git a/static/russet/index.html b/static/russet/index.html new file mode 100644 index 0000000..69ab1a0 --- /dev/null +++ b/static/russet/index.html @@ -0,0 +1,44 @@ + + + + Nupa's Page + + + + +
+ +
+

Russet

+
Or, how to reproduce my self-host server.
+
+ +
+

Hardware

+

+ Russet runs on a Raspberry Pi, model 4b with 4GB RAM. It has an Argon metal heat dispersing shell. It's hooked up to a Microtik router over a wired home internet connection. You can use any small computer really. If Raspberry Pi is currently hard to obtain (2022) then I recommend the Pine64 "Rock64" computer as an alternative. +

+
+ +
+

Operating System

+

+ There are hundreds of guides on how to install Raspbian (or Armbian) on various systems. It usually boils down to "go download a disk image and write it to an sd card using some disk writing tool". I'll assume you can figure this part out without my help. The important thing for our purposes is that your OS is debian-based, so we have access to the now-familiar 'apt' package mananger (sorry, Arch fans). +

+
+ + + +
+

Changelog

+

2022-12-13: New page.

+
+ +
+ + \ No newline at end of file