From 5eb7f76fa1bb74a96911394e954edce20562d07c Mon Sep 17 00:00:00 2001 From: "Felix W. Dekker" Date: Wed, 6 May 2020 18:21:28 +0200 Subject: [PATCH] Migrate to Eleventy --- .eleventy.js | 13 ++ .gitignore | 121 +++++++++++++++++- _config.yml | 13 -- _layouts/home.html | 17 --- _posts/2016-05-20-Raspi.md | 102 --------------- package-lock.json | Bin 0 -> 203640 bytes package.json | 20 +++ src/main/_data/site.json | 11 ++ .../main/_includes/default.njk | 52 ++++---- src/main/_includes/home.njk | 17 +++ .../post.html => src/main/_includes/post.njk | 2 +- src/main/_posts/2017-03-01-raspi.md | 117 +++++++++++++++++ index.md => src/main/index.md | 0 13 files changed, 318 insertions(+), 167 deletions(-) create mode 100644 .eleventy.js delete mode 100644 _config.yml delete mode 100644 _layouts/home.html delete mode 100644 _posts/2016-05-20-Raspi.md create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/main/_data/site.json rename _layouts/default.html => src/main/_includes/default.njk (51%) create mode 100644 src/main/_includes/home.njk rename _layouts/post.html => src/main/_includes/post.njk (74%) create mode 100644 src/main/_posts/2017-03-01-raspi.md rename index.md => src/main/index.md (100%) diff --git a/.eleventy.js b/.eleventy.js new file mode 100644 index 0000000..0589038 --- /dev/null +++ b/.eleventy.js @@ -0,0 +1,13 @@ +module.exports = (eleventyConfig) => { + eleventyConfig.addFilter("isoDate", dateObj => { + return dateObj.toISOString().substr(0, 10); + }); + + return { + pathPrefix: "/blog/", + dir: { + input: "src/main/", + output: "dist", + } + }; +}; diff --git a/.gitignore b/.gitignore index 2ca8682..e7ea1e8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,117 @@ -_site/ -.sass-cache/ -.jekyll-cache/ -.jekyll-metadata +## Node +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.pnp.* diff --git a/_config.yml b/_config.yml deleted file mode 100644 index bc17499..0000000 --- a/_config.yml +++ /dev/null @@ -1,13 +0,0 @@ -title: FWDekker's blog -description: Felix W. Dekker's blog -email: felix@fwdekker.com -baseurl: -url: https://blog.fwdekker.com/ - -author: Felix W. Dekker -author_home: https://fwdekker.com/ - -license_name: MIT License -license_url: https://git.fwdekker.com/FWDekker/blog/src/branch/master/LICENSE -svn_name: git -svn_url: https://git.fwdekker.com/FWDekker/blog/ diff --git a/_layouts/home.html b/_layouts/home.html deleted file mode 100644 index a6ebc28..0000000 --- a/_layouts/home.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: default ---- - -{% for post in site.posts %} -
-
-

{{ post.title }}

  - {% if post.date %}{{ post.date | date: "%Y-%m-%d" }}{% endif %} - {% if post.excerpt %} - {{ post.excerpt }} - -

- {% endif %} -
-
-{% endfor %} diff --git a/_posts/2016-05-20-Raspi.md b/_posts/2016-05-20-Raspi.md deleted file mode 100644 index e4db16c..0000000 --- a/_posts/2016-05-20-Raspi.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -layout: post -title: Mount a Raspi with Ubuntu ---- - -This post describes how to connect to your Raspberry Pi using the SSHFS (SSH File System) protocol over an Ethernet cable. This will allow you to edit files on the Raspberry Pi from a text editor in Ubuntu. - -All instructions are to be executed from your computer, not from your Raspi, unless noted otherwise. - -Section 1 describes the required one-time configuration. Section 2 describes how to mount the Raspi for the current session. Section 3 describes how to automount the Raspi. - ----------- - -## 1 Installation -This section describes the instructions to be performed before trying to connect to your Raspi. You will only have to follow these instructions once. - -0. Make sure SSH is enabled on your Raspi. If it isn't, follow [this guide](https://www.raspberrypi.org/documentation/remote-access/ssh/). -1. Install the necessary packages. - - $ sudo apt update && sudo apt upgrade - $ sudo apt install network-manager nmap sshfs - -2. Configure the packages. - 1. Open the file `/etc/fuse.conf` with `sudo` in your editor of choice. - 2. Remove the `#` in the line `#user_allow_other`. -3. Create a directory in which you will later mount the Raspi. - - $ sudo mkdir /mnt/raspi - -4. Connect to your Raspi. - 1. Plug the Ethernet cable into your Raspi and into your computer. - 2. Open the program **Network Connections**. - 3. Find the Wired connection for your Raspi. Click **Edit**. - 4. Go to the tab **IPv4 Settings**. Set the **Method** to **Shared to other computers**. - 5. Save your changes, and close Network Connections. -5. Reboot your computer. - ----------- - -## 2 Connecting -These are the instructions for connecting to your Raspi. You will have to repeat these instructions after each reboot, unless you follow the instructions in section 3. -Note that only those blocks that begin with `$` are expected input. Example output will be given directly after it in a separate code block. - -1. Find the broadcast address of the Ethernet connection. - - $ /sbin/ifconfig enp0s25 | grep "Bcast" | awk -F: '{print $3}' | awk '{print $1}' - - - - 10.42.0.255/24 - -2. Use the broadcast address to find the IP address of the Raspi. Add the `/24` part to the IP address, even if it was not returned in the previous step. The last IP address displayed in the output is the address of your Raspi. - - $ nmap -n -sP 10.42.0.255/24 - - - - Starting Nmap 7.01 ( https://nmap.org ) at 2017-03-01 21:42 CET Nmap scan report for 10.42.0.1 - Host is up (0.00036s latency). - Nmap scan report for 10.42.0.140 - Host is up (0.0010s latency). - Nmap done: 256 IP addresses (2 hosts up) scanned in 2.41 seconds - -3. Mount the Raspi with SSHFS. Replace the IP address in the command with the one you found in the previous step. - - $ sshfs -o allow_other,default_permissions pi@10.42.0.140:/ /mnt/raspi - -4. Enjoy! - -### Disconnecting -To unmount the Raspi: - - $ umount /mnt/raspi - -If you are unable to unmount because you receive errors on input/output errors, try: - - $ sudo umount -l /mnt/raspi - ----------- - -## 3 Automounting -I would recommend trying out the instructions in section 2 before the instructions in this section. Some of the information you will gather in section 2 is necessary in this section. -Because it is possible that the IP address of the Raspi changes, you may need to reconfigure the automounting at some point. - -0. Log in as root: `sudo -i`. -1. If you do not have a key pair yet, generate one. You can generate it wherever you want. If you don't know if you have a key pair, enter this command anyway and it will warn you that you have on already. - - $ ssh-keygen -t rsa - -2. Copy the public key of the Raspi to the key pair. Replace the IP in the command with the one you found in part 2. - - $ ssh-copy-id pi@10.42.0.140 - -3. Verify that you do not need to enter your password when you use `ssh pi@10.42.0.140`. -4. Open the file `/etc/fstab` in your editor of choice. -5. Add the following to the bottom of the file (this is **one** line): - - pi@10.42.0.140:/ /mnt/raspi fuse.sshfs allow_other,_netdev - - If you decided in step 1 not to save the key pair in the default location, add `,IdentityFile=` at the end of the line. - -7. Reboot your computer to verify that this works as intended. Note that using `sudo mount -a` is **not** the same as rebooting. diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..1a7325246beb36289796016b9d114b8ece5099a6 GIT binary patch literal 203640 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%0DwsVNDnMiDhvN{<+y}^CI#k9H{ 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

sf?A^kVp2(c=it=L#xB1W^P9FfE%4%r9XDph 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 JZ~yUc{|7Wj+Nl5l literal 0 HcmV?d00001 diff --git a/package.json b/package.json new file mode 100644 index 0000000..01957ad --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "blog", + "version": "1.1.1", + "description": "Felix W. Dekker's personal blog.", + "author": "Felix W. Dekker", + "browser": "dist/bundle.js", + "repository": { + "type": "git", + "url": "git@git.fwdekker.com:FWDekker/blog.git" + }, + "private": true, + "scripts": { + "build": "npx @11ty/eleventy", + "build:server": "npx @11ty/eleventy --serve" + }, + "dependencies": { + "@fwdekker/template": "^0.0.13", + "@11ty/eleventy": "^0.10.0" + } +} diff --git a/src/main/_data/site.json b/src/main/_data/site.json new file mode 100644 index 0000000..cd5dfcc --- /dev/null +++ b/src/main/_data/site.json @@ -0,0 +1,11 @@ +{ + "url": "https://fwdekker.com/blog/", + "title": "FWDekker's blog", + "description": "Felix W. Dekker's blog", + "author": "Felix W. Dekker", + "author_home": "https://fwdekker.com/", + "license_name": "MIT License", + "license_url": "https://git.fwdekker.com/FWDekker/blog/src/branch/master/LICENSE", + "svn_name": "git", + "svn_url": "https://git.fwdekker.com/FWDekker/blog/" +} diff --git a/_layouts/default.html b/src/main/_includes/default.njk similarity index 51% rename from _layouts/default.html rename to src/main/_includes/default.njk index b42c236..5a391f6 100644 --- a/_layouts/default.html +++ b/src/main/_includes/default.njk @@ -23,41 +23,33 @@ text-align: justify; text-justify: inter-word; } + ol { + list-style: decimal outside; + } -

- -
-
-

{{ site.title }}

- {% if page.title %} -

{{ page.title }}

  - {% if page.date %}{{ page.date | date: "%Y-%m-%d" }}{% endif %} - {% endif %} -
-
- - - +
+ +
- {{ content }} + {% if title %} +

{{ site.title }}

+ {% else %} +

{{ site.title }}

+ {% endif %} + + {% if title %} +

{{ title }}

  + {% if date %}{{ date | isoDate }}{% endif %} + {% endif %}
+
- - - {% if site.author or site.license or site.git %} - - {% endif %} -
+ +
+ {{ content | safe }} +
+
diff --git a/src/main/_includes/home.njk b/src/main/_includes/home.njk new file mode 100644 index 0000000..29849a1 --- /dev/null +++ b/src/main/_includes/home.njk @@ -0,0 +1,17 @@ +--- +layout: default +--- + +{% for post in collections.all %} +
+
+ {% if post %} +

{{ post.data.title }}

  + {% if post.data.date %}{{ post.data.date | isoDate }}{% endif %} + {% if post.data.excerpt %} +

{{ post.data.excerpt }}

+ {% endif %} + {% endif %} +
+
+{% endfor %} diff --git a/_layouts/post.html b/src/main/_includes/post.njk similarity index 74% rename from _layouts/post.html rename to src/main/_includes/post.njk index 45c3470..81b66bf 100644 --- a/_layouts/post.html +++ b/src/main/_includes/post.njk @@ -4,6 +4,6 @@ layout: default
- {{ content }} + {{ content | safe }}
diff --git a/src/main/_posts/2017-03-01-raspi.md b/src/main/_posts/2017-03-01-raspi.md new file mode 100644 index 0000000..87a1b2e --- /dev/null +++ b/src/main/_posts/2017-03-01-raspi.md @@ -0,0 +1,117 @@ +--- +title: Mount a Raspi with Ubuntu +layout: post +date: 2017-03-01 +permalink: mount-a-raspi-with-ubuntu/ +excerpt: How to connect to your Raspberry Pi over an Ethernet cable. +--- + +This post describes how to connect to your Raspberry Pi using the SSHFS (SSH File System) protocol over an Ethernet +cable. +This will allow you to edit files on the Raspberry Pi from a text editor in Ubuntu. + +All instructions are to be executed from your computer, not from your Raspi, unless noted otherwise. + +Section 1 describes the required one-time configuration. +Section 2 describes how to mount the Raspi for the current +session. +Section 3 describes how to automount the Raspi. + +---------- + +## 1 Installation +This section describes the instructions to be performed before trying to connect to your Raspi. +You will only have to follow these instructions once. + +0. Make sure SSH is enabled on your Raspi. + If it isn't, follow [this guide](https://www.raspberrypi.org/documentation/remote-access/ssh/). +1. Install the necessary packages. + + $ sudo apt update && sudo apt upgrade + $ sudo apt install network-manager nmap sshfs + +2. Configure the packages. + 1. Open the file `/etc/fuse.conf` with `sudo` in your editor of choice. + 2. Remove the `#` in the line `#user_allow_other`. +3. Create a directory in which you will later mount the Raspi. + + $ sudo mkdir /mnt/raspi + +4. Connect to your Raspi. + 1. Plug the Ethernet cable into your Raspi and into your computer. + 2. Open the program **Network Connections**. + 3. Find the Wired connection for your Raspi. Click **Edit**. + 4. Go to the tab **IPv4 Settings**. Set the **Method** to **Shared to other computers**. + 5. Save your changes, and close Network Connections. +5. Reboot your computer. + +---------- + +## 2 Connecting +These are the instructions for connecting to your Raspi. +You will have to repeat these instructions after each reboot, unless you follow the instructions in Section 3. +Note that only those blocks that begin with `$` are expected input. +Example output will be given directly after it in a separate code block. + +0. Find the broadcast address of the Ethernet connection. + + $ /sbin/ifconfig enp0s25 | grep "Bcast" | awk -F: '{print $3}' | awk '{print $1}' + 10.42.0.255/24 + +1. Use the broadcast address to find the IP address of the Raspi. + Add the `/24` part to the IP address, even if it was not returned during the previous step. + The last IP address displayed in the output is the address of your Raspi. + + $ nmap -n -sP 10.42.0.255/24 + Starting Nmap 7.01 ( https://nmap.org ) at 2017-03-01 21:42 CET Nmap scan report for 10.42.0.1 + Host is up (0.00036s latency). + Nmap scan report for 10.42.0.140 + Host is up (0.0010s latency). + Nmap done: 256 IP addresses (2 hosts up) scanned in 2.41 seconds + +2. Mount the Raspi with SSHFS. Replace the IP address in the command with the one you found in the previous step. + + $ sshfs -o allow_other,default_permissions pi@10.42.0.140:/ /mnt/raspi + +3. Enjoy! + +### Disconnecting +To unmount the Raspi: + + $ umount /mnt/raspi + +If you are unable to unmount because you receive errors on input/output errors, try: + + $ sudo umount -l /mnt/raspi + +---------- + +## 3 Auto-mounting +I would recommend trying out the instructions in Section 2 before the instructions in this section. +Some information you will gather in Section 2 is necessary in this section. +Because it is possible that the IP address of the Raspi changes, you may need to reconfigure the auto-mounting at some +point. + +0. Log in as root: `sudo -i`. +1. If you do not have a key pair yet, generate one. + You can generate it wherever you want. + If you don't know if you have a key pair, enter this command anyway and it will warn you that you have on already. + + $ ssh-keygen -t rsa + +2. Copy the public key of the Raspi to the key pair. + Replace the IP in the command with the one you found in part 2. + + $ ssh-copy-id pi@10.42.0.140 + +3. Verify that you do not need to enter your password when you use `ssh pi@10.42.0.140`. +4. Open the file `/etc/fstab` in your editor of choice. +5. Add the following to the bottom of the file (this is **one** line): + + pi@10.42.0.140:/ /mnt/raspi fuse.sshfs allow_other,_netdev + + If you decided in step 1 not to save the key pair in the default location, add `,IdentityFile=` + at the end of the line. + +7. Reboot your computer to verify that this works as intended. + Note that using `sudo mount -a` is **not** the same as rebooting. diff --git a/index.md b/src/main/index.md similarity index 100% rename from index.md rename to src/main/index.md