mirror of
https://github.com/funkypenguin/geek-cookbook/
synced 2025-12-13 01:36:23 +00:00
Tidy up blog section (a bit)
Signed-off-by: David Young <davidy@funkypenguin.co.nz>
This commit is contained in:
8
docs/blog/category/changelog.md
Normal file
8
docs/blog/category/changelog.md
Normal file
@@ -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"
|
||||
8
docs/blog/category/note.md
Normal file
8
docs/blog/category/note.md
Normal file
@@ -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"
|
||||
7
docs/blog/category/review.md
Normal file
7
docs/blog/category/review.md
Normal file
@@ -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"
|
||||
@@ -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"
|
||||
|
||||
@@ -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]!
|
||||
|
||||
<!-- more -->
|
||||
|
||||
{ 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"
|
||||
--8<-- "common-links.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/)
|
||||
|
||||
@@ -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?
|
||||
|
||||
<!-- more -->
|
||||
|
||||
{ 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"
|
||||
@@ -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]!
|
||||
|
||||
<!-- more -->
|
||||
|
||||
{ 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"
|
||||
--8<-- "common-links.md"
|
||||
@@ -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/)
|
||||
|
||||
<!-- more -->
|
||||
|
||||
[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"
|
||||
@@ -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)
|
||||
|
||||
<!-- more -->
|
||||
|
||||
[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"
|
||||
@@ -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
|
||||
|
||||
173
docs/blog/posts/reviews/review-immich-1.19.1.md
Normal file
173
docs/blog/posts/reviews/review-immich-1.19.1.md
Normal file
@@ -0,0 +1,173 @@
|
||||
---
|
||||
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!
|
||||
|
||||
<!-- more -->
|
||||
|
||||
| Review details | |
|
||||
| ----------- | ------------------------------------ |
|
||||
| :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.
|
||||
|
||||
{ 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:
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/L1V_P2NRhlE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
||||
### 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!*)
|
||||
|
||||
<figure markdown>
|
||||
{ loading=lazy }
|
||||
<figcaption>Apparently this was 4000+ photos!</figcaption>
|
||||
</figure>
|
||||
|
||||
### 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*):
|
||||
|
||||
<figure markdown>
|
||||
| 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 |
|
||||
|
||||
<figcaption>Immich vs Photoprism</figcaption>
|
||||
</figure>
|
||||
|
||||
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:
|
||||
|
||||
<figure markdown>
|
||||
| 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 |
|
||||
|
||||
<figcaption>Immich vs Google Photos</figcaption>
|
||||
</figure>
|
||||
|
||||
**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<-- "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!
|
||||
140
docs/blog/posts/reviews/review-mastodon-3.5.3.md
Normal file
140
docs/blog/posts/reviews/review-mastodon-3.5.3.md
Normal file
@@ -0,0 +1,140 @@
|
||||
---
|
||||
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
|
||||
---
|
||||
|
||||
# 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.
|
||||
|
||||
<!-- more -->
|
||||
|
||||
{ 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
|
||||
|
||||
I've been interested in running a Mastodon instance since I [read about it](https://www.theverge.com/2017/4/4/15177856/mastodon-social-network-twitter-clone) back in 2017. I gave it a try back then, but IIRC Docker support was iffy, and the way federation worked was a bit hit-and-miss (*at least, in my attempts*) I did learn a bit about "[WebFinger](https://docs.joinmastodon.org/spec/webfinger/)" :fingers_crossed: though, which still sounds a bit dirty! :smiling_imp:
|
||||
|
||||
{ loading=lazy }
|
||||
|
||||
After abandoning my dreams of hosting an instance, I kept a few accounts on mastodon.social, experimenting with cross-posting from Micro.blog, and using the native RSS feature to provide a manually-created [changelog of new recipes](/blog/).
|
||||
|
||||
In 2022, finding myself wanting to up my "social game" without tying myself into Twitter, I started assembling a typically geeky, over-engineered workflow to [cross-post between Mastodon and Twitter](https://crossposter.masto.donte.com.br/), and easily produce RSS feeds.
|
||||
|
||||
I decided to take a fresh attempt (*5 years on*) at running [my own instance][community/mastodon], and in the process, I re-introduced myself to elements of the Mastdon experience, which I'll explain below...
|
||||
|
||||
## What's notable about Mastodon?
|
||||
|
||||
Here are my thoughts:
|
||||
|
||||
### Technology
|
||||
|
||||
1. There's a [steady cadance of ongoing new releases](https://blog.joinmastodon.org/categories/new-features/), and a dedicated [Patreon](https://www.patreon.com/user?u=619786) and [Sponsor](https://joinmastodon.org/sponsors) supporter base.
|
||||
|
||||
2. There are now (*as of April 2022*) [official mobile apps](https://blog.joinmastodon.org/2022/04/official-apps-now-available-for-ios-and-android/) for iOS and Android (*there are also dozens of 3rd-party apps which have appear over the years, but some of these are no longer updated*).
|
||||
|
||||
### Culture
|
||||
|
||||
Community is hard, [federation can be abused to harass target users and administrators](https://wilwheaton.net/2018/08/the-world-is-a-terrible-place-right-now-and-thats-largely-because-it-is-what-we-make-it/), and community moderation is generally a thankless job.
|
||||
|
||||
Social "platforms" are no longer just fun cat pictures, they're a now powerful social tool for effecting change or producing life-destroying harm, and a mature, open-source code-base is an attractive starting point[^1] for those wanting to establish[^2] their own platforms.
|
||||
|
||||
Public servers tend to serve [communities](https://joinmastodon.org/communities) of a particular interest, be it art, music, gaming, etc.
|
||||
|
||||
## Details
|
||||
|
||||
### Docker Install
|
||||
|
||||
Mastodon includes a [docker-compose](https://github.com/mastodon/mastodon/blob/main/docker-compose.yml) file for deploying under Docker, but it's not a "fire-and-forget" deal, since there are some manual steps required to migrate (or instantiate) the database, setup users, secrets, etc.
|
||||
|
||||
More importantly, since docker-compose will only run containers on a single host, this provides no resilience to failure, and no container orchestration like we're used to with Docker Swarm / Kubernetes.
|
||||
|
||||
I've adapted the docker-compose for swarm mode, and written a recipe to [install Mastodon in Docker Swarm][mastodon].
|
||||
|
||||
### Kubernetes Install
|
||||
|
||||
Mastodon's repo also [includes a helm chart](https://github.com/mastodon/mastodon/tree/main/chart), which makes the process of deploying to Kubernetes **much** simpler than either Docker or Docker Swarm. The chart isn't published on [ArtifactHUB](https://artifacthub.io/packages/search?ts_query_web=mastodon&sort=relevance&page=1) yet (*I hope to fix this with a PR*), which means it's hard to discover.
|
||||
|
||||
There are other elements I'd like to improve about the official chart, such as the use of env variables for secrets (*these should ideally be Kubernetes secrets*), but the availability of contructs such as Jobs makes the whole deployment and setup process work.
|
||||
|
||||
Here's my an opinionated guite to [installing Mastodon in Kubernetes][k8s/mastodon], which is how I've deployed my [FNKY](https://so.fnky.nz ) instance.
|
||||
|
||||
### Admin UI
|
||||
|
||||
You could probably browse any public instance to get a feel for the user-facing UI and options, but it's harder to get a feel for the admin backend without performing your own installation. Here's a quick video of the admin options to scratch that itch...
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/iDBz5HPhQl4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
||||
## Alternatives
|
||||
|
||||
### Twitter
|
||||
|
||||
OK, obviously one is a bot-filled :robot: cesspool so scary that Elon Musk doesn't want to buy it, and the other is open-source, self-hosted, federated, and can't be censored, monetized, mined, advertised to, etc.
|
||||
|
||||
Here are some other differences...
|
||||
|
||||
<figure markdown>
|
||||
| Feature | :material-twitter: Twitter | :material-mastodon: Mastodon | Notes
|
||||
| ----- | ----------- | ------------------------------------ | ----- |
|
||||
| :octicons-comment-16: A post is.. | a "tweet" | a "toot[^4]/post" :material-thought-bubble-outline: | yes, really! |
|
||||
| :material-comment-multiple-outline: Sharing a post.. | retweeting | boosting | no, not "retooting"! |
|
||||
| :material-link: Links count as | 9 chars | 23 chars | Regardless of length of URL |
|
||||
| :material-counter: Character limit | 280 | 500 | |
|
||||
| :octicons-video-24: Media | :white_check_mark: | :white_check_mark: | video/audio/images work as you'd expect
|
||||
| :material-poll: Polls | :white_check_mark: | :white_check_mark: | yes, polls too |
|
||||
| :material-sunglasses: Privacy | :white_check_mark: | :white_check_mark: | you can hide your toots! |
|
||||
| :octicons-comment-discussion-16: Threads | :white_check_mark: | :white_check_mark: | like [this](https://so.fnky.nz/web/@funkypenguin/108790252118210551)|
|
||||
| :material-sticker-emoji: Custom emoji | :x: | :white_check_mark: | like Discord, you can define custom emoji for your community |
|
||||
| :material-rss: RSS feed | :x: | :white_check_mark: | like [this](https://so.fnky.nz/web/@funkypenguin.rss) |
|
||||
| :bikini: Content warnings | :x: | :white_check_mark: | hide NSFW content, spoilers, etc |
|
||||
| :material-police-badge: Moderation | TWTR | per-instance | |
|
||||
|
||||
<figcaption>Mastodon vs Twitter</figcaption>
|
||||
</figure>
|
||||
|
||||
**Conclusion**: Although the primary differentiator is centralized "Big Tech" vs federated open-source, there are some feature advantages (*and some quirks!*) to Mastodon vs Twitter :thumbsup:
|
||||
|
||||
## Summary
|
||||
|
||||
### TL;DR
|
||||
|
||||
If you..
|
||||
|
||||
* Just like the tech..
|
||||
* Want to "*stick it to the man*"..
|
||||
* Find the concept of an isolated, themed social community attractive...
|
||||
|
||||
.. Then join one of the thousands of [available instances](https://joinmastodon.org/communities).
|
||||
|
||||
If you additionally:
|
||||
|
||||
* Prefer to self-host your own tools..
|
||||
* Want an instance to share with your community...
|
||||
|
||||
.. Then install your own instance in [Docker][mastodon] or [Kubernetes][k8s/mastodon]!
|
||||
|
||||
I want to "own" my content[^3], and I want to invest in the [Geek Cookbook community](/community/), so I chose my own instance.
|
||||
|
||||
Whichever path you take into the "fediverse", [toot me up](https://so.fnky.nz/@funkypenguin) when you get here!
|
||||
|
||||
--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/
|
||||
[^3]: I'll continue to cross-post from Mastodon to Twitter though, for visibility and engagement
|
||||
[^4]: In a [highly controversial PR](https://github.com/mastodon/mastodon/pull/16080), "toots" were renamed to "posts", although my instance [apparently still uses "Toot!"](https://static.funkypenguin.co.nz/2022/FNKY_2022-08-15_19-50-49.png) by default...
|
||||
Reference in New Issue
Block a user