From 4c71de46a9be07b9e0fa2ad028ec8f5cf781376c Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 21 Jan 2024 20:42:55 -0600 Subject: [PATCH 01/28] update post --- content/posts/deploy-hugo-neocities-github-actions/index.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/content/posts/deploy-hugo-neocities-github-actions/index.md b/content/posts/deploy-hugo-neocities-github-actions/index.md index 2306c4d..a9dca3e 100644 --- a/content/posts/deploy-hugo-neocities-github-actions/index.md +++ b/content/posts/deploy-hugo-neocities-github-actions/index.md @@ -14,9 +14,9 @@ tags: --- I came across [Neocities](https://neocities.org) many months ago, and got really excited by the premise: a free web host with the mission to bring back the *"fun, creativity and independence that made the web great."* I spent a while scrolling through the [gallery](https://neocities.org/browse) of personal sites and was amazed by both the nostalgic vibes and the creativity on display. It's like a portal back to when the web was fun. Neocities seemed like something I wanted to be a part of, so I signed up for an account... and soon realized that I didn't *really* want to go back to crafting artisinal HTML by hand like I did in the early '00s. I didn't see an easy way to leverage my preferred static site generator[^lazy] so I filed it away and moved on. -[^lazy]: Also I'm kind of lazy, and not actually much of a web design person anyway. +[^lazy]: Also I'm kind of lazy, and not actually very good at web design anyway. I mean, you've seen my work. -Until yesterday, when I saw [Sophie](https://social.lol/@sophie)'s post, [How I deploy my Eleventy site to Neocities](https://localghost.dev/blog/how-i-deploy-my-eleventy-site-to-neocities/). I hadn't realized that Neocities had an [API](https://neocities.org/api), or that there was a [deploy-to-neocities](https://github.com/bcomnes/deploy-to-neocities) GitHub Action which uses that API to push content to Neocities. With that new-to-me information, I thought I'd give Neocities another try - a real one this time. +Until yesterday, when I saw a post from [Sophie](https://social.lol/@sophie) on [How I deploy my Eleventy site to Neocities](https://localghost.dev/blog/how-i-deploy-my-eleventy-site-to-neocities/). I hadn't realized that Neocities had an [API](https://neocities.org/api), or that there was a [deploy-to-neocities](https://github.com/bcomnes/deploy-to-neocities) GitHub Action which uses that API to push content to Neocities. With that new-to-me information, I thought I'd give Neocities another try - a real one this time. I'd been hosting this site on Netlify's free plan [for a couple of year](/hello-hugo/) and haven't really had any problems. But I saw Neocities as a better vision of the internet, and I wanted to be a part of that[^passion]. So last night I signed up for the $5/month [Neocities Supporter](https://neocities.org/supporter) plan, which comes with support for custom domains and more bandwidth than even a paid Netlify plan. @@ -33,8 +33,10 @@ So after some trial and error, I came up with this workflow: name: Deploy to Neocities on: + # Daily build to catch any future-dated posts schedule: - cron: 0 13 * * * + # Build on pushes to the main branch only push: branches: - main From 208b3c19c3458f9f3d764320526723e1105615a7 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 21 Jan 2024 21:16:15 -0600 Subject: [PATCH 02/28] style back-to-top with css --- layouts/partials/footer.html | 6 +----- static/css/custom.css | 12 +++++++++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index 0b70a07..d5cea51 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -6,11 +6,7 @@ {{ $jsToTop := resources.Get "js/back-to-top.js" | minify }} - + {{ partial "search-index.html" .}} diff --git a/static/css/custom.css b/static/css/custom.css index b37b41f..9b745d8 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -260,7 +260,6 @@ form button { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); grid-gap: 0.5rem; - /* justify-content: center; */ margin: 0.5rem 0; } @@ -333,4 +332,15 @@ button.tinylytics_kudos:hover { .frontmatter_tags { font-size: 0.8rem; color: var(--off-fg); +} + +/* back-to-top styling */ +#back-to-top { + background: var(--inner-bg); + height: 56px; + width: 56px; +} + +#back-to-top svg { + fill: var(--link); } \ No newline at end of file From 0f84fc562a103df097c089a4a228f33099768cab Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 21 Jan 2024 21:21:30 -0600 Subject: [PATCH 03/28] clean up footnote backlink styling --- static/css/custom.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/static/css/custom.css b/static/css/custom.css index 9b745d8..d34c48b 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -343,4 +343,9 @@ button.tinylytics_kudos:hover { #back-to-top svg { fill: var(--link); +} + +/* footnote link styling */ +.footnote-backref { + text-decoration: none; } \ No newline at end of file From a306d217edae810f3c6b3c87e16f2f6272a7b010 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 21 Jan 2024 21:22:42 -0600 Subject: [PATCH 04/28] improve contrast --- static/css/palettes/runtimeterror.css | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/static/css/palettes/runtimeterror.css b/static/css/palettes/runtimeterror.css index 3838a79..641aadc 100644 --- a/static/css/palettes/runtimeterror.css +++ b/static/css/palettes/runtimeterror.css @@ -2,10 +2,10 @@ */ :root { - --base00: #181818; /* bg */ - --base01: #282828; /* off-bg */ - --base02: #383838; /* inner-bg */ - --base03: #585858; /* muted */ + --base00: #090909; /* bg */ + --base01: #1c1c1c; /* off-bg */ + --base02: #292929; /* inner-bg */ + --base03: #6d6c6c; /* muted */ --base04: #abaaaa; /* off-fg */ --base05: #d8d8d8; /* fg */ --base06: #cfcfcf; /* code */ @@ -13,9 +13,9 @@ --base08: #ab4642; /* root prompt */ --base09: #dc9656; --base0A: #f7ca88; /* highlight */ - --base0B: #772a28; /* logo */ + --base0B: #682523; /* logo */ --base0C: #ab2321; /* hover */ - --base0D: #c45a5a; /* link */ + --base0D: #d36060; /* link */ --base0E: #ba8baf; --base0F: #a16946; } From 48bb5addd2a9c5d36cfd9973fbc0244ed72102b2 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 21 Jan 2024 21:41:18 -0600 Subject: [PATCH 05/28] make code green --- static/css/palettes/runtimeterror.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/css/palettes/runtimeterror.css b/static/css/palettes/runtimeterror.css index 641aadc..76e566e 100644 --- a/static/css/palettes/runtimeterror.css +++ b/static/css/palettes/runtimeterror.css @@ -8,7 +8,7 @@ --base03: #6d6c6c; /* muted */ --base04: #abaaaa; /* off-fg */ --base05: #d8d8d8; /* fg */ - --base06: #cfcfcf; /* code */ + --base06: #75f558; /* code */ --base07: #5f8700; /* user prompt */ --base08: #ab4642; /* root prompt */ --base09: #dc9656; From 209ef016559990ce24efa93cfe998d2d4a2979cc Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 21 Jan 2024 21:43:50 -0600 Subject: [PATCH 06/28] post tweaks --- .../posts/deploy-hugo-neocities-github-actions/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/posts/deploy-hugo-neocities-github-actions/index.md b/content/posts/deploy-hugo-neocities-github-actions/index.md index a9dca3e..02851df 100644 --- a/content/posts/deploy-hugo-neocities-github-actions/index.md +++ b/content/posts/deploy-hugo-neocities-github-actions/index.md @@ -12,19 +12,19 @@ tags: - meta - serverless --- -I came across [Neocities](https://neocities.org) many months ago, and got really excited by the premise: a free web host with the mission to bring back the *"fun, creativity and independence that made the web great."* I spent a while scrolling through the [gallery](https://neocities.org/browse) of personal sites and was amazed by both the nostalgic vibes and the creativity on display. It's like a portal back to when the web was fun. Neocities seemed like something I wanted to be a part of, so I signed up for an account... and soon realized that I didn't *really* want to go back to crafting artisinal HTML by hand like I did in the early '00s. I didn't see an easy way to leverage my preferred static site generator[^lazy] so I filed it away and moved on. +I came across [Neocities](https://neocities.org) many months ago, and got really excited by the premise: a free web host with the mission to bring back the *"fun, creativity and independence that made the web great."* I spent a while scrolling through the [gallery](https://neocities.org/browse) of personal sites and was amazed by both the nostalgic vibes and the creativity on display. It's like a portal back to when the web was fun. Neocities seemed like something I wanted to be a part of so I signed up for an account... and soon realized that I didn't *really* want to go back to crafting artisinal HTML by hand like I did in the early '00s. I didn't see an easy way to leverage my preferred static site generator[^lazy] so I filed it away and moved on. [^lazy]: Also I'm kind of lazy, and not actually very good at web design anyway. I mean, you've seen my work. Until yesterday, when I saw a post from [Sophie](https://social.lol/@sophie) on [How I deploy my Eleventy site to Neocities](https://localghost.dev/blog/how-i-deploy-my-eleventy-site-to-neocities/). I hadn't realized that Neocities had an [API](https://neocities.org/api), or that there was a [deploy-to-neocities](https://github.com/bcomnes/deploy-to-neocities) GitHub Action which uses that API to push content to Neocities. With that new-to-me information, I thought I'd give Neocities another try - a real one this time. -I'd been hosting this site on Netlify's free plan [for a couple of year](/hello-hugo/) and haven't really had any problems. But I saw Neocities as a better vision of the internet, and I wanted to be a part of that[^passion]. So last night I signed up for the $5/month [Neocities Supporter](https://neocities.org/supporter) plan, which comes with support for custom domains and more bandwidth than even a paid Netlify plan. +I had been hosting this site on Netlify's free plan [for a couple of years](/hello-hugo/) and haven't really encountered any problems. But I saw Neocities as a better vision of the internet, and I wanted to be a part of that[^passion]. So last night I upgraded to the $5/month [Neocities Supporter](https://neocities.org/supporter) plan which would let me use a custom domain for my site (along with higher storage and bandwidth limits). [^passion]: Plus I love supporting passion projects. -I knew I'd need to make some changes to Sophie's workflow since I build my site with Hugo rather than Eleventy. I did some poking around and found [GitHub Actions for Hugo](https://github.com/peaceiris/actions-hugo) which would take care of installing Hugo for me. Then I'd just need to render the HTML with `hugo --minify` and use the [Torchlight](/spotlight-on-torchlight/) CLI to mark up the code blocks. Along the way, I discovered that I needed to overwrite `/not_found.html` to insert my custom 404 page so I included an extra step to do that. And then I'd finally be ready to push the results to Neocities. +I knew I'd need to make some changes to Sophie's workflow since my site is built with Hugo rather than Eleventy. I did some poking around and found [GitHub Actions for Hugo](https://github.com/peaceiris/actions-hugo) which would take care of installing Hugo for me. Then I'd just need to render the HTML with `hugo --minify` and use the [Torchlight](/spotlight-on-torchlight/) CLI to mark up the code blocks. Along the way, I also discovered that I'd need to overwrite `/not_found.html` to insert my custom 404 page so I included an extra step to do that. After that, I'll finally be ready to push the results to Neocities. -So after some trial and error, I came up with this workflow: +It took a bit of trial and error, but I eventually adapted this workflow which does the trick: ### The Workflow ```yaml From 51011ce0bcaff0ded687b87584ad6d591ae30f5a Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 21 Jan 2024 21:58:39 -0600 Subject: [PATCH 07/28] no kudos on 404 --- config/_default/params.toml | 1 + content/404.md | 1 + layouts/_default/single.html | 8 +++++++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/config/_default/params.toml b/config/_default/params.toml index c20f40a..2214054 100644 --- a/config/_default/params.toml +++ b/config/_default/params.toml @@ -25,6 +25,7 @@ giscusStrict = "0" giscusTheme = "noborder_gray" analytics = true +kudos = true [author] name = "John Bowdre" diff --git a/content/404.md b/content/404.md index 6eff99f..03637e1 100644 --- a/content/404.md +++ b/content/404.md @@ -3,6 +3,7 @@ title = "404'd!" noindex = true timeless = true comments = true +kudos = false +++ We're not sure what you were looking for but it's not here. diff --git a/layouts/_default/single.html b/layouts/_default/single.html index c4e22aa..4399145 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -42,7 +42,13 @@ {{- end }} {{- if ne $showComments false }}
- {{- if eq .Site.Params.analytics true }} + {{- $showKudos := true }} + {{- if eq .Site.Params.kudos false }} + {{- $showKudos = false }} + {{- else if eq .Params.kudos false }} + {{- $showKudos = false }} + {{- end }} + {{- if and (eq .Site.Params.analytics true) (ne $showKudos false) }} Enjoyed this post?  {{- end }} {{- partial "comments" . }} From c898f8ebe59461aeb9506b8fa7197902a93b7c86 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 22 Jan 2024 10:55:58 -0600 Subject: [PATCH 08/28] change kudos prompt message --- layouts/_default/single.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 4399145..364969d 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -49,7 +49,7 @@ {{- $showKudos = false }} {{- end }} {{- if and (eq .Site.Params.analytics true) (ne $showKudos false) }} - Enjoyed this post?  + Celebrate this post:  {{- end }} {{- partial "comments" . }} {{- end }} From a58119ea21690e1e52a40e55ee8d8b96b999578b Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 23 Jan 2024 13:07:54 -0600 Subject: [PATCH 09/28] configure preview builds on neocities --- .../workflows/deploy-preview-to-neocities.yml | 46 +++++++++++++++++++ config/preview/hugo.toml | 1 + config/preview/params.toml | 2 + 3 files changed, 49 insertions(+) create mode 100644 .github/workflows/deploy-preview-to-neocities.yml create mode 100644 config/preview/hugo.toml create mode 100644 config/preview/params.toml diff --git a/.github/workflows/deploy-preview-to-neocities.yml b/.github/workflows/deploy-preview-to-neocities.yml new file mode 100644 index 0000000..6979ac9 --- /dev/null +++ b/.github/workflows/deploy-preview-to-neocities.yml @@ -0,0 +1,46 @@ +name: Deploy to Neocities + +# only run on changes to preview +on: + push: + branches: + - preview + +concurrency: # prevent concurrent deploys doing strange things + group: deploy-preview-to-neocities + cancel-in-progress: true + +# Default to bash +defaults: + run: + shell: bash + +jobs: + deploy: + name: Build and deploy Hugo site + runs-on: ubuntu-latest + steps: + - name: Hugo setup + uses: peaceiris/actions-hugo@v2.6.0 + with: + hugo-version: '0.121.1' + extended: true + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Build with Hugo + run: hugo --minify + - name: Insert 404 page + run: | + cp public/404/index.html public/not_found.html + - name: Highlight with Torchlight + run: | + npm i @torchlight-api/torchlight-cli + npx torchlight + - name: Deploy to Neocities + uses: bcomnes/deploy-to-neocities@v1 + with: + api_token: ${{ secrets.NEOCITIES_PREVIEW_API_TOKEN }} + cleanup: true + dist_dir: public \ No newline at end of file diff --git a/config/preview/hugo.toml b/config/preview/hugo.toml new file mode 100644 index 0000000..8936b1b --- /dev/null +++ b/config/preview/hugo.toml @@ -0,0 +1 @@ +baseURL = "https://preview--runtimeterror.neocities.org/" \ No newline at end of file diff --git a/config/preview/params.toml b/config/preview/params.toml new file mode 100644 index 0000000..c8a1743 --- /dev/null +++ b/config/preview/params.toml @@ -0,0 +1,2 @@ +comments = false +analytics = false \ No newline at end of file From de6d26f3602e62168dc838d14913496c0088f815 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 23 Jan 2024 13:08:43 -0600 Subject: [PATCH 10/28] update name of preview deploy workflow --- .github/workflows/deploy-preview-to-neocities.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-preview-to-neocities.yml b/.github/workflows/deploy-preview-to-neocities.yml index 6979ac9..f912451 100644 --- a/.github/workflows/deploy-preview-to-neocities.yml +++ b/.github/workflows/deploy-preview-to-neocities.yml @@ -1,4 +1,4 @@ -name: Deploy to Neocities +name: Deploy Preview to Neocities # only run on changes to preview on: From 373d0e2986af2a00e050a9dd74447a767c36ccba Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 23 Jan 2024 13:16:09 -0600 Subject: [PATCH 11/28] flag preview deploys --- .github/workflows/deploy-preview-to-neocities.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-preview-to-neocities.yml b/.github/workflows/deploy-preview-to-neocities.yml index f912451..9238a13 100644 --- a/.github/workflows/deploy-preview-to-neocities.yml +++ b/.github/workflows/deploy-preview-to-neocities.yml @@ -30,7 +30,7 @@ jobs: with: submodules: recursive - name: Build with Hugo - run: hugo --minify + run: hugo --minify --environment preview - name: Insert 404 page run: | cp public/404/index.html public/not_found.html From e6914332c03fb102928b0b8b8e9635dab3102a4b Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 23 Jan 2024 13:24:10 -0600 Subject: [PATCH 12/28] test webring integration --- config/preview/params.toml | 4 ++-- layouts/partials/aside.html | 3 +++ layouts/partials/head.html | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/config/preview/params.toml b/config/preview/params.toml index c8a1743..1ba7c58 100644 --- a/config/preview/params.toml +++ b/config/preview/params.toml @@ -1,2 +1,2 @@ -comments = false -analytics = false \ No newline at end of file +comments = true +analytics = true \ No newline at end of file diff --git a/layouts/partials/aside.html b/layouts/partials/aside.html index 28a9d08..bc70622 100644 --- a/layouts/partials/aside.html +++ b/layouts/partials/aside.html @@ -42,3 +42,6 @@

status.lol

+
+

Tinylytics Webring

+πŸ•ΈοΈπŸ’ \ No newline at end of file diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 9a2436a..5b2f2f3 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -36,7 +36,7 @@ {{ if eq .Site.Params.analytics true }} - + {{ end }} From 14f851a36c3c510ae9d28f8e2be4576d069aca14 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 23 Jan 2024 13:54:36 -0600 Subject: [PATCH 13/28] wrap webring avatar --- layouts/partials/aside.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/partials/aside.html b/layouts/partials/aside.html index bc70622..2747d57 100644 --- a/layouts/partials/aside.html +++ b/layouts/partials/aside.html @@ -44,4 +44,4 @@

Tinylytics Webring

-πŸ•ΈοΈπŸ’ \ No newline at end of file +πŸ•ΈοΈπŸ’ \ No newline at end of file From 92a29d7ffdac4dc6c5109ce6f02d3ec769178a17 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 23 Jan 2024 14:01:09 -0600 Subject: [PATCH 14/28] hide webring when analytics disabled --- config/preview/params.toml | 4 ++-- layouts/partials/aside.html | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/config/preview/params.toml b/config/preview/params.toml index 1ba7c58..c8a1743 100644 --- a/config/preview/params.toml +++ b/config/preview/params.toml @@ -1,2 +1,2 @@ -comments = true -analytics = true \ No newline at end of file +comments = false +analytics = false \ No newline at end of file diff --git a/layouts/partials/aside.html b/layouts/partials/aside.html index 2747d57..bc3d2fb 100644 --- a/layouts/partials/aside.html +++ b/layouts/partials/aside.html @@ -42,6 +42,8 @@

status.lol

+{{- if eq .Site.Params.analytics true }}
-

Tinylytics Webring

-πŸ•ΈοΈπŸ’ \ No newline at end of file +

Webring

+πŸ•ΈοΈπŸ’ +{{- end }} \ No newline at end of file From aa0f8b045c2f6fbf4b65e84ccc0dd9cfdbde285f Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 23 Jan 2024 15:22:08 -0600 Subject: [PATCH 15/28] change webring display style --- layouts/partials/aside.html | 3 +-- static/css/custom.css | 9 +++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/layouts/partials/aside.html b/layouts/partials/aside.html index bc3d2fb..1a4e815 100644 --- a/layouts/partials/aside.html +++ b/layouts/partials/aside.html @@ -44,6 +44,5 @@ {{- if eq .Site.Params.analytics true }}
-

Webring

-πŸ•ΈοΈπŸ’ +Tinylytics Webring {{- end }} \ No newline at end of file diff --git a/static/css/custom.css b/static/css/custom.css index d34c48b..a8b6a76 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -282,7 +282,7 @@ blockquote { padding-left: 0.25rem; } -/* tinylytics kudos styling*/ +/* tinylytics styling*/ .post_kudos { display: flex; } @@ -303,6 +303,11 @@ button.tinylytics_kudos:hover { text-shadow: var(--off-fg) 0 0 1px; } +img.tinylytics_webring_avatar { + border-radius: 50%; + height: 2rem; +} + /* post front matter styling*/ .frontmatter hr { margin-bottom: 0rem; @@ -348,4 +353,4 @@ button.tinylytics_kudos:hover { /* footnote link styling */ .footnote-backref { text-decoration: none; -} \ No newline at end of file +} From 809231af5ca246d2143ea81eee2f65d66e531bd7 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 23 Jan 2024 16:00:30 -0600 Subject: [PATCH 16/28] improve styling of webring --- static/css/custom.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/static/css/custom.css b/static/css/custom.css index a8b6a76..4da0ccf 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -304,8 +304,11 @@ button.tinylytics_kudos:hover { } img.tinylytics_webring_avatar { - border-radius: 50%; + border-radius: 100%; height: 2rem; + width: 2rem; + vertical-align:middle; + margin-right: 0.5rem; } /* post front matter styling*/ From 5f00dbf341cad46b8fb1c3b0b2171e32e617e71e Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 23 Jan 2024 16:49:03 -0600 Subject: [PATCH 17/28] improve vertical spacing on hr elements --- static/css/custom.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/static/css/custom.css b/static/css/custom.css index 4da0ccf..6722a9b 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -357,3 +357,8 @@ img.tinylytics_webring_avatar { .footnote-backref { text-decoration: none; } + +/* hr override */ +hr { + margin-top: 1.5rem; +} \ No newline at end of file From 7ff0715feaf43cedb234062d98903fa279a29c99 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 23 Jan 2024 18:16:27 -0600 Subject: [PATCH 18/28] change webring style again --- layouts/partials/aside.html | 2 +- static/css/custom.css | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/layouts/partials/aside.html b/layouts/partials/aside.html index 1a4e815..3fb8231 100644 --- a/layouts/partials/aside.html +++ b/layouts/partials/aside.html @@ -44,5 +44,5 @@ {{- if eq .Site.Params.analytics true }}
-Tinylytics Webring +οΈπŸ•ΈπŸ’ {{- end }} \ No newline at end of file diff --git a/static/css/custom.css b/static/css/custom.css index 6722a9b..706c21f 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -308,7 +308,11 @@ img.tinylytics_webring_avatar { height: 2rem; width: 2rem; vertical-align:middle; - margin-right: 0.5rem; +} + +a.tinylytics_webring { + text-decoration: none; + font-size: 1.5rem; } /* post front matter styling*/ From b0d3489366ad621fee69b2d13c93fd95bf62bdf4 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 28 Jan 2024 17:00:56 -0600 Subject: [PATCH 19/28] update social/contact links --- config/_default/params.toml | 25 ++++++++++--------------- content/about.md | 6 +++++- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/config/_default/params.toml b/config/_default/params.toml index 2214054..e56dd27 100644 --- a/config/_default/params.toml +++ b/config/_default/params.toml @@ -137,6 +137,16 @@ icon = "fa-brands fa-github" title = "GitHub" url = "https://github.com/jbowdre" +[[socialLinks]] +icon = "fa-solid fa-heart" +title = "omg.lol" +url = "https://jbowdre.lol" + +[[socialLinks]] +icon = "fa-solid fa-sticky-note" +title = "Scribbles 'n Bits" +url = "https://scribbles.jbowdre.lol" + [[socialLinks]] icon = "fa-solid fa-circle-user" title = "CounterSocial" @@ -147,21 +157,6 @@ icon = "fa fa-mastodon" title = "Mastodon" url = "https://social.lol/@jbowdre" -[[socialLinks]] -icon = "fa-solid fa-heart" -title = "omg.lol" -url = "https://jbowdre.lol" - -[[socialLinks]] -icon = "fa-solid fa-comments" -title = "SimpleX Chat" -url = "/simplex" - -[[socialLinks]] -icon = "fa fa-matrix-org" -title = "Matrix" -url = "https://matrix.to/#/@jbowdre:omg.lol" - [[socialLinks]] icon = "fa-solid fa-envelope" title = "Email" diff --git a/content/about.md b/content/about.md index 932079e..70c58db 100644 --- a/content/about.md +++ b/content/about.md @@ -23,13 +23,17 @@ And in the free time I have left, I game on my Steam Deck. See what I've been up to on: - [GitHub](https://github.com/jbowdre) -- [CounterSocial](https://counter.social/@john_b) +- [Scribbles 'n Bits](https://scribbes.jbowdre.lol) - [status.lol](https://status.jbowdre.lol) +- [social.lol](https://social.lol/@jbowdre) +- [CounterSocial](https://counter.social/@john_b) - [/now](https://now.jbowdre.lol) Connect with me via: - [SimpleX Chat](/simplex/) +- [Session](https://p.runtimeterror.dev/session-id) - [Matrix](https://matrix.to/#/@jbowdre:omg.lol) +- [XMPP](xmpp://john@chat.vpota.to) - [Electronic Mail](mailto:jbowdre@omg.lol) - [PGP: 613F B70C 4FA7 A077](https://l.runtimeterror.dev/pgp) From 75eacb8ea2460e0cbe2194c71d6605f07b6b546f Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 29 Jan 2024 08:43:25 -0600 Subject: [PATCH 20/28] adjust tinylytics params --- layouts/partials/head.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 5b2f2f3..6bd490c 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -36,7 +36,7 @@ {{ if eq .Site.Params.analytics true }} - + {{ end }} From 7260ac52d98f207c6dd55c381e2ccd4557375994 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 29 Jan 2024 08:54:27 -0600 Subject: [PATCH 21/28] Revert "adjust tinylytics params" This reverts commit 75eacb8ea2460e0cbe2194c71d6605f07b6b546f. --- layouts/partials/head.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 6bd490c..5b2f2f3 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -36,7 +36,7 @@ {{ if eq .Site.Params.analytics true }} - + {{ end }} From ee819c8a206fd622e3ba32fd8a2bc0fe0ffa4346 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 29 Jan 2024 23:17:07 -0600 Subject: [PATCH 22/28] update links to status page --- content/simplex.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/content/simplex.md b/content/simplex.md index 70afed5..432ba01 100644 --- a/content/simplex.md +++ b/content/simplex.md @@ -19,8 +19,6 @@ Incoming messages are routed through a pool of servers so that your conversation The app is also packed with other features like disappearing messages, encrypted file transfers, encrypted voice messages, encrypted audio and video calls, decentralized private groups, and a cool incognito mode which connects new conversations to a randomly-generated profile instead of your primary one. There's even a [CLI client](https://github.com/simplex-chat/simplex-chat/blob/stable/docs/CLI.md)! ## Servers -[![Status badge](https://status.runtimeterror.dev/api/badge/11/status)](https://status.runtimeterror.dev/status/simplex) - You can easily host your own [simplexmq server](https://github.com/simplex-chat/simplexmq) for handling your inbound message queue, and I've done just that; in fact, I've deployed three! And, as one of my closest internet friends, *you're welcome to use them as well.* Just add these in the SimpleX app at **Settings > Network & servers > SMP servers > + Add server...**. Enable the option to use them for new connections, and they'll be added to the pool used for incoming messages in new conversations. If you want to use them immediately for existing conversations, go into each conversation's options menu and use the **Switch receiving address** option. You can also *disable* the option to use the default servers for new conversations if you only want messages to be routed through specific servers, but that does increase the likelikhood of concurrent conversations being routed the same way. More servers, more path options, less metadata in any one place. @@ -32,7 +30,7 @@ Just add these in the SimpleX app at **Settings > Network & servers > SMP server | | | | --- | --- | -| [![Status badge](https://status.runtimeterror.dev/api/badge/6/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp_status)] | +| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp-vpota-to%2Fuptime.json)](https://uptime.runtimeterror.dev) | [[netdata](https://l.runtimeterror.dev/smp_status)] | --- @@ -42,7 +40,7 @@ Just add these in the SimpleX app at **Settings > Network & servers > SMP server | | | | --- | --- | -| [![Status badge](https://status.runtimeterror.dev/api/badge/4/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp1_status)] | +| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp1-vpota-to%2Fuptime.json)](https://uptime.runtimeterror.dev) | [[netdata](https://l.runtimeterror.dev/smp1_status)] | --- @@ -52,4 +50,4 @@ Just add these in the SimpleX app at **Settings > Network & servers > SMP server | | | | --- | --- | -| [![Status badge](https://status.runtimeterror.dev/api/badge/5/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp2_status)] | +| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp2-vpota-to%2Fuptime.json)](https://uptime.runtimeterror.dev) | [[netdata](https://l.runtimeterror.dev/smp2_status)] | From c72f5f0c52ca1428cdd266d009b6bd2c89e4de85 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 29 Jan 2024 23:21:41 -0600 Subject: [PATCH 23/28] update links to status page, again --- content/simplex.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/simplex.md b/content/simplex.md index 432ba01..3fb090e 100644 --- a/content/simplex.md +++ b/content/simplex.md @@ -30,7 +30,7 @@ Just add these in the SimpleX app at **Settings > Network & servers > SMP server | | | | --- | --- | -| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp-vpota-to%2Fuptime.json)](https://uptime.runtimeterror.dev) | [[netdata](https://l.runtimeterror.dev/smp_status)] | +| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp-vpota-to%2Fuptime.json)](https://status.runtimeterror.dev) | [[netdata](https://l.runtimeterror.dev/smp_status)] | --- @@ -40,7 +40,7 @@ Just add these in the SimpleX app at **Settings > Network & servers > SMP server | | | | --- | --- | -| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp1-vpota-to%2Fuptime.json)](https://uptime.runtimeterror.dev) | [[netdata](https://l.runtimeterror.dev/smp1_status)] | +| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp1-vpota-to%2Fuptime.json)](https://status.runtimeterror.dev) | [[netdata](https://l.runtimeterror.dev/smp1_status)] | --- @@ -50,4 +50,4 @@ Just add these in the SimpleX app at **Settings > Network & servers > SMP server | | | | --- | --- | -| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp2-vpota-to%2Fuptime.json)](https://uptime.runtimeterror.dev) | [[netdata](https://l.runtimeterror.dev/smp2_status)] | +| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp2-vpota-to%2Fuptime.json)](https://status.runtimeterror.dev) | [[netdata](https://l.runtimeterror.dev/smp2_status)] | From 697695c5d9b65e348f43bfcc07b4fcc81e816ca0 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 30 Jan 2024 09:16:37 -0600 Subject: [PATCH 24/28] update simplex status links --- content/simplex.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/simplex.md b/content/simplex.md index 3fb090e..4937533 100644 --- a/content/simplex.md +++ b/content/simplex.md @@ -30,7 +30,7 @@ Just add these in the SimpleX app at **Settings > Network & servers > SMP server | | | | --- | --- | -| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp-vpota-to%2Fuptime.json)](https://status.runtimeterror.dev) | [[netdata](https://l.runtimeterror.dev/smp_status)] | +| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp-vpota-to-5223%2Fuptime.json)](https://status.runtimeterror.dev/history/smp-vpota-to-5223) | [[netdata](https://l.runtimeterror.dev/smp_status)] | --- @@ -40,7 +40,7 @@ Just add these in the SimpleX app at **Settings > Network & servers > SMP server | | | | --- | --- | -| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp1-vpota-to%2Fuptime.json)](https://status.runtimeterror.dev) | [[netdata](https://l.runtimeterror.dev/smp1_status)] | +| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp1-vpota-to-5223%2Fuptime.json)](https://status.runtimeterror.dev/history/smp1-vpota-to-5223) | [[netdata](https://l.runtimeterror.dev/smp1_status)] | --- @@ -50,4 +50,4 @@ Just add these in the SimpleX app at **Settings > Network & servers > SMP server | | | | --- | --- | -| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp2-vpota-to%2Fuptime.json)](https://status.runtimeterror.dev) | [[netdata](https://l.runtimeterror.dev/smp2_status)] | +| [![Uptime](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjbowdre%2Fupptime%2Fmaster%2Fapi%2Fsmp2-vpota-to-5223%2Fuptime.json)](https://status.runtimeterror.dev/history/smp2-vpota-to-5223) | [[netdata](https://l.runtimeterror.dev/smp2_status)] | From 8ac9cb02d084d798f12aa62ee6e3da9ad4579c31 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sat, 3 Feb 2024 13:23:23 -0600 Subject: [PATCH 25/28] update netdata kickstart location --- content/posts/salt-state-netdata-tailscale/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/posts/salt-state-netdata-tailscale/index.md b/content/posts/salt-state-netdata-tailscale/index.md index ba89b01..0c9fef1 100644 --- a/content/posts/salt-state-netdata-tailscale/index.md +++ b/content/posts/salt-state-netdata-tailscale/index.md @@ -1,7 +1,7 @@ --- title: "Quick Salt State to Deploy Netdata" date: 2023-12-21 -lastmod: 2023-12-22 +lastmod: 2024-02-03 description: "A hasty Salt state to deploy netdata monitoring and publish it internally on my tailnet with Tailscale Serve" featured: false toc: true @@ -37,7 +37,7 @@ tailscale: netdata-kickstart: cmd.run: - - name: curl -Ss https://my-netdata.io/kickstart.sh | sh -s -- --dont-wait + - name: curl -Ss https://get.netdata.cloud/kickstart.sh | sh -s -- --dont-wait - require: - pkg: curl # don't run this block if netdata is already running @@ -77,9 +77,9 @@ minion-name: # [tl! .nocopy:start collapse:start] ---------- ID: netdata-kickstart Function: cmd.run - Name: curl -Ss https://my-netdata.io/kickstart.sh | sh -s -- --dont-wait + Name: curl -Ss https://get.netdata.cloud/kickstart.sh | sh -s -- --dont-wait Result: True - Comment: Command "curl -Ss https://my-netdata.io/kickstart.sh | sh -s -- --dont-wait" run + Comment: Command "curl -Ss https://get.netdata.cloud/kickstart.sh | sh -s -- --dont-wait" run Started: 22:59:05.441217 Duration: 10617.082 ms Changes: From 2fa4f76231548c0ffe64c8c975075b7c6f86438a Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 5 Feb 2024 08:15:06 -0600 Subject: [PATCH 26/28] update post --- content/posts/create-vms-chromebook-hashicorp-vagrant/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md b/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md index c1dd764..e46e8bc 100644 --- a/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md +++ b/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md @@ -41,7 +41,7 @@ sudo apt update && sudo apt install \ # [tl! .cmd] [^problem]: and [will not go to space today](https://xkcd.com/1133/). -I'll be configuring Vagrant to use [`libvirt`](https://libvirt.org/) to interface with the [Kernel Virtual Machine (KVM)](https://www.linux-kvm.org/page/Main_Page) virtualization solution (rather than something like VirtualBox that would bring more overhead) so I'll need to install some packages for that as well: +I'll be configuring Vagrant to use [`libvirt`](https://libvirt.org/) to interface with the [Kernel Virtual Machine (KVM)](https://www.linux-kvm.org/page/Main_Page) virtualization solution (rather than something like VirtualBox which would require kernel modules that can't be loaded in ChromeOS) so I'll need to install some packages for that as well: ```shell sudo apt install virt-manager libvirt-dev # [tl! .cmd] ``` From 753385d9babb5e1b16b43fc74e399d4366ac00e1 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 6 Feb 2024 09:48:17 -0600 Subject: [PATCH 27/28] update post with note on checking nested virtualization availability --- .../index.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md b/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md index e46e8bc..388dc0e 100644 --- a/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md +++ b/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md @@ -1,7 +1,7 @@ --- title: "Create Virtual Machines on a Chromebook with HashiCorp Vagrant" # Title of the blog post. date: 2023-02-20 # Date of post creation. -lastmod: 2024-01-17 +lastmod: 2024-02-06 description: "Pairing the powerful Linux Development Environment on modern Chromebooks with HashiCorp Vagrant to create and manage local virtual machines for development and testing" # Description used for search engine. featured: true # Sets if post is a featured post, making appear on the home page side bar. draft: false # Sets whether to render this page. Draft of true will not be rendered. @@ -29,7 +29,16 @@ Also, because I'm a bit of a sadist, I wanted to do this all on my new [Framewor It took a bit of fumbling, but this article describes what it took to get a Vagrant-powered VM up and running in the [Linux Development Environment](https://chromeos.dev/en/linux) on my Chromebook (which is currently running ChromeOS v111 beta). ### Install the prerequisites -There are are a few packages which need to be installed before we can move on to the Vagrant-specific stuff. It's quite possible that these are already on your system.... but if they *aren't* already present you'll have a bad problem[^problem]. +First things first: you should make sure your Chromebook supports nested virtualization. Many newer ones do, but it's not a universal thing. It's easy to check just by looking for the `kvm` device file: + +```shell +ls -l /dev/kvm # [tl! .cmd] +crw-rw---- 10,232 root 6 Feb 08:03 /dev/kvm # [tl! .nocopy] +``` + +As long as you don't get an error like `No such file or directory` then you should be good to go. + +With that out of the way, there are are a few packages which need to be installed before we can move on to the Vagrant-specific stuff. It's quite possible that these are already on your system.... but if they *aren't* already present you'll have a bad problem[^problem]. ```shell sudo apt update && sudo apt install \ # [tl! .cmd] From 64995a893397d50a9be1a4418e5e0e5cfd7e8865 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Wed, 7 Feb 2024 19:27:57 -0600 Subject: [PATCH 28/28] update post with note on using official tailscale image --- .../index.md | 59 ++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/content/posts/tailscale-serve-docker-compose-sidecar/index.md b/content/posts/tailscale-serve-docker-compose-sidecar/index.md index 498bd04..8c9abe1 100644 --- a/content/posts/tailscale-serve-docker-compose-sidecar/index.md +++ b/content/posts/tailscale-serve-docker-compose-sidecar/index.md @@ -1,7 +1,7 @@ --- title: "Tailscale Serve in a Docker Compose Sidecar" date: 2023-12-30 -lastmod: 2024-01-01 +lastmod: 2024-02-07 description: "Using Docker Compose to deploy containerized applications and make them available via Tailscale Serve and Tailscale Funnel" featured: false toc: true @@ -59,6 +59,63 @@ https://tsdemo.tailnet-name.ts.net:8443/ It would be really great if I could directly attach each container to my tailnet and then access the apps with addresses like `https://miniflux.tailnet-name.ts.net` or `https://cyber.tailnet-name.ts.net`. Tailscale does have an [official Docker image](https://hub.docker.com/r/tailscale/tailscale), and at first glance it seems like that would solve my needs pretty directly. Unfortunately, it looks like trying to leverage that container image directly would still require me to configure Tailscale Serve interactively.[^ts_serve_config]. +{{% notice note "Update: 2024-02-07" %}} +Tailscale [just published a blog post](https://tailscale.com/blog/docker-tailscale-guide) which shares some details about how to configure Funnel and Serve within the official image. The short version is that the `TS_SERVE_CONFIG` variable should point to a `serve-config.json` file. The name of the file doesn't actually matter, but the contents do - and you can generate a config by running `tailscale serve status -json` on a functioning system... or just copy-pasta'ing this example I just made for the [Cyberchef](#cyberchef) setup I describe later in this post: + +```json +// torchlight! {"lineNumbers": true} +{ + "TCP": { + "443": { + "HTTPS": true + } + }, + "Web": { + "cyber.tailnet-name.ts.net:443": { + "Handlers": { + "/": { + "Proxy": "http://127.0.0.1:8000" + } + } + } + }//, uncomment to enable funnel + // "AllowFunnel": { + // "cyber.tailnet-name.ts.net:443": true + // } +} +``` + +Replace the ports and protocols and hostnames and such, and you'll be good to go. + +A compose config using this setup might look something like this: + +```yaml +# torchlight! {"lineNumbers": true} +services: + tailscale: + image: tailscale/tailscale:latest # [tl! highlight] + container_name: cyberchef-tailscale + restart: unless-stopped + environment: + TS_AUTHKEY: ${TS_AUTHKEY:?err} + TS_HOSTNAME: ${TS_HOSTNAME:-ts-docker} + TS_EXTRA_ARGS: ${TS_EXTRA_ARGS:-} + TS_STATE_DIR: /var/lib/tailscale/ + TS_SERVE_CONFIG: /config/serve-config.json # [tl! highlight] + volumes: + - ./ts_data:/var/lib/tailscale/ + - ./serve-config.json:/config/serve-config.json # [tl! highlight] + + cyberchef: + container_name: cyberchef + image: mpepping/cyberchef:latest + restart: unless-stopped + network_mode: service:tailscale +``` + +That's a bit cleaner than the workaround I'd put together, but you're totally welcome to keep on reading if you want to see how it compares. +{{% /notice %}} + [^ts_serve_config]: While not documented for the image itself, the `containerboot` binary seems like it should accept a [`TS_SERVE_CONFIG` argument](https://github.com/tailscale/tailscale/blob/5812093d31c8a7f9c5e3a455f0fd20dcc011d8cd/cmd/containerboot/main.go#L43) to designate the file path of the `ipn.ServeConfig`... but I couldn't find any information on how to actually configure that. And then I came across [Louis-Philippe Asselin's post](https://asselin.engineer/tailscale-docker) about how he set up Tailscale in Docker Compose. When he wrote his post, there was even less documentation on how to do this stuff, so he used a [modified Tailscale docker image](https://github.com/lpasselin/tailscale-docker) which loads a [startup script](https://github.com/lpasselin/tailscale-docker/blob/c6f8d75b5e1235b8dbeee849df9321f515c526e5/images/tailscale/start.sh) to handle some of the configuration steps. His repo also includes a [helpful docker-compose example](https://github.com/lpasselin/tailscale-docker/blob/c6f8d75b5e1235b8dbeee849df9321f515c526e5/docker-compose/stateful-example/docker-compose.yml) of how to connect it together.