alexw.nyc

Unnamed repository; edit this file 'description' to name the repository.
git clone git://git.alexwennerberg.com/alexw.nyc
Log | Files | Refs | README

commit 7938fd10fb6b3ae4b96520023a83e8672a08cab3
parent 975d76381ebe821672163e5c823626e8e6e62a61
Author: alex wennerberg <alex@alexwennerberg.com>
Date:   Sat,  8 Apr 2023 11:57:39 -0400

some changes

Diffstat:
M.gitignore | 1+
ATODO | 1+
Mbuild.sh | 2++
Mdeploy.sh | 2+-
Msrc/about.md | 38++++++++++++++++++++++++++++++++++++--
Msrc/index.md | 8++++++--
Msrc/infrastructure.md | 33++++++++++++++++-----------------
Asrc/logo.png | 0
Asrc/server-guide.md | 123+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/style.css | 22+++++++++++++---------
Mtemplates/footer.html | 5+++--
Mtemplates/header.html | 14++++----------
Atemplates/nav.html | 9+++++++++
13 files changed, 215 insertions(+), 43 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -1 +1,2 @@ _site +deploys.sh diff --git a/TODO b/TODO @@ -0,0 +1 @@ +External Link CSS jbauer diff --git a/build.sh b/build.sh @@ -1,3 +1,5 @@ +#!/bin/bash + outdir=_site mkdir -p $outdir diff --git a/deploy.sh b/deploy.sh @@ -1 +1 @@ -scp _site/* alex@alexwennerberg.com:/www/sale/ +rsync -rd _site/ root@pi:/var/www/alexw.nyc diff --git a/src/about.md b/src/about.md @@ -1,5 +1,39 @@ # About -My name is alex, and this is my [digital garden](https://www.technologyreview.com/2020/09/03/1007716/digital-gardens-let-you-cultivate-your-own-little-bit-of-the-internet/). +Hello, I am Alex (he/him). I write and have written poetry, nonfiction and +prose, and my current primary interests are exploring alternatives to +mainstream software and computing (details below) and their ability to build +creative, cooperative, non-commercial relationships and communities. -More info +![](me.jpg) + +I studied Physics and English at Truman State University in Kirksville, +Missouri graduating in 2016, lived in Chicago for four years, then San +Francisco for two. I currently live in Brooklyn, NYC. I published the poetry +book Harm (2016) through Bottlecap Press, and have self-published and locally +distributed three chapbooks since then. Reach out if you'd like a physical +copy. My poetry has appeared in Prelude, Tenderness Lit and Peach Mag, among +elsewhere. + +I believe strongly in non-commercial, collaboratively-produced free and open +source software. I believe computers, predominately, have become primarily +instruments of increasing bureaucratization, domination and control, and this +ideology pervades even "alternative" tech. I believe that a more radical +re-evaluation of computing and its role in our world is necessary. I do not +take a pessimistic outlook here: I believe these technologies exist and can be +built. + +Some of my current technical interests, currently, are: +* [Dusk OS](https://git.sr.ht/~vdupras/duskos) +* [uxn](https://100r.co/site/uxn.html) +* [permacomputing](https://permacomputing.net/) +* [nanomail](https://github.com/alexwennerberg/nanomail) + +Some of my "finished" projects: +* [flounder.online](https://flounder.online) +* [crabmail mailing list archive](https://github.com/alexwennerberg/crabmail) +* [poetry](https://alex.flounder.online/poetry/) + +I'm also deeply interested in philosophy, literature, political organizing, and art. + +I recently moved to NYC and am interested in meeting people and communities with similar interests and am happy to get in touch. Contact information is in the site footer. diff --git a/src/index.md b/src/index.md @@ -1,3 +1,7 @@ -# +# Alex Wennerberg's Digital Home -Foo +Welcome to my webpage. It is currently a work in progress. You may find more of +what you're looking for on [alexwennerberg.com](https://alexwennerberg.com) while I set +things up here. + +:) diff --git a/src/infrastructure.md b/src/infrastructure.md @@ -1,31 +1,30 @@ -# river +# hello world -alexw.nyc is provided to you by river, a small server that I am a caretaker of, +alexw.nyc is sent to you by a small computer that I am a caretaker of and which resides in my home. -here is a technical overview: +Here is a technical overview: -* hardware: raspberry pi 3B -* disk: 256GB sandisk SD card +* Hardware: Raspberry Pi 3B +* Disk: 256GB Sandisk SD card * ISP: Verizon FIOS * OS: Alpine Linux, diskless install * Web server: lighttpd -(insert picture here) +(TODO insert picture here) ## prerequisites -bringing my digital infrastructure home required a few prerequisites: -* a stable, relatively fast home internet connection -* an ISP that will not stop me from doing this (this remains to be seen) -* linux sysadmin resources +Bringing my digital infrastructure home required a few prerequisites: +* A stable, relatively fast home internet connection +* An ISP that will not stop me from doing this (this remains to be seen) +* Relatively good sysadmin and networking skills ## counter cloud strategies I was inspired by christina cochior's talk on [counter cloud strategies](https://www.youtube.com/watch?v=fx3XcKy7LJY&t=1200s) and the related work [a traversal network of feminist servers](https://varia.zone/atnofs-publication.html) -the web today is becoming highly centralized, and most of us are completely -removed from the digital infrastrucure we depend upon. the web of the cloud is -not a community, it is a corporate-controlled ad-ridden monoculture. I believe in building spaces that are independent of this world, spaces of creativity, play, understanding and community. I view the current world of cloud infrastructure as antithetical to this, and mainstream computing as completely failing to deliver on its promise of [bicycles for the mind](https://www.youtube.com/watch?v=KmuP8gsgWb8) - -we can do the difficult work of creating independent digital spaces and infrastructure. - -If you're interested in setting up your own digital infrastructure, see my somewhat idiosycnratic [guide](counter-cloud.html) +The web today is becoming highly centralized, and most of us are completely +removed from the digital infrastrucure we depend upon. The web of the cloud is +not a community, it is a corporate-controlled ad-ridden monoculture. I believe +in building spaces that are independent of this world, spaces of creativity, +play, community and understanding. I view the current world of cloud +infrastructure as antithetical to this. diff --git a/src/logo.png b/src/logo.png Binary files differ. diff --git a/src/server-guide.md b/src/server-guide.md @@ -0,0 +1,123 @@ +# Alex's Guide to running a home server (WIP, DRAFT) + +This is a living guide to hosting digital infrastructure. I'm writing this out +of a dissatisfaction with a lot of existing approaches to running a home server. It +seems to me that a lot of self-hosting guides mirror the approaches and +infrastructure of big tech. + +This is a living document, and I will update it as I learn more. If you have +suggestions or corrections, please contact me. + +## Principles +### Keep it simple +Your system should be as simple as possible. Use lightweight tools: this often +means that you will be using things that are not mainstream, as mainstream +tools are often designed primarily with large, modern, distributed, +high-traffic services in mind: not what we are doing here. You may find +yourself using Linux tools that are quite old, from an era were simpler and +more straightforward infrastructure was more common. + +### No cloud services +Some self-hosting guides will say, set up your home server then use a cloud +proxy server, or put things behind Cloudflare. In my view, this defeats the +purpose: if you want true digital self-sufficiency, you should control as much +of your infrastructure as possible. + +### Accept limitations +There are things that you won't be able to do on self-hosted infrastructure. +Rather than compromise another principle to attempt them, accept and work +within these limitations. For example: you will probably not achieve 100% +uptime with your service. Accept this and communicate it to your site visitors + +## Operating System +I choose **Linux** as my operating system. Alternatives to consider, in order of +feasibility, are OpenBSD and Plan9. This guide is focused on Linux because it +is the operating system I am most familiar with, and it is so ubiquitous that +it is easy to find resources, software and guides for configuring Linux. + +In terms of distros, I choose **Alpine Linux**. Alpine Linux is a very minimal +distro. I am both familiar with it and philosophically aligned with it. Alpine +Linux uses musl rather than glibc, which may cause software incompatibilities, +but this is less of a concern for the kind of thing you'll be hosting in the +cloud. Unlike something like Raspberry Pi OS, there won't be a step by step +"how-to" guide for running Alpine on the Raspberry Pi. You'll need to develop a +bit of understanding about your operating system. You are welcome to use +another Linux distro if you'd prefer. + +## TLDs +Unfortunately, a lot of TLDs are operated by [Identity +Digital](https://en.wikipedia.org/wiki/Identity_Digital) or a similar +for-profit company. These companies are rent-seekers: they seek to profit on +the natural abundance of digital infrastructure by creating walled gardens to +exploit. Companies like this exist all throughout the infrastructure of the +internet, and it is difficult to avoid them, but it is something to consider +when choosing a TLD. Preferring TLDs operated as nonprofits (e.g. .org) or at +least as public-private partnerships is a good idea. + +I chose .nyc as my TLD, which is a public-private partnership between the City +of NY and Verisign. + +TODO -- update this section. This may be misinformation or incomplete + +Some TLDs may have difficulty sending email. + +## ISP +Your ISP may or may not "officially" let you self-host a web server or other +traffic on your network. Whether this is actually enforced depends on your +location and ISP. Do whatever research you can on your ISP, and consider a +local ISP if available. + +A better connection is preferable, but you can still self-host with relatively +low upload speeds so long as you lean harder into the third principle (accept +limitations). + +Your ISP may or may not have a static IP adress, in which case you may need to +set up DDNS to handle DNS records. + +## Hardware +In terms of hardware, you should be fine with any hardware that can run Linux. +Personally, I use a Raspberry Pi 3B, because I already have one lying around. +This setup is so light that you can probably get away with something as +lightweight as the Raspberry Pi Zero. + +### Comments on the Raspberry Pi +Installing Alpine Linux on the Raspberry Pi is a bit of a challenge, by which I +mean, you will not find any guide that will tell you exactly everything you +need to do. Instead, you should develop an understanding of your specific needs +and how different installation methods may or may not meet them. + +Raspberry Pis boot from an SD card, and SD card wear is a problem: SD cards an +unreliable storage medium, and may fail for any reason. I have not found +reliable information about SD card wear and how to avoid it, so I tried the SD +card as inherently unstable and make sure to have regular backups. + +## Router +I use *OpenWRT* as my router software. I much prefer this to using proprietary, +commercial software, whose security I cannot vouch for. + +OpenWRT does not auto-update. You'll need to keep on top of security updates +and patch your router regularly. + +### Configuration +I put my publicly-facing infrastructure on a separate VLAN so it should not be +able to access anything else if it is compromised + +## Security +Opening up your network to the public internet means that you'll have to take +security seriously. A misconfiguration can mean compromising your server, and +potentially anything else on your network that the server may have access to. + +I do not have any IOT devices, such as a "smart" TV, thermostat, etc. The only +devices on my network are my home laptop, work laptop, and cell phone. I +recommend this as a general principle, not just if you're operating a home server. + + +## Software +Learn Linux a bit. Be able to navigate around your filesystem and understand +how things are laid out. + +### Firewall + +### Web Server +TBD + diff --git a/src/style.css b/src/style.css @@ -1,20 +1,21 @@ - *:focus { outline: none} ::selection { background: #eee; opacity:1.0; color:#000; padding:10px; /* Safari */ } body { background:#fff; color:#000; overflow-x: hidden; font-family: sans-serif; padding:0; margin:0; } -header { padding: 45px; border-bottom: 1px solid #222; } +header { padding: 25px; border-bottom: 1px solid black; } header a img {} +td { vertical-align: bottom; } + nav { padding: 45px; float: left; } nav details summary { margin-bottom: 30px } nav .site-nav section { line-height: 22px; margin-bottom: 40px;} nav .site-nav section h2 { margin: 20px 0 20px 0; } nav .site-nav section ul { margin: 0px; padding: 0px; } -main { padding: 45px; float:left; max-width:700px; } -main img { width:100%; max-width: 700px; margin-bottom: 15px;} +main { padding: 25px; float:left; max-width:700px; } +main img { max-width: 700px; margin-bottom: 15px;} main > * { max-width: 600px; margin-bottom: 30px } main > h1 { font-size:45px; text-transform: capitalize; display: none} main > h2 { font-size:30px; text-transform: capitalize} @@ -88,12 +89,12 @@ main > table img { max-width: 100%; display: block; margin:20px 0;} main > table tr th { text-align: left; font-weight: bold } main > table tr > * { padding:5px 15px; vertical-align: top;} -footer { line-height: 30px; clear:both; padding:45px; } +footer { line-height: 30px; clear:both; padding:45px; border-top: 1px solid black; } footer hr { margin-bottom: 15px } /* Modular */ -a { color: black } +a { color: blue } ul { margin:0px 0px 30px 0px; } @@ -105,9 +106,8 @@ ul.nobull li {list-style-type: none} /* Theme */ @media (prefers-color-scheme: dark) { - body {background: #000; color: white} - body header a img { filter: invert(1)} - body a { color: white;} + body {background: #1b222c; color: white} + body a { color: #21e6c1;} main > pre { background: white; color:#000} main > code { background:white; color:#000} body select { color: black; background-color: white;} @@ -144,3 +144,7 @@ ul.nobull li {list-style-type: none} nav .site-nav section { width: 100%; } } +/* bonus */ +main a[href^="http"]:where(:not([href*="paritybit.ca/"]))::after{ content: "︎↗" } +figure a::after{ content: "" !important } + diff --git a/templates/footer.html b/templates/footer.html @@ -1,7 +1,8 @@ </main> <footer> -<hr> -alex was here +<a href="infrastructure.html">live</a> from beautiful Brooklyn, NY +<a href="mailto:alex@alexwennerberg.com">email</a> +<a href="https://merveilles.town/@aw">aw@merveilles.town</a> </footer> </body> </html> diff --git a/templates/header.html b/templates/header.html @@ -4,14 +4,8 @@ <meta name="viewport" content="width=device-width"> <link rel="stylesheet" type="text/css" href="./style.css"> </head> - <header><a href='index.html'><img src='icon.png' alt='logo' height='50'></a><h1>alexw.nyc</h1></header> + <header> + <table><tr><td><a href="/"><img src="icon.png" width=80 /></a></td> + <td><h1>alexw.nyc</h1></td></tr></table> + </header> <body> - <nav> - <section class="site-nav"> - <ul> - <li><a href="about.html">About</a></li> - <li><a href="infrastructure.html">Infrastructure</a></li> - </ul> - </section> - </nav> -<main> diff --git a/templates/nav.html b/templates/nav.html @@ -0,0 +1,9 @@ +<nav> +<section class="site-nav"> + <ul> + <li><a href="about.html">About</a></li> + <li><a href="infrastructure.html">Infrastructure</a></li> + </ul> +</section> +</nav> +<main>