generate images
This commit is contained in:
parent
8e8e4601d3
commit
279640f995
|
@ -2,5 +2,5 @@
|
||||||
title: "{{ replace .Name "-" " " | title }}"
|
title: "{{ replace .Name "-" " " | title }}"
|
||||||
date: {{ .Date }}
|
date: {{ .Date }}
|
||||||
draft: true
|
draft: true
|
||||||
|
cover: ./cover.png
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
title: Welcome!
|
title: Welcome!
|
||||||
layout: home
|
layout: home
|
||||||
|
cover: ./cover.png
|
||||||
---
|
---
|
||||||
|
|
||||||
## Welcome!
|
## Welcome!
|
||||||
|
|
|
@ -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
|
||||||
---
|
---
|
||||||
|
|
|
@ -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"]
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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"]
|
||||||
|
|
|
@ -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"]
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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"]
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
---
|
---
|
||||||
draft: true
|
draft: true
|
||||||
|
cover: ./cover.png
|
||||||
---
|
---
|
||||||
|
|
||||||
\*\* TODO Making yourself overly available
|
\*\* TODO Making yourself overly available
|
||||||
|
|
||||||
\*\*\* References
|
\*\*\* References
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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"]
|
||||||
|
|
|
@ -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
|
||||||
---
|
---
|
||||||
|
|
|
@ -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"]
|
||||||
|
|
|
@ -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
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
33
justfile
33
justfile
|
@ -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:
|
||||||
|
|
Loading…
Reference in New Issue