Compare commits

...

49 Commits

Author SHA1 Message Date
8230f0cb10 update theme
All checks were successful
Build Hugo Site / build (push) Successful in 7s
2025-01-08 16:52:37 -07:00
ecfb422394 Create note: 20250108234637
All checks were successful
Build Hugo Site / build (push) Successful in 7s
2025-01-09 00:46:37 +01:00
bd4863bea9 Create note: 20250108234551
All checks were successful
Build Hugo Site / build (push) Successful in 7s
2025-01-09 00:45:51 +01:00
ab2acbc7e2 update theme version
All checks were successful
Build Hugo Site / build (push) Successful in 7s
2025-01-08 16:36:51 -07:00
e8ce333184 json feed work
All checks were successful
Build Hugo Site / build (push) Successful in 6s
2025-01-08 16:21:12 -07:00
cb3148202d troubleshooting
All checks were successful
Build Hugo Site / build (push) Successful in 6s
2025-01-08 15:50:06 -07:00
b1b7dd1ebd theme version mixup
All checks were successful
Build Hugo Site / build (push) Successful in 7s
2025-01-08 15:27:57 -07:00
abd1e47f3a update theme version
All checks were successful
Build Hugo Site / build (push) Successful in 8s
2025-01-08 15:26:34 -07:00
67129a184c Merge pull request 'add-indieweb-theme' (#1) from add-indieweb-theme into main
All checks were successful
Build Hugo Site / build (push) Successful in 35s
Reviewed-on: #1
2025-01-08 04:25:56 +01:00
dbe8da7f48 final theme version for tonight
Some checks failed
Build Hugo Site / build (push) Failing after 4m28s
2025-01-07 20:24:08 -07:00
5f5dfbb4ce theme fix
Some checks failed
Build Hugo Site / build (push) Failing after 4m27s
2025-01-07 20:19:46 -07:00
18a5b41afc added demo photo and note
Some checks failed
Build Hugo Site / build (push) Failing after 4m27s
2025-01-07 20:11:44 -07:00
f4ef0a5a2f moved posts to articles and fixed pagination
Some checks failed
Build Hugo Site / build (push) Failing after 4m27s
2025-01-07 19:59:35 -07:00
4c5d682efa streamlined TOML
Some checks failed
Build Hugo Site / build (push) Failing after 4m29s
2025-01-07 14:03:26 -07:00
825aaf3214 add indieweb-starter-theme
Some checks failed
Build Hugo Site / build (push) Failing after 4m26s
2025-01-07 13:38:47 -07:00
24444d0a41 remove trash
Some checks failed
Build Hugo Site / build (push) Failing after 7s
2025-01-07 13:34:42 -07:00
6cc31c6456 removed old theme files
Some checks failed
Build Hugo Site / build (push) Failing after 7s
2025-01-07 13:32:57 -07:00
a23bf84710 remove old theme 2025-01-07 13:31:45 -07:00
075745f1c1 add discovery data to head
All checks were successful
Build Hugo Site / build (push) Successful in 10s
2025-01-06 19:55:10 -07:00
0907d476d8 add indieauth to head
All checks were successful
Build Hugo Site / build (push) Successful in 11s
2025-01-06 19:11:53 -07:00
f2526f6c62 took it out of draft mode
All checks were successful
Build Hugo Site / build (push) Successful in 9s
2024-12-27 20:30:51 -07:00
817e0cb36d added post on json feeds
All checks were successful
Build Hugo Site / build (push) Successful in 10s
2024-12-27 20:28:24 -07:00
2865bd8e6d quick config update
All checks were successful
Build Hugo Site / build (push) Successful in 10s
2024-12-27 20:07:58 -07:00
102371ff87 attempt at adding a json feed
All checks were successful
Build Hugo Site / build (push) Successful in 10s
2024-12-27 19:59:45 -07:00
1541ae8c69 update old post to test description
All checks were successful
Build Hugo Site / build (push) Successful in 39s
2024-12-27 19:12:28 -07:00
05179c864b update gitignore
All checks were successful
Build Hugo Site / build (push) Successful in 8s
2024-11-20 09:43:48 -07:00
28bd84cd87 readd feeds folder
All checks were successful
Build Hugo Site / build (push) Successful in 8s
2024-11-20 09:06:03 -07:00
8cb01f9318 Optimize build job & add subtitle
All checks were successful
Build Hugo Site / build (push) Successful in 9s
2024-11-19 20:30:16 -07:00
5093d43413 final test of builder by adding linkedin social
All checks were successful
Build Hugo Site / build (push) Successful in 9s
2024-11-19 15:16:08 -07:00
d37bbfce38 fix about page
All checks were successful
Build Hugo Site / build (push) Successful in 9s
2024-11-19 15:08:01 -07:00
e9bf390961 remove demo job 2024-11-19 15:07:52 -07:00
033e81ea68 add submodules to checkout
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 3s
Build Hugo Site / build (push) Successful in 9s
2024-11-19 15:05:21 -07:00
997efc270a fix typo
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2s
Build Hugo Site / build (push) Successful in 7s
2024-11-19 15:03:06 -07:00
975f2e14f7 add rsync
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2s
Build Hugo Site / build (push) Failing after 8s
2024-11-19 15:02:15 -07:00
5d6c06f342 try a full build
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 9s
Build Hugo Site / build (push) Failing after 33s
2024-11-19 15:00:24 -07:00
0f0078feca add node fail
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 3s
Build Hugo Site / build (push) Successful in 7s
2024-11-19 14:28:10 -07:00
094ab73813 lets try a hugo build
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2s
Build Hugo Site / build (push) Successful in 5s
2024-11-19 14:26:23 -07:00
c484eb1636 try a different hugo install method
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2s
Build Hugo Site / build (push) Successful in 6s
2024-11-19 14:24:19 -07:00
e88d0f790c add gcc
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2s
Build Hugo Site / build (push) Has been cancelled
2024-11-19 14:20:16 -07:00
ba3aa12803 install hugo
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2s
Build Hugo Site / build (push) Failing after 31s
2024-11-19 14:16:32 -07:00
a17f9700bb go setup
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2s
Build Hugo Site / build (push) Successful in 27s
2024-11-19 14:12:20 -07:00
63a0aa91b2 crap shoot build
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2s
Build Hugo Site / build (push) Failing after 15s
2024-11-19 14:09:39 -07:00
c2080ba87a touch test
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2s
2024-11-19 14:02:46 -07:00
ca16a17a4c added node to image
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2s
2024-11-19 13:57:48 -07:00
ba6aff5add maybe dowgrade checkout?
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 12s
2024-11-19 13:46:48 -07:00
bfe821f377 switched label on demo job
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 9s
2024-11-19 13:44:17 -07:00
e229cf9f79 demo workflow added
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
2024-11-19 13:41:37 -07:00
61fb9eaee1 too much to document 2024-11-17 16:50:07 -07:00
21272c6c10 updated webfinger 2024-08-19 15:34:07 -06:00
22 changed files with 366 additions and 18 deletions

View File

@@ -0,0 +1,18 @@
name: Build Hugo Site
run-name: ${{ gitea.actor }} is building The Satellite of Love
on: [push]
jobs:
build:
runs-on: docker
steps:
- run: apk add --no-cache nodejs rsync
- run: apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community hugo
- uses: actions/checkout@v4
with:
submodules: 'true'
- uses: actions/setup-go@v3
with:
go-version: '>=1.17.0'
- run: hugo
- run: rsync -avz --delete ./public/ /sites/tsol/

32
.gitignore vendored
View File

@@ -1 +1,31 @@
public/
# Hugo's default build folder
/public/
# Hugo's data folder (optional, depends on your project)
/data/
# Hugo's cache folder
/cache/
# Hugo's content folder can have media, drafts or temporary files that you don't want to commit
/content/drafts/
/content/images/
/content/sections/
# OS generated files
.DS_Store
Thumbs.db
# IDE or text editor files
.idea/
.vscode/
# Node.js and other dependencies
node_modules/
yarn.lock
package-lock.json
# Temporary files
*.bak
*.swp
.hugo_build.lock

7
.gitmodules vendored
View File

@@ -1,4 +1,3 @@
[submodule "themes/hermit-v2"]
path = themes/hermit-v2
url = https://github.com/1bl4z3r/hermit-V2
branch = main
[submodule "themes/hugo-indieweb-starter"]
path = themes/hugo-indieweb-starter
url = https://git.thesatelliteoflove.com/phil/hugo-indieweb-starter.git

7
content/about.md Normal file
View File

@@ -0,0 +1,7 @@
+++
title = 'About'
date = 2024-08-19T15:39:43-06:00
draft = false
+++
It's just this site, you know?

View File

@@ -0,0 +1,109 @@
---
title: "Add a Json Feed to Any Hugo Site"
aliases: ["/posts/add-a-json-feed-to-any-hugo-site"]
date: 2024-12-27T20:13:26-07:00
draft: false
toc: false
description: "I fought with Hugo to add a JSON Feed so you don't have to #hugo #posse"
images:
tags:
- posse
- hugo
---
Super quick post tonight as a precursor to a post that I am working on about me adopting a "Post Once Syndicate Everywhere" ([POSSE](https://indieweb.org/POSSE)) strategy for my content.
I just spent way too long wrestling with Hugo (which runs this site) to add a [JSON Feed](https://www.jsonfeed.org/) compatible feed so that I can more reliably publish updates to this blog to the Fediverse/Threads/Bluesky and discovered that, ultimately, it is actually really simple. So I decided t document here in case anyone else needs a hand.
1. Add the following to your hugo.toml file
```
[outputFormats.jsonfeed]
mediaType = "application/json"
baseName = "feed"
rel = "alternate"
isPlainText = true
[outputs]
home = ["html", "jsonfeed", "rss"]
section = ["html", "jsonfeed", "rss"]
```
This creates the JSON Feed output format and adds the outputs to both "Home" and each section (for example, Posts).
2. In the root of your project (no need to mess with the theme if you are using one) make sure you have a layouts folder, and a _default folder inside of it (so layouts/_default)
3. In the layouts/_default directory create list.jsonfeed.json and copy the following into it:
```
{{- $pctx := . -}}
{{- if .IsHome -}}{{ $pctx = site }}{{- end -}}
{{- $pages := slice -}}
{{- if or $.IsHome $.IsSection -}}
{{- $pages = $pctx.RegularPages -}}
{{- else -}}
{{- $pages = $pctx.Pages -}}
{{- end -}}
{{- $limit := site.Config.Services.RSS.Limit -}}
{{- if ge $limit 1 -}}
{{- $pages = $pages | first $limit -}}
{{- end -}}
{{- $title := "" }}
{{- if eq .Title .Site.Title }}
{{- $title = .Site.Title }}
{{- else }}
{{- with .Title }}
{{- $title = print . " on "}}
{{- end }}
{{- $title = print $title .Site.Title }}
{{- end }}
{
"version": "https://jsonfeed.org/version/1.1",
"title": {{ $title | jsonify }},
"home_page_url": {{ .Permalink | jsonify }},
{{- with .OutputFormats.Get "jsonfeed" }}
"feed_url": {{ .Permalink | jsonify }},
{{- end }}
{{- if (or .Site.Params.author .Site.Params.author_url) }}
"authors": [{
{{- if .Site.Params.author }}
"name": {{ .Site.Params.author | jsonify }},
{{- end }}
{{- if .Site.Params.author_url }}
"url": {{ .Site.Params.author_url | jsonify }}
{{- end }}
}],
{{- end }}
{{- if $pages }}
"items": [
{{- range $index, $element := $pages }}
{{- with $element }}
{{- if $index }},{{end}} {
"title": {{ .Title | jsonify }},
"id": {{ .Permalink | jsonify }},
"tags": ["{{ delimit .Params.tags "," }}"]
"url": {{ .Permalink | jsonify }},
{{- if .Site.Params.showFullTextinJSONFeed }}
"summary": {{ with .Description }}{{ . | jsonify }}{{ else }}{{ .Summary | jsonify }}{{ end -}},
"content_html": {{ .Content | jsonify }},
{{- else }}
"content_text": {{ with .Description }}{{ . | jsonify }}{{ else }}{{ .Summary | jsonify }}{{ end -}},
{{- end }}
{{- if .Params.cover.image }}
{{- $cover := (.Resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }}
{{- if $cover }}
"image": {{ (path.Join .RelPermalink $cover) | absURL | jsonify }},
{{- end }}
{{- end }}
"date_published": {{ .Date.Format "2006-01-02T15:04:05Z07:00" | jsonify }}
}
{{- end }}
{{- end }}
]
{{ end }}
}
```
This lets Hugo know how to format these feeds.
... And that's it! You can check out my JSON feed at https://thesatelliteoflove.com/posts/feed/json

View File

@@ -0,0 +1,67 @@
---
title: "What I am self hosting - November 2024 edition"
aliases: ["/posts/add-a-json-feed-to-any-hugo-site"]
date: 2024-11-17T16:23:59-07:00
draft: false
toc: false
images:
description: "A quick update on my selfhosting stack as of November 2024 #selfhosting"
tags:
- selfhosting
---
Look, I get it. Cloud services are convenient. They're shiny. They "just work." But you know what's even better? Running your own digital empire where you call all the shots. Here's my setup as of today (November 17th 2024 I think?) and why I'm slowly breaking free from the cloud overlords.
## The Boring (But Critical) Foundation Stuff {#foundation}
First up, we've got **Caddy** - the bouncer at my digital club. It's my reverse proxy, handling all the traffic and keeping things secure. If you're thinking "that sounds complicated," trust me - it's way simpler than the alternatives. Set it up once, and it just... works.
For security, I'm running **Authentik**. Because nobody wants to remember 15 different passwords, and I definitely don't want to manage 15 different login systems. One login, everything works. Done.
## Taking Back Control of My Code {#code-control}
**Gitea** is where I stash my code these days. GitHub is great and all, but have you noticed how every AI model under the sun is training on public repos now? Yeah, no thanks. My code, my rules.
## The "Make My Life Easier" Stack {#productivity}
**Glance** is my homepage on steroids. Stock prices, RSS feeds, quick links - everything I actually care about, right where I need it. No ads, no "recommended for you," just my stuff.
Remember filing cabinets? Me neither, thanks to **Paperless-ngx**. Every document I own gets scanned, tagged, and made searchable. Also, living in a wild fire zone having all my documents stored on a VPS I control means I can focus on evacuating things other than my document boxes.
**tasks.md** keeps my to-dos in check. No fancy bells and whistles, just straightforward task management that doesn't try to upsell me on "premium features" every five minutes.
## The "Never Lose Anything" Department {#archival}
**Hoarder** is like having your own personal internet time machine. It's an AI-powered bookmark manager that actually archives pages. When that brilliant tutorial you bookmarked inevitably disappears into the digital void, you'll still have it. Future you will thank present you.
## Social Media (But Make It Private) {#social}
Running **GoToSocial** because, let's face it, traditional social media is basically a data harvesting operation with a nice UI. Being part of the Fediverse means I get to be social without feeling like I'm the product.
**Postiz** handles my LinkedIn post scheduling. Buffer is fine, but why pay monthly when I can host once and be done with it?
## The "I Don't Trust Cloud Storage" Collection {#storage}
**Pingvin** is my answer to Dropbox. Because when someone asks "can you send me that file?" I don't want to think about storage limits or subscription tiers.
**Pinry** replaced Pinterest for me. Same visual bookmarking goodness, none of the "recommended pins" that somehow always end up being ads.
## Digital Library & Community Tools {#community}
**Calibre** manages my ebook collection, especially my TTRPG stuff. It's like having my own personal Amazon Kindle server, minus the DRM headaches.
For our local repair café, **HeyForm** handles all the registration forms and info collection. Because community projects shouldn't require selling your data to Big Tech.
## Why Go Through All This? {#why}
Look, I'm not going to pretend self-hosting is all sunshine and rainbows. There's setup time. Things break. You'll learn more about SSL certificates than you ever wanted to know.
But here's the thing: every service I self-host is one less subscription to manage, one less company having access to my data, and one more piece of my digital life that I actually control.
Plus, there's something incredibly satisfying about building your own digital ecosystem. It's like having a high-tech treehouse that you built yourself.
Sure, it's more work than clicking "sign up" on some SaaS product. But it's also way more rewarding. And hey, when the cloud services inevitably change their terms, raise their prices, or shut down altogether, I'll be over here, business as usual.
---
*This is always evolving because I can't stop tinkering. What are you self-hosting? Drop me a message - I'm always looking for new services to add to the satellite.*

View File

@@ -0,0 +1,6 @@
---
date: "2025-01-08"
type: "notes"
---
test note

View File

@@ -0,0 +1,6 @@
---
date: "2025-01-08"
type: "notes"
---
yet another test note

5
content/notes/_index.md Normal file
View File

@@ -0,0 +1,5 @@
---
title: "Notes"
type: "notes"
outputs: ["HTML", "jsonfeed"]
---

6
content/notes/note1.md Normal file
View File

@@ -0,0 +1,6 @@
---
date: "2025-01-07"
type: "notes"
---
This is a quick thought or observation without a title. #Microblogging

6
content/notes/note2.md Normal file
View File

@@ -0,0 +1,6 @@
---
date: "2025-01-07"
type: "notes"
---
This is another quick thought or observation without a title. #Microblogging

8
content/photos/pika.md Normal file
View File

@@ -0,0 +1,8 @@
---
title: "Sunset at the Beach"
date: "2025-01-07"
type: "photos"
image: "/images/IMG_0704-1.jpeg"
---
Captured this beautiful sunset while walking along the beach. 🌅

View File

@@ -1,4 +1,79 @@
baseURL = 'https://thesatelliteoflove.com/'
languageCode = 'en-us'
title = 'The Satellite Of Love'
theme = 'hermit-v2'
baseURL = "https://thesatelliteoflove.com"
theme = "hugo-indieweb-starter"
languageCode = "en-us"
title = "The Satellite of Love"
pygmentsCodefences = true
pygmentsUseClasses = true
rssLimit = 10
paginate = 10
copyright = "The Satellite of Love"
enableEmoji = true
[frontmatter]
date = ["date", "publishDate", "lastmod"]
lastmod = ["lastmod", ":git", "date", "publishDate"]
publishDate = ["publishDate", "date"]
[taxonomies]
tag = "tags"
[params.author]
name = "Phil Skents"
url = "https://thesatelliteoflove.com"
email = "phil@thesatelliteoflove.com" # Optional: Use if contact info is public
about = "Web tinkerer, IndieWeb enthusiast, and janitor of the Satellite of Love."
avatar = "static/images/author-avatar.png" # Optional: Path to an avatar image
mastodon = "https://social.thesatelliteoflove.com/users/phil"
[params]
# Basic site metadata
homeSubtitle = "Phil's IndieWeb Experiments"
footerCopyright = "The Satellite of Love"
themeColor = "#494f5c"
# IndieWeb Features
enableWebmentions = true # To toggle webmention support
enableMicropub = true # Enable Micropub endpoint functionality
syndicationTargets = ["Mastodon", "Bluesky", "GitHub"] # Supported syndication
# Post options
dateform = "Jan 2, 2006"
dateformShort = "Jan 2"
dateformNum = "2006-01-02"
# Optional social links
[[params.socialLinks]]
name = "mastodon"
url = "https://social.thesatelliteoflove.com/users/phil"
[[params.socialLinks]]
name = "github"
url = "https://git.thesatelliteoflove.com/phil"
[[params.socialLinks]]
name = "bluesky"
url = "https://bsky.app/profile/mrwhiskers.bsky.social"
[menu]
[[menu.main]]
name = "Posts"
url = "posts/"
weight = 10
[[menu.main]]
name = "About"
url = "about/"
weight = 20
[outputFormats.jsonfeed]
mediaType = "application/json"
baseName = "feed"
rel = "alternate"
isPlainText = true
[outputs]
home = ["html", "jsonfeed", "rss"]
section = ["html", "jsonfeed", "rss"]

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"Target":"/ananke/css/main.min.css","MediaType":"text/css","Data":{}}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"Target":"css/style.min.ce3f33085f5da2b90f81f554d2ee06c242bcc04a0ab542d097538da25d4fea06.css","MediaType":"text/css","Data":{"Integrity":"sha256-zj8zCF9dorkPgfVU0u4GwkK8wEoKtULQl1ONol1P6gY="}}

View File

@@ -1,9 +1,23 @@
{
"subject": "acct:phil@thesatelliteoflove.com",
"aliases": [
"https://social.thesatelliteoflove.com/users/phil",
"https://social.thesatelliteoflove.com/@phil"
],
"links": [
{
"rel": "http://openid.net/specs/connect/1.0/issuer",
"href": "https://auth.thesatelliteoflove.com/application/o/tailscale/"
},
{
"rel": "http://webfinger.net/rel/profile-page",
"type": "text/html",
"href": "https://social.thesatelliteoflove.com/@phil"
},
{
"rel": "self",
"type": "application/activity+json",
"href": "https://social.thesatelliteoflove.com/users/phil"
}
]
}

0
static/feeds/.index Normal file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 KiB

Submodule themes/hermit-v2 deleted from 5ee9c82125