generate images

This commit is contained in:
Amolith 2023-03-31 17:02:41 -04:00
parent 8e8e4601d3
commit 279640f995
Signed by: Amolith
GPG Key ID: 8AE30347CE28D101
19 changed files with 99 additions and 65 deletions

View File

@ -2,5 +2,5 @@
title: "{{ replace .Name "-" " " | title }}" title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }} date: {{ .Date }}
draft: true draft: true
cover: ./cover.png
--- ---

View File

@ -1,6 +1,7 @@
--- ---
title: Welcome! title: Welcome!
layout: home layout: home
cover: ./cover.png
--- ---
## Welcome! ## Welcome!

View File

@ -1,6 +1,7 @@
--- ---
layout: post layout: post
title: Email & privacy/security concerns title: Email & privacy/security concerns
cover: ./cover.png
date: 2020-03-21 01:46 -0400 date: 2020-03-21 01:46 -0400
draft: true draft: true
--- ---

View File

@ -1,6 +1,7 @@
--- ---
title: "A perfect email setup (for me)" title: "A perfect email setup (for me)"
author: ["Amolith"] author: ["Amolith"]
cover: ./cover.png
lastmod: 2023-01-27T13:00:36-05:00 lastmod: 2023-01-27T13:00:36-05:00
tags: ["Email", "Workflow"] tags: ["Email", "Workflow"]
categories: ["Technology"] categories: ["Technology"]

View File

@ -1,6 +1,7 @@
--- ---
title: "(Ab)using mesh networks for easy remote support" title: "(Ab)using mesh networks for easy remote support"
author: ["Amolith"] author: ["Amolith"]
cover: ./cover.png
date: 2021-11-01T02:51:00-04:00 date: 2021-11-01T02:51:00-04:00
lastmod: 2023-01-18T09:33:39-05:00 lastmod: 2023-01-18T09:33:39-05:00
tags: ["Mesh networking", "Open source", "Remote support"] tags: ["Mesh networking", "Open source", "Remote support"]
@ -27,7 +28,6 @@ networking tool created by Slack, [X11vnc,](https://libvnc.github.io/) a very mi
distribution, to set up a scalable, secure, and simple setup reminiscent distribution, to set up a scalable, secure, and simple setup reminiscent
of products like RealVNC. of products like RealVNC.
## Nebula {#nebula} ## Nebula {#nebula}
The first part of our stack is Nebula, the tool that creates a network The first part of our stack is Nebula, the tool that creates a network
@ -63,7 +63,6 @@ It allows any node to connect with any other node on any network from
anywhere in the world, as long as one lighthouse is accessible that anywhere in the world, as long as one lighthouse is accessible that
knows the connection details for both peers. knows the connection details for both peers.
### Getting started {#getting-started} ### Getting started {#getting-started}
The _best_ resource is [the official documentation,](https://github.com/slackhq/nebula) but I'll describe the The _best_ resource is [the official documentation,](https://github.com/slackhq/nebula) but I'll describe the
@ -77,7 +76,6 @@ purchase. [Hetzner](https://www.hetzner.com/cloud) (referral: `ckGrk4J45WdN`) or
`36nc15758387844`) would also be very good options; I've used them all and `36nc15758387844`) would also be very good options; I've used them all and
am very comfortable recommending them. am very comfortable recommending them.
### Creating a Certificate Authority {#creating-a-certificate-authority} ### Creating a Certificate Authority {#creating-a-certificate-authority}
After picking a device with a static IP address, it needs to be set up After picking a device with a static IP address, it needs to be set up
@ -97,7 +95,6 @@ CA's name in a later section. If you have your own domain, feel free to
use that instead; it doesn't really matter what domain is used as long use that instead; it doesn't really matter what domain is used as long
as the format is valid. as the format is valid.
### Generating lighthouse credentials {#generating-lighthouse-credentials} ### Generating lighthouse credentials {#generating-lighthouse-credentials}
Now that we have the CA's `.crt` and `.key` files, we can create and sign Now that we have the CA's `.crt` and `.key` files, we can create and sign
@ -114,12 +111,11 @@ of the following private IP ranges, I just happened to use `192.168.100.X`
for my network. for my network.
| IP Range | Number of addresses | | IP Range | Number of addresses |
|-------------------------------|---------------------| | ----------------------------- | ------------------- |
| 10.0.0.0 10.255.255.255 | 16 777 216 | | 10.0.0.0 10.255.255.255 | 16 777 216 |
| 172.16.0.0 172.31.255.255 | 10 48 576 | | 172.16.0.0 172.31.255.255 | 10 48 576 |
| 192.168.0.0 192.168.255.255 | 65 536 | | 192.168.0.0 192.168.255.255 | 65 536 |
### Creating a config file {#creating-a-config-file} ### Creating a config file {#creating-a-config-file}
The next step is creating our lighthouse's config file. The reference The next step is creating our lighthouse's config file. The reference
@ -134,10 +130,10 @@ to identify nodes by their configs. Once we copy everything over to the
server, we'll add the proper paths to the `cert` and `key` fields. server, we'll add the proper paths to the `cert` and `key` fields.
```yaml ```yaml
pki: pki:
ca: /etc/nebula/ca.crt ca: /etc/nebula/ca.crt
cert: /etc/nebula/ cert: /etc/nebula/
key: /etc/nebula/ key: /etc/nebula/
``` ```
The next section is for identifying and mapping your lighthouses. This The next section is for identifying and mapping your lighthouses. This
@ -148,8 +144,8 @@ public IP address is. If you've used a different private network range,
those changes need to be reflected here as well. those changes need to be reflected here as well.
```yaml ```yaml
static_host_map: static_host_map:
"192.168.100.1": ["XX.XX.XX.XX:4242"] "192.168.100.1": ["XX.XX.XX.XX:4242"]
``` ```
Below, we're specifying how the node should behave. It is a lighthouse, Below, we're specifying how the node should behave. It is a lighthouse,
@ -160,14 +156,14 @@ is set to `true` though), and this lighthouse should not send reports to
other lighthouses. The bit about DNS will be discussed later. other lighthouses. The bit about DNS will be discussed later.
```yaml ```yaml
lighthouse: lighthouse:
am_lighthouse: true am_lighthouse: true
serve_dns: true serve_dns: true
dns: dns:
host: 0.0.0.0 host: 0.0.0.0
port: 53 port: 53
interval: 60 interval: 60
hosts: hosts:
``` ```
The next bit is about [hole punching](https://en.wikipedia.org/wiki/Hole_punching_%28networking%29), also called _NAT punching_, _NAT The next bit is about [hole punching](https://en.wikipedia.org/wiki/Hole_punching_%28networking%29), also called _NAT punching_, _NAT
@ -180,10 +176,10 @@ connected to. We want to make sure devices are available no matter where
they are. they are.
```yaml ```yaml
punchy: punchy:
punch: true punch: true
respond: true respond: true
delay: 1s delay: 1s
``` ```
`cipher` is a big one. The value _must_ be identical on _all_ nodes _and_ `cipher` is a big one. The value _must_ be identical on _all_ nodes _and_
@ -194,7 +190,7 @@ that you won't need to work with _anything_ else, I recommend leaving it
set to `chachapoly`. set to `chachapoly`.
```yaml ```yaml
cipher: chachapoly cipher: chachapoly
``` ```
The last bit I modify is the firewall section. I leave most everything The last bit I modify is the firewall section. I leave most everything
@ -207,14 +203,13 @@ make those changes.
Again, I _remove_ the following bit from the config. Again, I _remove_ the following bit from the config.
```yaml ```yaml
- port: 443 - port: 443
proto: tcp proto: tcp
groups: groups:
- laptop - laptop
- home - home
``` ```
### Setting the lighthouse up {#setting-the-lighthouse-up} ### Setting the lighthouse up {#setting-the-lighthouse-up}
We've got the config, the certificates, and the keys. Now we're ready to We've got the config, the certificates, and the keys. Now we're ready to
@ -241,10 +236,10 @@ The next step is copying the config, keys, and certificates to the
server. I use `rsync` but you can use whatever you're comfortable with. server. I use `rsync` but you can use whatever you're comfortable with.
The following four files need to be uploaded to the server. The following four files need to be uploaded to the server.
- `config.yml` - `config.yml`
- `ca.crt` - `ca.crt`
- `buyvm.lh.nebula.example.com.crt` - `buyvm.lh.nebula.example.com.crt`
- `buyvm.lh.nebula.example.com.key` - `buyvm.lh.nebula.example.com.key`
With `rsync`, that would look something like this. Make sure `rsync` is also With `rsync`, that would look something like this. Make sure `rsync` is also
installed on the VPS before attempting to run the commands though; installed on the VPS before attempting to run the commands though;
@ -268,10 +263,10 @@ Edit the config file and ensure the `pki:` section looks something like
this, modified to match your hostnames of course. this, modified to match your hostnames of course.
```yaml ```yaml
pki: pki:
ca: /etc/nebula/ca.crt ca: /etc/nebula/ca.crt
cert: /etc/nebula/buyvm.lh.nebula.example.com.crt cert: /etc/nebula/buyvm.lh.nebula.example.com.crt
key: /etc/nebula/buyvm.lh.nebula.example.com.key key: /etc/nebula/buyvm.lh.nebula.example.com.key
``` ```
Run the following command to make sure everything works properly. Run the following command to make sure everything works properly.
@ -305,7 +300,6 @@ options.
We're almost done! We're almost done!
### Setting individual nodes up {#setting-individual-nodes-up} ### Setting individual nodes up {#setting-individual-nodes-up}
This process is almost exactly the same as setting lighthouses up. All This process is almost exactly the same as setting lighthouses up. All
@ -337,15 +331,15 @@ is one of the lighthouses it should report to and query from. If you
have more than one lighthouse, add them to the list as well. have more than one lighthouse, add them to the list as well.
```yaml ```yaml
lighthouse: lighthouse:
am_lighthouse: false am_lighthouse: false
#serve_dns: false #serve_dns: false
#dns: #dns:
#host: 0.0.0.0 #host: 0.0.0.0
#port: 53 #port: 53
interval: 60 interval: 60
hosts: hosts:
- "192.168.100.1" - "192.168.100.1"
``` ```
The other bit that should be modified is the `firewall:` section and this The other bit that should be modified is the `firewall:` section and this
@ -364,21 +358,20 @@ on _your_ node allows any outbound connection, you'll be able to access
other nodes. other nodes.
```yaml ```yaml
- port: 5900 - port: 5900
proto: tcp proto: tcp
groups: groups:
- support - support
- port: 22 - port: 22
proto: tcp proto: tcp
groups: groups:
- support - support
``` ```
The certs, key, config, binary, and systemd service should all be copied The certs, key, config, binary, and systemd service should all be copied
to the same places on all of these nodes as on the lighthouse. to the same places on all of these nodes as on the lighthouse.
## X11vnc {#x11vnc} ## X11vnc {#x11vnc}
_Alright._ The hardest part is finished. Now on to setting `x11vnc` up on _Alright._ The hardest part is finished. Now on to setting `x11vnc` up on
@ -410,7 +403,6 @@ distribution's documentation, or ask someone else that might know.
After adding it to the startup application, log out and back in to make After adding it to the startup application, log out and back in to make
sure it's running in the background. sure it's running in the background.
## Remmina {#remmina} ## Remmina {#remmina}
Now that our network is functioning properly and the VNC server is set Now that our network is functioning properly and the VNC server is set
@ -434,7 +426,6 @@ Save and test the connection!
If all goes well and you see the other device's desktop, you're done If all goes well and you see the other device's desktop, you're done
with the VNC section! Now on to SSH. with the VNC section! Now on to SSH.
## SSH {#ssh} ## SSH {#ssh}
First off, make sure `openssh-server` is installed on the remote node; First off, make sure `openssh-server` is installed on the remote node;
@ -520,7 +511,6 @@ Now you can just run `ssh USER` to get in. If you duplicate the above
block for all of the remote nodes you need to support, you'll only have block for all of the remote nodes you need to support, you'll only have
to remember the person's username to SSH into their machine. to remember the person's username to SSH into their machine.
## Going further with Nebula {#going-further-with-nebula} ## Going further with Nebula {#going-further-with-nebula}
This section explains why we used FQDNs in the certs and why the DNS This section explains why we used FQDNs in the certs and why the DNS

View File

@ -1,6 +1,7 @@
--- ---
title: "Audacity and the telemetry pull request" title: "Audacity and the telemetry pull request"
author: ["Amolith"] author: ["Amolith"]
cover: ./cover.png
lastmod: 2023-01-27T13:00:37-05:00 lastmod: 2023-01-27T13:00:37-05:00
tags: ["Open source culture", "Audio editing", "Music", "Drama"] tags: ["Open source culture", "Audio editing", "Music", "Drama"]
categories: ["Technology"] categories: ["Technology"]

View File

@ -2,6 +2,7 @@
title: "The case for dopamine dispensers" title: "The case for dopamine dispensers"
subtitles: "Likes and clicks and green badges and comments and analytics and ____ can be helpful, actually" subtitles: "Likes and clicks and green badges and comments and analytics and ____ can be helpful, actually"
author: ["Amolith"] author: ["Amolith"]
cover: ./cover.png
published: 2023-02-26T23:09:00-05:00 published: 2023-02-26T23:09:00-05:00
categories: ["Technology"] categories: ["Technology"]
tags: ["TODO"] tags: ["TODO"]

View File

@ -1,6 +1,7 @@
--- ---
title: "Email can be pleasant, but like all good things, it takes work" title: "Email can be pleasant, but like all good things, it takes work"
author: ["Amolith"] author: ["Amolith"]
cover: ./cover.png
lastmod: 2023-01-27T13:00:36-05:00 lastmod: 2023-01-27T13:00:36-05:00
categories: ["Meta"] categories: ["Meta"]
draft: true draft: true

View File

@ -1,6 +1,7 @@
--- ---
title: "Focus intentionally" title: "Focus intentionally"
author: Amolith author: Amolith
cover: ./cover.png
lastmod: 2022-04-23T21:12:29-04:00 lastmod: 2022-04-23T21:12:29-04:00
categories: ["Meta"] categories: ["Meta"]
draft: true draft: true

View File

@ -1,6 +1,7 @@
--- ---
title: "FreeBSD quirks on the Framework laptop" title: "FreeBSD quirks on the Framework laptop"
author: ["Amolith"] author: ["Amolith"]
cover: ./cover.png
lastmod: 2022-04-23T21:14:54-04:00 lastmod: 2022-04-23T21:14:54-04:00
tags: ["FreeBSD", "Framework"] tags: ["FreeBSD", "Framework"]
categories: ["Technology"] categories: ["Technology"]

View File

@ -1,6 +1,8 @@
--- ---
draft: true draft: true
cover: ./cover.png
--- ---
\*\* TODO Making yourself overly available \*\* TODO Making yourself overly available
\*\*\* References \*\*\* References

View File

@ -1,6 +1,7 @@
--- ---
title: "Privacy-respecting analytics" title: "Privacy-respecting analytics"
date: 2023-03-06T12:23:00-05:00 date: 2023-03-06T12:23:00-05:00
cover: ./cover.png
categories: ["Technology"] categories: ["Technology"]
tags: ["Privacy", "Web"] tags: ["Privacy", "Web"]
draft: false draft: false

View File

@ -2,6 +2,7 @@
title: "Pull vs push: intentional feeds" title: "Pull vs push: intentional feeds"
date: 2023-03-18T00:43:55-04:00 date: 2023-03-18T00:43:55-04:00
draft: true draft: true
cover: ./cover.png
--- ---
When bored, my peers tend to open their preferred social media app and When bored, my peers tend to open their preferred social media app and

View File

@ -1,6 +1,7 @@
--- ---
title: "Pull vs push: intentional notifications" title: "Pull vs push: intentional notifications"
date: 2023-03-20T12:15:00-04:00 date: 2023-03-20T12:15:00-04:00
cover: ./cover.png
draft: false draft: false
toc: true toc: true
categories: ["Technology"] categories: ["Technology"]

View File

@ -1,5 +1,6 @@
--- ---
title: "Stop using gmail" title: "Stop using gmail"
date: 2023-01-27T13:04:33-05:00 date: 2023-01-27T13:04:33-05:00
cover: ./cover.png
draft: true draft: true
--- ---

View File

@ -1,6 +1,7 @@
--- ---
title: 'Catchy title about Supernote being "the new paper"' title: 'Catchy title about Supernote being "the new paper"'
author: ["Amolith"] author: ["Amolith"]
cover: ./cover.png
lastmod: 2023-01-27T13:00:37-05:00 lastmod: 2023-01-27T13:00:37-05:00
tags: ["Supernote", "Writing", "Productivity", "Organisation"] tags: ["Supernote", "Writing", "Productivity", "Organisation"]
categories: ["Technology"] categories: ["Technology"]

View File

@ -2,6 +2,7 @@
title: "Projects" title: "Projects"
description: "Projects I'm currently working or have (mostly) finished" description: "Projects I'm currently working or have (mostly) finished"
date: 2023-01-17T13:42:01-05:00 date: 2023-01-17T13:42:01-05:00
cover: ./cover.png
type: generic type: generic
--- ---

View File

@ -2,6 +2,7 @@
title: "Uses" title: "Uses"
description: "Just a big page describing what I use that I think is notable" description: "Just a big page describing what I use that I think is notable"
date: 2021-08-18T22:57:48-04:00 date: 2021-08-18T22:57:48-04:00
cover: ./cover.png
type: generic type: generic
--- ---

View File

@ -66,9 +66,36 @@ images:
echo -e '\033[1m# Checking whether there are cover images to generate ...\033[0m' echo -e '\033[1m# Checking whether there are cover images to generate ...\033[0m'
echo -e '\033[1m# \033[4mTODO\033[0m\033[1m: Generate covers for posts that have changed or that have no cover\033[0m' published=$(grep -ilr --include \*.md "draft: false" content/posts)
# wkhtmltoimage -f png --width 1200 --height 630 /tmp/file.html /tmp/file.png
# optipng -o4 file.png todo=""
# Iterate through all non-drafts
for path in $published
do
filename=$(basename "$path")
name=$(echo "${filename%.*}")
# Check whether target doc is newer than Markdown file
if [ "$path" -nt "public/$name/cover.png" ]
then
todo+="$path "
fi
done
if [ -z "$todo" ]
then
echo "No covers to generate"
exit 0
else
for path in $todo
do
filename=$(basename "$path")
name=$(echo "${filename%.*}")
echo "Generating cover for $name"
p2c -i $path -o public/$name/cover.png
done
fi
# Run development server # Run development server
serve: serve: