From 364e96f279b24a9beacf350e2e22b847854971d5 Mon Sep 17 00:00:00 2001 From: David Young Date: Tue, 7 Feb 2023 17:19:22 +1300 Subject: [PATCH] Tidy up blog section (a bit) Signed-off-by: David Young --- .cache/plugin/optimize/images.json | 1 - docs/blog/category/changelog.md | 8 + docs/blog/category/note.md | 8 + docs/blog/category/review.md | 7 + docs/blog/index.md | 4 +- .../posts/changelog/added-mastodon-swarm.md | 7 +- ...ed-pixelfed.md => added-pixelfed-swarm.md} | 5 +- ...ta-swarm.md => new-recipe-kavita-swarm.md} | 6 +- ...netes.md => new-recipes-mastodon-swarm.md} | 7 +- docs/blog/posts/changelog/review-immich.md | 21 -- docs/blog/posts/changelog/review-mastodon.md | 24 --- .../posts/changelog/updated-metallb-v4.md | 3 +- .../posts/reviews/review-immich-1.19.1.md} | 16 +- .../posts/reviews/review-mastodon-3.5.3.md} | 33 ++-- docs/images/ipfs.png | Bin 179008 -> 0 bytes docs/recipes/ipfs-cluster.md | 183 ------------------ docs/review/index.md | 17 -- docs/review/nextcloud.md | 161 --------------- mkdocs.yml | 14 +- netlify_redirects.txt | 10 +- scripts/serve.sh | 2 +- 21 files changed, 95 insertions(+), 442 deletions(-) create mode 100644 docs/blog/category/changelog.md create mode 100644 docs/blog/category/note.md create mode 100644 docs/blog/category/review.md rename docs/blog/posts/changelog/{added-pixelfed.md => added-pixelfed-swarm.md} (85%) rename docs/blog/posts/changelog/{added-kavita-swarm.md => new-recipe-kavita-swarm.md} (74%) rename docs/blog/posts/changelog/{added-mastodon-kubernetes.md => new-recipes-mastodon-swarm.md} (74%) delete mode 100644 docs/blog/posts/changelog/review-immich.md delete mode 100644 docs/blog/posts/changelog/review-mastodon.md rename docs/{review/immich.md => blog/posts/reviews/review-immich-1.19.1.md} (95%) rename docs/{review/mastodon.md => blog/posts/reviews/review-mastodon-3.5.3.md} (92%) delete mode 100644 docs/images/ipfs.png delete mode 100644 docs/recipes/ipfs-cluster.md delete mode 100644 docs/review/index.md delete mode 100644 docs/review/nextcloud.md diff --git a/.cache/plugin/optimize/images.json b/.cache/plugin/optimize/images.json index db84d04..f2d7319 100644 --- a/.cache/plugin/optimize/images.json +++ b/.cache/plugin/optimize/images.json @@ -46,7 +46,6 @@ "images/kavita.png": "04e5785d2ac65ca40fb3a9af92e393656a18697d", "images/jellyfin.png": "3142bc01f9ece65eeb8441d336f1bfb155fcd1b6", "images/keepalived.png": "271686b0ad2767bf7279802ce4e4ed4499d1e5b3", - "images/ipfs.png": "af42de62956fe30bb455799d099dea1cbbd9f517", "images/keycloak-add-client-1.png": "463d1274872be0d59dbcd9d562bd1fe59354ac97", "images/keycloak-add-client-2.png": "93e4ec1565a00e6f0120f3294825764d0011dd37", "images/keycloak-add-client-4.png": "0ac2f4427f713cd67a66b48150b588fd2763b56a", diff --git a/docs/blog/category/changelog.md b/docs/blog/category/changelog.md new file mode 100644 index 0000000..cdf9e53 --- /dev/null +++ b/docs/blog/category/changelog.md @@ -0,0 +1,8 @@ +--- +description: CHANGELOG - What's new in the cookbook +--- +# CHANGELOG + +This category lists the posts which highlight new and improved recipes in Funky Penguin's Geek Cookbook. The idea is that subscribing to the [RSS feed](/rss/) will provide automatic notification of fresh recipes! + +--8<-- "common-links.md" diff --git a/docs/blog/category/note.md b/docs/blog/category/note.md new file mode 100644 index 0000000..599ecd5 --- /dev/null +++ b/docs/blog/category/note.md @@ -0,0 +1,8 @@ +--- +description: Funky Penguin's notes-in-progress +--- +# Notes + +Sometimes you discover something which doesn't fit neatly into the "recipe" format. That's what this category of blog posts is for. I note information I don't want to loose, but I don't know (yet) how to fit it into the structure of the cookbook. + +--8<-- "common-links.md" diff --git a/docs/blog/category/review.md b/docs/blog/category/review.md new file mode 100644 index 0000000..d925539 --- /dev/null +++ b/docs/blog/category/review.md @@ -0,0 +1,7 @@ +--- +description: My reviews of popular self-hosted apps +--- + +I love experimenting with new self-hosted tools. Typically I'll review a tool while creating a recipe, although popular enough tools (*like [Plex][plex]*) don't **need** a review, in which case I'll just jump straight into the recipe! + +--8<-- "common-links.md" \ No newline at end of file diff --git a/docs/blog/index.md b/docs/blog/index.md index 5bfa04d..3bf0ffd 100644 --- a/docs/blog/index.md +++ b/docs/blog/index.md @@ -1,7 +1,7 @@ # Funky Penguin's Geek Cookblog -Welcome to the Funky Blog! +Welcome to Funky Penguin's Blog! -After years of trying to use alternate platforms (*❤️ ya, [Ghost](../recipes/ghost.md) ! 👻*), I've given up and decided to move my technical blog entries here instead - I prefer the way [mkdocs-material](https://squidfunk.github.io/mkdocs-material/) lets me format documentation for technical consumption! +After years of trying to use alternate platforms (*I still ❤️ ya, [Ghost](/recipes/ghost/) ! 👻*), I've decided to move my technical blog entries here instead - I **far** prefer the way [mkdocs-material](https://squidfunk.github.io/mkdocs-material/) lets me format documentation for technical consumption! --8<-- "common-links.md" diff --git a/docs/blog/posts/changelog/added-mastodon-swarm.md b/docs/blog/posts/changelog/added-mastodon-swarm.md index a7e6748..90b3783 100644 --- a/docs/blog/posts/changelog/added-mastodon-swarm.md +++ b/docs/blog/posts/changelog/added-mastodon-swarm.md @@ -8,14 +8,17 @@ links: - Mastodon Review: review/mastodon.md - Mastodon Kubernetes recipe: recipes/kubernetes/mastodon.md - Mastodon Docker Swarm recipe: recipes/mastodon.md +description: New Docker Swarm Recipe - Mastodon - Federated social network. Think "like twitter but also like email" --- -# New Recipe: Mastodon - Federated social network. Think "like twitter but also like email" +# New Mastodon recipe (swarm) New recipe - Mastodon, like Twitter on the Fediverse. Check out the [Docker Swarm recipe][mastodon]! +![Mastodon Screenshot](/images/mastodon.png){ loading=lazy } + Mastodon is an open-source, federated (*i.e., decentralized*) social network, inspired by Twitter's "microblogging" format, and used by upwards of 6.4M early-adopters, to share links, pictures, video and text. ---8<-- "common-links.md" \ No newline at end of file +--8<-- "common-links.md" diff --git a/docs/blog/posts/changelog/added-pixelfed.md b/docs/blog/posts/changelog/added-pixelfed-swarm.md similarity index 85% rename from docs/blog/posts/changelog/added-pixelfed.md rename to docs/blog/posts/changelog/added-pixelfed-swarm.md index c8758b4..c096a7b 100644 --- a/docs/blog/posts/changelog/added-pixelfed.md +++ b/docs/blog/posts/changelog/added-pixelfed-swarm.md @@ -4,11 +4,10 @@ categories: - CHANGELOG tags: - pixelfed -links: - - Get Support!: support.md +description: Pixelfed is like a self-hosted Instagram on the Fediverse. Here's a Docker Swarm recipe! --- -# New Recipe: Pixelfed - Federated image sharing. Think "looks like instagram, works like Mastodon" +# Added Pixelfed (swarm) Federated image sharing New recipe - Pixelfed, like Instagram on the Fediverse. Check it out [here](/docs/recipes/pixelfed/) diff --git a/docs/blog/posts/changelog/added-kavita-swarm.md b/docs/blog/posts/changelog/new-recipe-kavita-swarm.md similarity index 74% rename from docs/blog/posts/changelog/added-kavita-swarm.md rename to docs/blog/posts/changelog/new-recipe-kavita-swarm.md index 3c76108..02e2f97 100644 --- a/docs/blog/posts/changelog/added-kavita-swarm.md +++ b/docs/blog/posts/changelog/new-recipe-kavita-swarm.md @@ -6,14 +6,18 @@ tags: - kavita links: - Kavita recipe: recipes/kavita.md +description: New Recipe Added - Kavita - "Rocket-fueled" reader for manga/comics/ebooks, able to save reading position across devices/sessions +image: /images/kavita.png --- -# New Recipe: Kavita - "Rocket-fueled" reader for manga/comics/ebooks, able to save reading position across devices/sessions +# Added recipe for Kavita (swarm) So you've just watched a bunch of superhero movies, and you're suddenly inspired to deep-dive into the weird world of comic books? You're already rocking AutoPirate with Mylar and NZBGet to grab content, but how to manage and enjoy your growing collection? +![Screenshot of application]({{ page.meta.image }}){ loading=lazy } + [Kavita Reader][kavita] is a "rocket fueled self-hosted digital library which supports a vast array of file formats". Primarily used for cosuming Manga (but quite capable of managing ebooks too), Kavita's killer feature is an OPDS server for integration with other mobile apps such as Chunky on iPad, and the ability to save your reading position across multiple devices. --8<-- "common-links.md" diff --git a/docs/blog/posts/changelog/added-mastodon-kubernetes.md b/docs/blog/posts/changelog/new-recipes-mastodon-swarm.md similarity index 74% rename from docs/blog/posts/changelog/added-mastodon-kubernetes.md rename to docs/blog/posts/changelog/new-recipes-mastodon-swarm.md index 6d11fb1..5c822b6 100644 --- a/docs/blog/posts/changelog/added-mastodon-kubernetes.md +++ b/docs/blog/posts/changelog/new-recipes-mastodon-swarm.md @@ -8,14 +8,17 @@ links: - Mastodon Review: review/mastodon.md - Mastodon Kubernetes recipe: recipes/kubernetes/mastodon.md - Mastodon Docker Swarm recipe: recipes/mastodon.md +description: New Kubernetes Recipe - Mastodon - Federated social network. Think "like twitter but also like email" +# image: /images/mastodon.png --- - # New Recipe: Mastodon - Federated social network. Think "like twitter but also like email" New recipe - Mastodon, like Twitter on the Fediverse. Check out the [Kubernetes recipe][k8s/mastodon]! +![Mastodon Screenshot](/images/mastodon.png){ loading=lazy } + Mastodon is an open-source, federated (*i.e., decentralized*) social network, inspired by Twitter's "microblogging" format, and used by upwards of 6.4M early-adopters, to share links, pictures, video and text. ---8<-- "common-links.md" \ No newline at end of file +--8<-- "common-links.md" diff --git a/docs/blog/posts/changelog/review-immich.md b/docs/blog/posts/changelog/review-immich.md deleted file mode 100644 index 931c72d..0000000 --- a/docs/blog/posts/changelog/review-immich.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -date: 2022-11-10 -categories: - - CHANGELOG -tags: - - immich -links: - - Get Support!: support.md ---- - -# New Review: Immich - -New recipe - Pixelfed, like Instagram on the Fediverse. Check it out [here](/docs/recipes/pixelfed/) - - - -[Pixelfed](https://pixelfed.org) is a free and ethical, open-source, federated (*i.e., decentralized*) social image sharing platform. As [Mastodon][mastodon] is to Twitter, so Pixelfed is to Instagram. Pixelfed uses the ActivityPub protocol, allowing users to interact with other users (*on other servers*) within the protocol, such as Mastodon, PeerTube, and Friendica, making Pixelfed a part of the Fediverse. - -Much like Mastodon, Pixelfed implements chronological timelines with no implementation of content manipulation algorithms and is privacy-focused with no third party analytics or tracking. It only allows users over 16 years old to use. - ---8<-- "common-links.md" \ No newline at end of file diff --git a/docs/blog/posts/changelog/review-mastodon.md b/docs/blog/posts/changelog/review-mastodon.md deleted file mode 100644 index 47ce2df..0000000 --- a/docs/blog/posts/changelog/review-mastodon.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -date: 2022-11-10 -categories: - - CHANGELOG -tags: - - mastodon -links: - - Mastodon Review: review/mastodon.md - - Mastodon Kubernetes recipe: recipes/kubernetes/mastodon.md - - Mastodon Docker Swarm recipe: recipes/mastodon.md - - Get Support!: support.md ---- - -# New Review: Mastodon - -New recipe - Pixelfed, like Instagram on the Fediverse. Check it out [here](/docs/recipes/pixelfed.md) - - - -[Pixelfed](https://pixelfed.org) is a free and ethical, open-source, federated (*i.e., decentralized*) social image sharing platform. As [Mastodon][mastodon] is to Twitter, so Pixelfed is to Instagram. Pixelfed uses the ActivityPub protocol, allowing users to interact with other users (*on other servers*) within the protocol, such as Mastodon, PeerTube, and Friendica, making Pixelfed a part of the Fediverse. - -Much like Mastodon, Pixelfed implements chronological timelines with no implementation of content manipulation algorithms and is privacy-focused with no third party analytics or tracking. It only allows users over 16 years old to use. - ---8<-- "common-links.md" \ No newline at end of file diff --git a/docs/blog/posts/changelog/updated-metallb-v4.md b/docs/blog/posts/changelog/updated-metallb-v4.md index 65e5eac..698703b 100644 --- a/docs/blog/posts/changelog/updated-metallb-v4.md +++ b/docs/blog/posts/changelog/updated-metallb-v4.md @@ -3,9 +3,10 @@ date: 2023-01-16 categories: - CHANGELOG tags: - - kavita + - metallb links: - MetalLB recipe: /kubernetes/loadbalancer/metallb.md +description: Prior to v0.13, MetalLB was configured using a ConfigMap. This has all changed now, and CRDs are required to perform configuration (which improves syntax checking, abong other things) --- # Updated MetalLB recipe for CRDs diff --git a/docs/review/immich.md b/docs/blog/posts/reviews/review-immich-1.19.1.md similarity index 95% rename from docs/review/immich.md rename to docs/blog/posts/reviews/review-immich-1.19.1.md index 43442c9..7e6c8ec 100644 --- a/docs/review/immich.md +++ b/docs/blog/posts/reviews/review-immich-1.19.1.md @@ -1,16 +1,28 @@ --- +date: 2022-11-10 +categories: + - Review +tags: + - immich +description: Immich is a promising self-hosted alternative to Google Photos. Here's a review! title: Review / Immich - a self-hosted Google Photos alternative description: Immich is a polished and functional replacement for Google Photos upstream_version: v1.19.1 upstream_repo: https://github.com/immich-app/immich review_latest_change: Initial review! +image: /images/immich.jpg +links: + - Immich Docker Swarm recipe: recipes/immich.md --- # I'm defz going to replace Google Photos with Immich! +[Immich][review/immich] is a promising self-hosted alternative to Google Photos. Its UI and features are clearly heavily inspired by Google Photos, and like Photoprism, Immich uses tensorflow-based machine learning to auto-tag your photos! + + + | Review details | | | ----------- | ------------------------------------ | -| :material-calendar-check: Last updated | *{{ git_revision_date_localized }}* | | :octicons-number-24: Reviewed version | *[{{ page.meta.upstream_version }}]({{ page.meta.upstream_repo }})* | Immich is a promising self-hosted alternative to Google Photos. Its UI and features are clearly heavily inspired by Google Photos, and like [Photoprism][photoprism], Immich uses tensorflow-based machine learning to auto-tag your photos! @@ -155,7 +167,7 @@ Based on how the pre-production development has progressed, and the massive hung Please [join me](/#sponsored-projects) in sponsoring [@alextran1502](https://github.com/sponsors/alextran1502), to support this exceptional product! ---8<-- "review-footer.md" +--8<-- "blog-footer.md" [^1]: "wife-insurance": When the developer's wife is a primary user of the platform, you can bet he'll be writing quality code! :woman: :material-karate: :man: :bed: :cry: [^2]: There's a [friendly Discord server](https://discord.com/invite/D8JsnBEuKb) for Immich too! diff --git a/docs/review/mastodon.md b/docs/blog/posts/reviews/review-mastodon-3.5.3.md similarity index 92% rename from docs/review/mastodon.md rename to docs/blog/posts/reviews/review-mastodon-3.5.3.md index ecb193e..9ca7be8 100644 --- a/docs/review/mastodon.md +++ b/docs/blog/posts/reviews/review-mastodon-3.5.3.md @@ -1,21 +1,30 @@ --- -title: Review / Mastodon - Self-hosted twitter alternative -description: Mastodon is a globally interconnected, federated, microblogging community / social network +date: 2022-11-10 +categories: + - Review +tags: + - mastodon +links: + - Mastodon Kubernetes recipe: recipes/kubernetes/mastodon.md + - Mastodon Docker Swarm recipe: recipes/mastodon.md +description: Mastodon is like a self-hosted Twitter on the Fediverse. Here's a review! +image: /images/mastodon.png upstream_version: v3.5.3 -upstream_repo: https://github.com/mastodon/mastodon/ -review_latest_change: Initial review! --- -# Mastodon - Open Source Twitter Alternative - -| Review details | | -| ----------- | ------------------------------------ | -| :material-calendar-check: Last updated | *{{ git_revision_date_localized }}* | -| :octicons-number-24: Reviewed version | *[{{ page.meta.upstream_version }}]({{ page.meta.upstream_repo }})* | +# Review of Mastodon - Open, Federated microblogging platform Mastodon is a twitter-inspired, federated, microblogging community ("social network"), which anybody can partricipate in by joining a public instance, or running their own instance. -![Mastodon 3.5 Hero](/images/reviews/mastodon.png){ loading=lazy } + + +![Mastodon Screenshot](/images/mastodon.png){ loading=lazy } + +| Review details | | +| ----------- | ------------------------------------ | +| :octicons-number-24: Reviewed version | *[{{ page.meta.upstream_version }}]({{ page.meta.upstream_repo }})* | + +Mastodon is a twitter-inspired, federated, microblogging community ("social network"), which anybody can partricipate in by joining a public instance, or running their own instance. ## Background @@ -123,7 +132,7 @@ I want to "own" my content[^3], and I want to invest in the [Geek Cookbook commu Whichever path you take into the "fediverse", [toot me up](https://so.fnky.nz/@funkypenguin) when you get here! ---8<-- "review-footer.md" +--8<-- "blog-footer.md" [^1]: https://blog.joinmastodon.org/2019/07/statement-on-gabs-fork-of-mastodon/ [^2]: https://blog.joinmastodon.org/2021/10/trumps-new-social-media-platform-found-using-mastodon-code/ diff --git a/docs/images/ipfs.png b/docs/images/ipfs.png deleted file mode 100644 index fd295fe7493fb165366c035a8d72511e23bb8961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179008 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

I;av65#_ZQf@o zZ~n~Zo57`PYldCLBr}n@7}9cX?CJOrpKqRlpP#KRn(sf4zvx8#CFuumkC}EVvttkd zYUB-2;UcyK0Z1WM;9xn>Qk+;m-IUVJ2#M<;kw=4NMi7WS=3LrnFv8hDLD5;g6J*_( ztRda^Lfvp*_wJsSioMxr}p?2#j+gT$ft`eEK%LUN9g*jBJ0YT2;jzNvGRkq@>OjE{L05#^Gs%^K_6S& zD_DPIL}thDL8%t(w@n^U9eG$twFO!};MMX%>N*w%@-N0uRODRWEDnKuo#_J^MD z)JI&!yd?1yplFbYjI#jl@ilb#s83$LWH>DRJsh})W0-Eu^e2qF)(8o0wt?0Dg^jvB zdmzSh3Bx9X$MsI~83#tW1I@x3frFm$RIC3FVEKEZ3p$!B`Dz+*Vq7F)aaD)6^=3nt z)XP#~kv65ihTiIaropr1XopOo;p0wes7VGOQ6h6=0ah)iAA2{rbnT>`e2pD8sbkO8 z2(TK{uel1$RL;Djx9$ek&-$^f;$ER%F`4tPRK6kl>=K_hK(548wYamn*!Wzv|IlbK zd7cv{an9OG1QX(Q=$RM=7wrhrKIBOJ?G>`fc{dky_oOn{On zViC(KAkFRCt4AuMG_HKgaJmB0O8Ji9Z>hRfGHzqPBTXHjD7 ziv@GIcFN&GLi@6V2TZH2d8x zLk8r$M`>oADeu&L7$st0*oRFUhkEJOgEIh9G6UQ)z3s?}PTQU;ZJdFCO9vvNDW@R9 zFKYEKoS9a+&P#f?j8f{nv*yA%X_b$6TOh1f9e^&U)+~u!{iPdfP8wX==%Z_${DN}` za=L|qwF&{d@Q{v{9=7%}UE;GOUITkU6n$aqiy1M*ad(()Di6(PqH9|G1 z$MgmnPym2>YE|9*b@S~-p8YyzDr2R18;)?dXNw3chimbl43JlShrRFF2n!T%?enrK z_p?&M#ZtmGLrWVwNx;q!Yt%3{X&lmkxVHAweTrO`{YyL`tg^rm?&a2C2Eu4FPJ-q5 zl@GoI;?MOK-yp@Ga|pws5vHGJuO{T}nnW-t@lz_X8pe-**fJPLG~-j%b;B@D zDDvKNa%x^`{8x33ul+3j<8|gk-a!sP(pe;A19!8J$-Lne3Dzy_J0(_J$ChRui(AkR zKc?ygpMT21epY=2duhpTYJN^y^e^Rz*T%JgmYW4ymYFnCOM=)jV64y^wfXlKnSq$L zY?x&}6`EF)fQTFPK6b!Z2$nhG^nxc$=2K~JiM;~ED6i4AWsE&IIHCNzu8!6`WuSYo9x-fbh}Yy`bZYaU1xL@q8H>l>)@e2ED~Dzt*sWjdvaGwl zmcP{N;fj7FAE=RI2dR_q@^#3RxmWlcDXaMSl(b`gy{L#omv(%n=@h9 zz>H3%^kay#qd3F2x~@hicyN}Jd|*N?clx8@)pcK^QIloAVk}g?7vJPQ9lUX@E32p9 zIHTc!Pf8tv5gBlZ&popM zFs|O!Lxs|&Jy0n9qQPVyXVCE~BS`jOyTI##zLtMQWu;#|vQtn5^{5=#xkFCh-`UiB zLPlZwPdToMa_q(wIC@w#Y7J-ZNX-ZIO#0Whrsh#z51J z*d5+3!4G=?6-s!xsN1{y+0x;R-p(DzpP->qf9dL~w&sb!_xHVfZoA1W@!I-8>Sn_7 zA3e=#bscl4UV;ERdr0B?^HAaV+PElzl9pgv5^;d`aiA_b4-I8=n zh7o6~2=nh=-g9%ZXn}vF3sEjfR)al9u*OgPLcZQE@H(o!-TCxGrv@i zWZW0hZX!M8gg3Xe=GuU%i@0J~Su^9G2 - -# Use docker0 to access daemon -IPFS_API=/ip4/172.17.0.1/tcp/5001 -``` - -### Create docker-compose file - -Yes, I know. It's not as snazzy as docker swarm. Maybe we'll get there. But this implementation uses docker-compose, so create the following (_identical_) docker-compose.yml on each node: - -```yaml -version: "3" - -services: - cluster: - image: ipfs/ipfs-cluster - volumes: - - /var/ipfs/cluster:/data/ipfs-cluster - env_file: /var/data/config/ipfs/ipfs.env - ports: - - 9095:9095 - - 9096:9096 - depends_on: - - daemon - - daemon: - image: ipfs/go-ipfs - ports: - - 4001:4001 - - 5001:5001 - - 8080:8080 - volumes: - - /var/ipfs/daemon:/data/ipfs -``` - -### Launch independent nodes - -Launch all nodes independently with ```docker-compose -f ipfs.yml up```. At this point, the nodes are each running independently, unaware of each other. But we do this to ensure that service.json is populated on each node, using the IPFS_API environment variable we specified in ipfs.env. (_it's only used on the first run_) - -The output looks something like this: - -```bash -cluster_1 | 11:03:33.272 INFO restapi: REST API (libp2p-http): ENABLED. Listening on: -cluster_1 | /ip4/127.0.0.1/tcp/9096/ipfs/QmbqPBLJNXWpbXEX6bVhYLo2ruEBE7mh1tfT9s6VXUzYYx -cluster_1 | /ip4/172.18.0.3/tcp/9096/ipfs/QmbqPBLJNXWpbXEX6bVhYLo2ruEBE7mh1tfT9s6VXUzYYx -cluster_1 | /p2p-circuit/ipfs/QmbqPBLJNXWpbXEX6bVhYLo2ruEBE7mh1tfT9s6VXUzYYx -daemon_1 | Swarm listening on /ip4/127.0.0.1/tcp/4001 -daemon_1 | Swarm listening on /ip4/172.19.0.2/tcp/4001 -daemon_1 | Swarm listening on /p2p-circuit -daemon_1 | Swarm announcing /ip4/127.0.0.1/tcp/4001 -daemon_1 | Swarm announcing /ip4/172.19.0.2/tcp/4001 -daemon_1 | Swarm announcing /ip4/202.170.161.77/tcp/4001 -daemon_1 | API server listening on /ip4/0.0.0.0/tcp/5001 -daemon_1 | Gateway (readonly) server listening on /ip4/0.0.0.0/tcp/8080 -daemon_1 | Daemon is ready -cluster_1 | 10:49:19.720 INFO consensus: Current Raft Leader: QmaAiMDP7PY3CX1xqzgAoNQav5M29P5WPWVqqSBdNu1Nsp raft.go:293 -cluster_1 | 10:49:19.721 INFO cluster: Cluster Peers (without including ourselves): cluster.go:403 -cluster_1 | 10:49:19.721 INFO cluster: - No other peers cluster.go:405 -cluster_1 | 10:49:19.722 INFO cluster: ** IPFS Cluster is READY ** cluster.go:418 -``` - -### Pick a leader - -Pick a node to be your primary node, and CTRL-C the others. - -Look for a line like this in the output of the primary node: - -```bash -/ip4/127.0.0.1/tcp/9096/ipfs/QmbqPBLJNXWpbXEX6bVhYLo2ruEBE7mh1tfT9s6VXUzYYx -``` - -You'll note several addresses listed, all ending in the same hash. None of these addresses will be your docker node's actual IP address, however, since we exposed port 9096, we can substitute your docker node's IP. - -### Bootstrap the followers - -On each of the non-primary nodes, run the following, replacing **IP-OF-PRIMARY-NODE** with the actual IP of the primary node, and **HASHY-MC-HASHFACE** with your own hash from primary output above. - -```bash -docker run --rm -it -v /var/ipfs/cluster:/data/ipfs-cluster \ - --entrypoint ipfs-cluster-service ipfs/ipfs-cluster \ - daemon --bootstrap \ /ip4/IP-OF-PRIMARY-NODE/tcp/9096/ipfs/HASHY-MC-HASHFACE -``` - -You'll see output like this: - -```bash -10:55:26.121 INFO service: Bootstrapping to /ip4/192.168.31.13/tcp/9096/ipfs/QmPrmQvW5knXLBE94jzpxvdtLSwXZeFE5DSY3FuMxypDsT daemon.go:153 -10:55:26.121 INFO ipfshttp: IPFS Proxy: /ip4/0.0.0.0/tcp/9095 -> /ip4/172.17.0.1/tcp/5001 ipfshttp.go:221 -10:55:26.304 ERROR ipfshttp: error posting to IPFS: Post http://172.17.0.1:5001/api/v0/id: dial tcp 172.17.0.1:5001: connect: connection refused ipfshttp.go:708 -10:55:26.622 INFO consensus: Current Raft Leader: QmPrmQvW5knXLBE94jzpxvdtLSwXZeFE5DSY3FuMxypDsT raft.go:293 -10:55:26.623 INFO cluster: Cluster Peers (without including ourselves): cluster.go:403 -10:55:26.623 INFO cluster: - QmPrmQvW5knXLBE94jzpxvdtLSwXZeFE5DSY3FuMxypDsT cluster.go:410 -10:55:26.624 INFO cluster: - QmbqPBLJNXWpbXEX6bVhYLo2ruEBE7mh1tfT9s6VXUzYYx cluster.go:410 -10:55:26.625 INFO cluster: ** IPFS Cluster is READY ** cluster.go:418 -``` - -!!! note - You can ignore the warnings about port 5001 refused - this is because we weren't running the ipfs daemon while bootstrapping the cluster. Its harmless. - -I haven't worked out why yet, but running the bootstrap in docker-run format reset the permissions on /var/ipfs/cluster/, so look at /var/ipfs/daemon, and make the permissions of /var/ipfs/cluster the same. - -You can now run ```docker-compose -f ipfs.yml up``` on the "follower" nodes, to bring your cluster online. - -### Confirm cluster - -docker-exec into one of the cluster containers (_it doesn't matter which one_), and run ```ipfs-cluster-ctl peers ls``` - -You should see output from each node member, indicating it can see its other peers. Here's my output from a 3-node cluster: - -```bash -/ # ipfs-cluster-ctl peers ls -QmPrmQvW5knXLBE94jzpxvdtLSwXZeFE5DSY3FuMxypDsT | ef68b1437c56 | Sees 2 other peers - > Addresses: - - /ip4/127.0.0.1/tcp/9096/ipfs/QmPrmQvW5knXLBE94jzpxvdtLSwXZeFE5DSY3FuMxypDsT - - /ip4/172.19.0.3/tcp/9096/ipfs/QmPrmQvW5knXLBE94jzpxvdtLSwXZeFE5DSY3FuMxypDsT - - /p2p-circuit/ipfs/QmPrmQvW5knXLBE94jzpxvdtLSwXZeFE5DSY3FuMxypDsT - > IPFS: QmU6buucy4FX9XqPoj4ZEiJiu7xUq2dnth5puU1rswtrGg - - /ip4/127.0.0.1/tcp/4001/ipfs/QmU6buucy4FX9XqPoj4ZEiJiu7xUq2dnth5puU1rswtrGg - - /ip4/172.19.0.2/tcp/4001/ipfs/QmU6buucy4FX9XqPoj4ZEiJiu7xUq2dnth5puU1rswtrGg - - /ip4/202.170.161.75/tcp/4001/ipfs/QmU6buucy4FX9XqPoj4ZEiJiu7xUq2dnth5puU1rswtrGg -QmaAiMDP7PY3CX1xqzgAoNQav5M29P5WPWVqqSBdNu1Nsp | 6558e1bf32e2 | Sees 2 other peers - > Addresses: - - /ip4/127.0.0.1/tcp/9096/ipfs/QmaAiMDP7PY3CX1xqzgAoNQav5M29P5WPWVqqSBdNu1Nsp - - /ip4/172.19.0.3/tcp/9096/ipfs/QmaAiMDP7PY3CX1xqzgAoNQav5M29P5WPWVqqSBdNu1Nsp - - /p2p-circuit/ipfs/QmaAiMDP7PY3CX1xqzgAoNQav5M29P5WPWVqqSBdNu1Nsp - > IPFS: QmYMUwHHsaeP2H8D2G3iXKhs1fHm2gQV6SKWiRWxbZfxX7 - - /ip4/127.0.0.1/tcp/4001/ipfs/QmYMUwHHsaeP2H8D2G3iXKhs1fHm2gQV6SKWiRWxbZfxX7 - - /ip4/172.19.0.2/tcp/4001/ipfs/QmYMUwHHsaeP2H8D2G3iXKhs1fHm2gQV6SKWiRWxbZfxX7 - - /ip4/202.170.161.77/tcp/4001/ipfs/QmYMUwHHsaeP2H8D2G3iXKhs1fHm2gQV6SKWiRWxbZfxX7 -QmbqPBLJNXWpbXEX6bVhYLo2ruEBE7mh1tfT9s6VXUzYYx | 28c13ec68f33 | Sees 2 other peers - > Addresses: - - /ip4/127.0.0.1/tcp/9096/ipfs/QmbqPBLJNXWpbXEX6bVhYLo2ruEBE7mh1tfT9s6VXUzYYx - - /ip4/172.18.0.3/tcp/9096/ipfs/QmbqPBLJNXWpbXEX6bVhYLo2ruEBE7mh1tfT9s6VXUzYYx - - /p2p-circuit/ipfs/QmbqPBLJNXWpbXEX6bVhYLo2ruEBE7mh1tfT9s6VXUzYYx - > IPFS: QmazkAuAPpWw913HKiGsr1ief2N8cLa6xcqeAZxqDMsWmE - - /ip4/127.0.0.1/tcp/4001/ipfs/QmazkAuAPpWw913HKiGsr1ief2N8cLa6xcqeAZxqDMsWmE - - /ip4/172.18.0.2/tcp/4001/ipfs/QmazkAuAPpWw913HKiGsr1ief2N8cLa6xcqeAZxqDMsWmE - - /ip4/202.170.161.96/tcp/4001/ipfs/QmazkAuAPpWw913HKiGsr1ief2N8cLa6xcqeAZxqDMsWmE -/ # -``` - -[^1]: I'm still trying to work out how to _mount_ the ipfs data in my filesystem in a usable way. Which is why this is still a WIP :) - ---8<-- "recipe-footer.md" diff --git a/docs/review/index.md b/docs/review/index.md deleted file mode 100644 index 3d048a2..0000000 --- a/docs/review/index.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Awesome self-hosted app reviews -description: This list focuses on reviews of self-hosted apps themselves, rather than deployment strategies ---- -# Reviews of self-hosted apps - -Unlike the [Docker Swarm](/docker-swarm/) or [Kubernetes](/kubernetes/) sections, which focus on deployment of various applications, this section reviews the applications themselves, irrespective of the deployment methodology. - -What you'll find here are opinions and notes about various self-hosted applications, which will be updated from time-to-time to keep them "fresh" :leafy_green: - -App | Description | Date ----------|----------| --------- - [Immich][review/immich] | Google Photos replacement | 3 Aug 2022 - [Mastodon][review/mastodon] | Federated microblogging social network | 9 Aug 2022 - [Nextcloud][review/nextcloud] | Content collaboration platform | 25 Aug 2022 - - --8<-- "common-links.md" diff --git a/docs/review/nextcloud.md b/docs/review/nextcloud.md deleted file mode 100644 index 8754436..0000000 --- a/docs/review/nextcloud.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Review / Nextcloud 24 - Robust and mature content collaboration platform -description: Nextcloud is a robust, and (boringly) mature content collaboration platform -upstream_version: v24.0.4 -upstream_repo: https://github.com/nextcloud/server -review_latest_change: Refresh for v24, long time no see! ---- - -# Boringly reliable - -| Review details | | -| ----------- | ------------------------------------ | -| :material-calendar-check: Last updated | *{{ git_revision_date_localized }}* | -| :octicons-number-24: Reviewed version | *[{{ page.meta.upstream_version }}]({{ page.meta.upstream_repo }})* | - -Immich is a promising self-hosted alternative to Google Photos. Its UI and features are clearly heavily inspired by Google Photos, and like [Photoprism][photoprism], Immich uses tensorflow-based machine learning to auto-tag your photos! - -!!! warning "Pre-production warning" - The developer makes it abundantly clear that Immich is under heavy development (*although it's covered by "wife-insurance"[^1]*), features and APIs may change, and all your photos may be lost, or (worse) auto-shared with your :dragon_face: mother-in-law! Take due care :wink: - -I'm personally excited about Immich because I've recently been debating how to migrate from Google Photos, in which I'm hitting my 15GB storage limit. - -![Immich Screenshot](/images/immich.jpg){ loading=lazy } - -Immich is a bit of an outlier in the self-hosted application space in terms of its maturity.. the [repository](https://github.com/immich-app/immich) currently states that it's **not** production-ready, but it's already got both an Android and iOS app available in the respective app stores. - -Two things stand out to me here - first off, the developer actively tries to discourage users from relying on the app for anything other than testing, and secondly, by investing in the mobile apps / app stores (*which come with a cost*), they're clearly thinking long-term and are committed to the project. - -## Immich Features - -Here are the current Immich features, which I scraped directly from the repo. As you'll note, the mobile apps mostly have parity with the web app, other than administrative functions, and even have some extra features, like search.. - -| | Mobile | Web | -| - | - | - | -| Upload and view videos and photos | Yes | Yes -| Auto backup when app is opened | Yes | N/A -| Selective album(s) for backup | Yes | N/A -| Download photos and videos to local device | Yes | Yes -| Multi-user support | Yes | Yes -| Album | No | Yes -| Shared Albums | Yes | Yes -| Quick navigation with draggable scrollbar | Yes | Yes -| Support RAW (HEIC, HEIF, DNG, Apple ProRaw) | Yes | Yes -| Metadata view (EXIF, map) | Yes | Yes -| Search by metadata, objects and image tags | Yes | No -| Administrative functions (user management) | N/A | Yes - -## Background - -Primarily what I want Immich to do is to backup all my photos from both my mobile phone, and my wife's phone, so that we can have a consolidated photo backup for our family. (*We currently use a dedicated gmail account with Google Photos for this purpose, but it's run out of space and is a little convoluted*) - -We're iOS users, and we have a 2TB family iCloud account to which all of our photos are synced. Since the advent of iCloud Photo Library, it's not possible to "combine" photo libraries, so the only way we can share photos of our family is to manually add them to an album which one of us shares with the other. This is waaay too much work, and what inevitably happens is that we each end up with separate photo albums, and regularly have to send each other photos of events and kids. - -So what I'm looking for is a solution to replace Google Photos - a way for each user to upload *all* photos taken on their device, and have these photos combined into a "master album" which both parties can access, manage, and create albums from. - -## Details - -### Install - -I've written a recipe to [install Immich in Docker Swarm][immich]. Immich can also be "automatically" installed using the ansible playbook in [Premix](/premix/) 🚀. - -### Web UI - -The setup process was straightforward. After deploying Immich, I was prompted to setup a username and password, which subsequently became my admin credentials. Using these credentials, I setup a second user, and shared an album with him. Here's a video I made to illustrate the process: - - - -### Mobile app - -The Mobile app seems very polished, and based on my testing, works better than the Synology "Moments" app I was previously trialling (*especially given the volume of photos I have!*) - -

- ![Immich Screenshot](/images/reviews/immich-mobile.gif){ loading=lazy } -
Apparently this was 4000+ photos!
-
- -### Other - -Here's what the filesystem where photos are stored looks like: - -```bash -/var/data/immich/upload/49a82212-e1bb-48d9-8b8f-7076e54bd6aa/thumb/WEB/34ce58c4-8100-49d4-a5a3-f13a74b478f9.webp -/var/data/immich/upload/49a82212-e1bb-48d9-8b8f-7076e54bd6aa/thumb/WEB/34ce58c4-8100-49d4-a5a3-f13a74b478f9.jpeg -/var/data/immich/upload/49a82212-e1bb-48d9-8b8f-7076e54bd6aa/thumb/WEB/7d8abe14-77c3-4214-804a-d35d68084a2c.webp -/var/data/immich/upload/49a82212-e1bb-48d9-8b8f-7076e54bd6aa/thumb/WEB/309228ef-0b21-4986-acc4-d0c0d10e43ac.webp -/var/data/immich/upload/49a82212-e1bb-48d9-8b8f-7076e54bd6aa/thumb/WEB/309228ef-0b21-4986-acc4-d0c0d10e43ac.jpeg -/var/data/immich/upload/49a82212-e1bb-48d9-8b8f-7076e54bd6aa/thumb/WEB/7d8abe14-77c3-4214-804a-d35d68084a2c.jpeg -/var/data/immich/upload/49a82212-e1bb-48d9-8b8f-7076e54bd6aa/thumb/WEB/8adff3fe-d0ac-4855-b0ca-12a1f6ef2caf.webp -/var/data/immich/upload/49a82212-e1bb-48d9-8b8f-7076e54bd6aa/thumb/WEB/8adff3fe-d0ac-4855-b0ca-12a1f6ef2caf.jpeg -/var/data/immich/upload/49a82212-e1bb-48d9-8b8f-7076e54bd6aa/thumb/WEB/30505706-520b-4eac-89ed-9f1227802306.jpeg -/var/data/immich/upload/49a82212-e1bb-48d9-8b8f-7076e54bd6aa/thumb/WEB/30505706-520b-4eac-89ed-9f1227802306.webp -/var/data/immich/upload/cae22784-474c-4527-825c-46d7f324e8e8 -/var/data/immich/upload/cae22784-474c-4527-825c-46d7f324e8e8/original -/var/data/immich/upload/cae22784-474c-4527-825c-46d7f324e8e8/original/WEB -/var/data/immich/upload/cae22784-474c-4527-825c-46d7f324e8e8/original/WEB/2245d33b-fbc5-40ee-a50b-2a234f73e3d9.jpg -/var/data/immich/upload/cae22784-474c-4527-825c-46d7f324e8e8/thumb -/var/data/immich/upload/cae22784-474c-4527-825c-46d7f324e8e8/thumb/WEB -/var/data/immich/upload/cae22784-474c-4527-825c-46d7f324e8e8/thumb/WEB/2245d33b-fbc5-40ee-a50b-2a234f73e3d9.webp -/var/data/immich/upload/cae22784-474c-4527-825c-46d7f324e8e8/thumb/WEB/2245d33b-fbc5-40ee-a50b-2a234f73e3d9.jpeg -``` - -As you'll note, while it's true that files are stored locally, there's no filesystem-level metadata easily parsable, like yearly or album-based folders. While the files are stored locally, and *technically* you could move them elsewhere, it certainly wouldn't be easy. - -It's also not easy to access the files via any sort of sharing (*NFS, SMB, etc*), other than using the Immich UI. Par for the course though, I expect, if we want to be able to rely on the database for metadata without requiring intensive filesystem interaction. - -## Alternatives - -### Photoprism - -Until Immich, the only viable self-hosted Google Photos replacement I was aware of was [Photoprism][photoprism], which has a far wider featureset and several years of stable releases. - -Given my goal of having a non-Apple secondary backup of my family photos, let's selfishly compare the features which matter (*to me*): - -
-| Feature | Immich | Photoprism | -| ----- | ----------- | ------------------------------------ | -| :material-nas: Photos stored locally | Y | Y | -| :octicons-device-mobile-24: Automatic mobile uploads (automatic) | Y | [paid 3rd-party app](https://www.photosync-app.com/home.html) | -| :material-share-variant: Share albums with trusted users | Y | Y | -| :material-bomb-off: Stable release | haha | [2021](https://docs.photoprism.app/developer-guide/) -| :material-face-recognition: AI facial recognition | N | Y | -| :octicons-tag-24: AI tagging ("photo of dog") | Y | Y | - -
Immich vs Photoprism
-
- -Conclusion: For my secondary-backup use-case, Immich (*even in its current pre-production buggy state*) is perfectly fine. The mobile app is beautiful (*if a little buggy*), and I do appreciate the cheeky "Google Photos" theming / styling. I think it'll appeal to a lot of Google Photos refugees for this reason alone. - -### Google Photos - -OK, obviously one is self-hosted, and the other is not. This massive difference aside, again for my use-case, the other feature differences are: - -
-| Feature | Immich | Google Photos | -| ----- | ----------- | ------------------------------------ | -| :material-nas: Storage limit | :octicons-infinity-24: | 15GB :fontawesome-solid-hand-middle-finger: | -| :octicons-device-mobile-24: Automatic mobile uploads (automatic) | Y | Y (*but deletions sync with my phone, which is less-than-idea, for my secondary-backup plan*) | -| :material-share-variant: Share all photos with user | Y | Only with 1 partner :couple: | -| :material-bomb-off: Stable release | haha | Y -| :material-face-recognition: AI facial recognition | N | Y | -| :octicons-tag-24: AI tagging ("photo of dog") | Y | Y | - -
Immich vs Google Photos
-
- -**Conclusion**: I setup my secondary-backup plan when Google first announced unlimited storage for Google Photos. Now that this is no longer possible, I'm out. - -## Summary - -### TL;DR - -I'm in (*for a secondary backup to my iCloud Photo Library*) - -Based on how the pre-production development has progressed, and the massive hunger in the self-hosted community for an alternative to Google Photos, I suspect that Immich will quickly gain traction and continue its rapid pace of development. - -Please [join me](/#sponsored-projects) in sponsoring [@alextran1502](https://github.com/sponsors/alextran1502), to support this exceptional product! - ---8<-- "review-footer.md" - -[^1]: "wife-insurance": When the developer's wife is a primary user of the platform, you can bet he'll be writing quality code! :woman: :material-karate: :man: :bed: :cry: -[^2]: There's a [friendly Discord server](https://discord.com/invite/D8JsnBEuKb) for Immich too! diff --git a/mkdocs.yml b/mkdocs.yml index e6bc9e9..c97f2f7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -18,10 +18,11 @@ copyright: 'Copyright © 2016 - 2023 David Young, Funky Penguin Limited' plugins: meta: blog: - post_excerpt: required + # post_excerpt: required tags: tags_file: blog/tags.md rss: + enabled: !ENV [PROD_BUILD, true] match_path: blog/posts/.* date_from_meta: as_creation: date @@ -29,6 +30,12 @@ plugins: - categories - tags abstract_chars_count: 200 + image: https://geek-cookbook.funkypenguin.co.nz/images/site-logo.png + url_parameters: + utm_source: "geek-cookbook-blog" + utm_medium: "RSS" + utm_campaign: "feed-syndication" + extra-sass: # privacy: search: @@ -41,6 +48,7 @@ plugins: macros: verbose: true htmlproofer: + enabled: !ENV [PROD_BUILD, true] raise_error: false raise_error_excludes: 504: ['https://www.mkdocs.org/'] @@ -86,7 +94,7 @@ plugins: verbose: false enabled_if_env: ENABLE_PDF_EXPORT optimize: - enabled: + enabled: !ENV [PROD_BUILD, true] privacy: #theme_dir: mkdocs-material @@ -304,7 +312,7 @@ nav: - Reference: - Design: premix/ansible/design.md - ✅ Reviews: - - review/index.md + - blog/category/review.md - Immich: review/immich.md - Mastodon: review/mastodon.md - Nextcloud: review/nextcloud.md diff --git a/netlify_redirects.txt b/netlify_redirects.txt index 8a35506..f1e24cc 100644 --- a/netlify_redirects.txt +++ b/netlify_redirects.txt @@ -18,9 +18,10 @@ https://geeks-cookbook.funkypenguin.co.nz/* https://geek-cookbook.funkypenguin.c # Prefer "docker-swarm" to "ha-docker-swarm" /ha-docker-swarm/* /docker-swarm/:splat 301! -# Having issues with mkdocs and the way it formats changelog, for some reason -/changelog/ /blog/category/changelog/ 301! -/recent-changes/ /blog/category/changelog/ 301! +# Consolidate previous category pages with the new blog plugin +/changelog/ /blog/category/changelog/ 301! +/recent-changes/ /blog/category/changelog/ 301! +/reviews/ /blog/category/reviews/ 301! # Use a better convention for RSS feed (could add more if necessary) /rss/ /feed_rss_created.xml @@ -29,6 +30,3 @@ https://geeks-cookbook.funkypenguin.co.nz/* https://geek-cookbook.funkypenguin.c /kubernetes/start/ /kubernetes/ 301! /kubernetes/diycluster/ /kubernetes/cluster/ 301! /recipes/autopirate/mylarr/ /recipes/autopirate/mylar/ 301! - - - diff --git a/scripts/serve.sh b/scripts/serve.sh index a0b7e40..a0d3596 100755 --- a/scripts/serve.sh +++ b/scripts/serve.sh @@ -1,4 +1,4 @@ #!/bin/bash #docker pull squidfunk/mkdocs-material:latest #docker build . -t funkypenguin/mkdocs-material -docker run --rm --name mkdocs-material -it -p 8123:8000 -v ${PWD}:/docs funkypenguin/mkdocs-material serve --dev-addr 0.0.0.0:8000 --dirtyreload +docker run --rm --name mkdocs-material -it -p 8123:8000 -v ${PWD}:/docs -e PROD_BUILD=false funkypenguin/mkdocs-material serve --dev-addr 0.0.0.0:8000 --dirtyreload