Compare commits
44 Commits
fedi-boots
...
iexos-patc
Author | SHA1 | Date | |
---|---|---|---|
9f7924af56 | |||
bd20a3f8f2
|
|||
32a209f04f
|
|||
852002171e
|
|||
d111f55448
|
|||
3c691b0605
|
|||
5d0c7a851a
|
|||
67bacf454b
|
|||
8fa5ff8ebf
|
|||
13b44e49ad
|
|||
ab3a15c751
|
|||
3631cef540 | |||
c1a479ff27 | |||
5881a5bd21 | |||
9fb33be7fb
|
|||
6e9d66dfd2 | |||
666464f18c | |||
7ca4786dd3
|
|||
fc3e2918c9 | |||
86023ee113 | |||
e775d5cc77 | |||
161dfd53ad | |||
76035f8f4d
|
|||
b67f55facd
|
|||
e85a2ed84e | |||
6bef2696fb | |||
d066d9143f | |||
00a32cf563 | |||
630045649a | |||
39363fb625 | |||
b9632f54d1 | |||
672f63e3b4 | |||
e3cc0e5c8f | |||
ab526d3626 | |||
a9844bba1f | |||
77e31bfbc3
|
|||
458399ca21
|
|||
8266f909f2
|
|||
c9c279d363 | |||
9f7037eebd | |||
7764c12a64 | |||
793d25f098 | |||
b522c93e7f | |||
d0c5ec8cfc |
26
.drone.yml
@ -5,35 +5,23 @@ steps:
|
||||
- name: bundle static
|
||||
image: plugins/docker
|
||||
settings:
|
||||
username: thecoopcloud
|
||||
username: abra-bot
|
||||
password:
|
||||
from_secret: thecoopcloud_password
|
||||
repo: thecoopcloud/coopcloud.tech
|
||||
from_secret: git_coopcloud_tech_token_abra_bot
|
||||
repo: git.coopcloud.tech/toolshed/coopcloud.tech
|
||||
tags: latest
|
||||
registry: git.coopcloud.tech
|
||||
|
||||
- name: deployment
|
||||
image: decentral1se/stack-ssh-deploy:latest
|
||||
image: git.coopcloud.tech/coop-cloud/stack-ssh-deploy:latest
|
||||
settings:
|
||||
stack: coop_cloud_site
|
||||
host: swarm-0.coopcloud.tech
|
||||
deploy_key:
|
||||
from_secret: drone_ssh_swarm.autonomic.zone
|
||||
from_secret: drone_ssh_swarm-0_coopcloud_tech
|
||||
depends_on:
|
||||
- bundle static
|
||||
|
||||
- name: notify coopcloud-dev on failure
|
||||
image: plugins/matrix
|
||||
settings:
|
||||
homeserver: https://matrix.autonomic.zone
|
||||
roomid: "IFazIpLtxiScqbHqoa:autonomic.zone"
|
||||
userid: "@autono-bot:autonomic.zone"
|
||||
accesstoken:
|
||||
from_secret: autono_bot_access_token
|
||||
depends_on:
|
||||
- bundle static
|
||||
- deployment
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
trigger:
|
||||
branch:
|
||||
- main
|
||||
|
14
README.md
@ -1,6 +1,6 @@
|
||||
# coopcloud.tech
|
||||
|
||||
[](https://build.coopcloud.tech/coop-cloud/coopcloud.tech)
|
||||
[](https://build.coopcloud.tech/toolshed/coopcloud.tech)
|
||||
|
||||
> https://coopcloud.tech
|
||||
|
||||
@ -16,12 +16,14 @@ $ hugo server
|
||||
|
||||
## Deploy me manually to the prod site
|
||||
|
||||
Need to have a docker context that points to swarm.autonomic.zone. To have permissions to push the image, need to use `docker login` using the creds in the pass store at `logins/dockerhub`
|
||||
Need to have a docker context that points to `swarm-0.coopcloud.tech`.
|
||||
|
||||
To have permissions to push the image, need to use `docker login` using your Gitea credentials
|
||||
|
||||
```bash
|
||||
docker build -t thecoopcloud/coopcloud.tech:latest .
|
||||
docker push thecoopcloud/coopcloud.tech:latest
|
||||
DOCKER_CONTEXT=autonomic-swarm docker stack deploy -c compose.yml coop_cloud_site
|
||||
docker build -t git.coopcloud.tech/toolshed/coopcloud.tech .
|
||||
docker push git.coopcloud.tech/toolshed/coopcloud.tech
|
||||
DOCKER_CONTEXT=swarm-0.coopcloud.tech docker stack deploy -c compose.yml coop_cloud_site
|
||||
```
|
||||
|
||||
The site should auto-deploy though [over here](https://build.coopcloud.tech/coop-cloud/coopcloud.tech).
|
||||
The site should auto-deploy though [over here](https://build.coopcloud.tech/toolshed/coopcloud.tech).
|
||||
|
@ -3,7 +3,7 @@ version: "3.8"
|
||||
|
||||
services:
|
||||
app:
|
||||
image: thecoopcloud/coopcloud.tech:latest
|
||||
image: git.coopcloud.tech/toolshed/coopcloud.tech:latest
|
||||
networks:
|
||||
- proxy
|
||||
healthcheck:
|
||||
|
21
config.toml
@ -4,20 +4,28 @@ title = "The Co-op Cloud"
|
||||
theme = "coopcloud.tech"
|
||||
enableemoji = true
|
||||
[menu]
|
||||
[[menu.main]]
|
||||
name = "Git"
|
||||
url = "https://git.coopcloud.tech"
|
||||
weight = 1
|
||||
[[menu.main]]
|
||||
name = "Docs"
|
||||
url = "https://docs.coopcloud.tech"
|
||||
weight = 1
|
||||
weight = 2
|
||||
[[menu.main]]
|
||||
name = "Recipes"
|
||||
url = "https://recipes.coopcloud.tech"
|
||||
weight = 3
|
||||
[[menu.main]]
|
||||
name = "Blog"
|
||||
url = "/blog/"
|
||||
weight = 2
|
||||
weight = 4
|
||||
|
||||
[params]
|
||||
[params.links]
|
||||
docs = "https://docs.coopcloud.tech/"
|
||||
docsfaq = "https://docs.coopcloud.tech/intro/faq/"
|
||||
getinvolved = "https://docs.coopcloud.tech/get-involved/"
|
||||
getinvolved = "https://docs.coopcloud.tech/intro/get-involved/"
|
||||
autonomicSite = "https://autonomic.zone"
|
||||
|
||||
[[params.links.footer]]
|
||||
@ -33,8 +41,11 @@ enableemoji = true
|
||||
name = "Mastodon"
|
||||
link = "https://social.coop/@coopcloud"
|
||||
[[params.links.footer]]
|
||||
name = "Twitter"
|
||||
link = "https://twitter.com/coop_cloud"
|
||||
name = "RSS"
|
||||
link = "https://coopcloud.tech/blog/index.xml"
|
||||
|
||||
[Permalinks]
|
||||
code = "/:filename/"
|
||||
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = true
|
||||
|
@ -53,7 +53,7 @@ For the federation, there will be more discussions and meetings coming up soon.
|
||||
|
||||
## Get Radical with us
|
||||
|
||||
We'd love to see more folks [get involved](https://docs.coopcloud.tech/get-involved/) :tada:
|
||||
We'd love to see more folks [get involved](https://docs.coopcloud.tech/intro/get-involved/) :tada:
|
||||
|
||||
If you're thinking about setting up a technology co-op, you have a software stack sitting around waiting for you to pick up now; we have the technology! It's built by tech co-ops for tech co-ops. If you're curious but don't know where to start, [get in touch](https://docs.coopcloud.tech/intro/contact/) anyway!
|
||||
|
||||
|
@ -106,7 +106,7 @@ Lists are always incomplete but we'll try anyway! Here is the cast of Co-op Clou
|
||||
|
||||
### [Compensating contributors](https://pad.autonomic.zone/s/C3uuqfSCk#Compensating-contributors)
|
||||
|
||||
We didn't want to be another project which asks people to do free work them. Instead, we set up an [Open Collective](https://opencollective.com/coop-cloud), [wrote clear documentation](https://docs.coopcloud.tech/get-involved/#compensation) and simply paid people for their contributions!
|
||||
We didn't want to be another project which asks people to do free work them. Instead, we set up an [Open Collective](https://opencollective.com/coop-cloud), [wrote clear documentation](https://docs.coopcloud.tech/intro/get-involved/#compensation) and simply paid people for their contributions!
|
||||
|
||||
We're proud to report that we paid out around 2,000 euros worth of funding for work done by external contributors. It was a pleasure to open up space for people to actually get paid for their free software work and to re-distribute the available funding to other individuals, groups and projects.
|
||||
|
||||
@ -206,7 +206,7 @@ As members of [Autonomic](https://autonomic.zone/), the idea of Co-op Cloud was
|
||||
|
||||
## Get Radical with us
|
||||
|
||||
We'd love to see more folks [get involved](https://docs.coopcloud.tech/get-involved/) :tada:
|
||||
We'd love to see more folks [get involved](https://docs.coopcloud.tech/intro/get-involved/) :tada:
|
||||
|
||||
If you're thinking about setting up a technology co-op, you have a software stack sitting around waiting for you to pick up now. We have the technology. It's built by tech co-ops for tech co-ops. If you're curious but don't know where to start, [get in touch](https://docs.coopcloud.tech/intro/contact/) anyway!
|
||||
|
||||
|
@ -19,7 +19,7 @@ Before we get into the proposal, some context on where we're at now. Some "metri
|
||||
|
||||
- Stabilised our command line client [`abra`](https://docs.coopcloud.tech/abra/) (the `v0.4` release series is out this month). We've seen a diverse group of people picking the tool up and deploying a bunch of software such as [bath.social](https://bath.social), [bonfirenetworks.org](https://bonfirenetworks.org/), [utaw.tech](https://utaw.tech), [wiki.cafe](https://wiki.cafe), [biobulkbende.org](https://biobulkbende.org) & [servers.coop](https://servers.coop) :exploding_head:
|
||||
|
||||
- Established an [Open Collective](https://opencollective.com/coop-cloud) account which has been used to [compensate contributors](https://docs.coopcloud.tech/get-involved/#compensation) and begin with [building up a monthly income](https://opencollective.com/coop-cloud/transactions?type=CREDIT) which will sustain the project beyond grant funding.
|
||||
- Established an [Open Collective](https://opencollective.com/coop-cloud) account which has been used to [compensate contributors](https://docs.coopcloud.tech/intro/get-involved/#compensation) and begin with [building up a monthly income](https://opencollective.com/coop-cloud/transactions?type=CREDIT) which will sustain the project beyond grant funding.
|
||||
|
||||
- Facilitated space for an online community of friendly & helpful individuals to come together on our [matrix rooms](https://docs.coopcloud.tech/intro/contact/). Folks on the fediverse are fairly keen [on the project](https://social.coop/@coopcloud) and the ideas of the project have been well received on [ssb](https://scuttlebutt.nz).
|
||||
|
||||
|
167
content/blog/new-year-status-update-25.md
Normal file
@ -0,0 +1,167 @@
|
||||
---
|
||||
title: "New year status update"
|
||||
date: 2025-01-10T11:32:59+02:00
|
||||
draft: false
|
||||
image: "/img/keyb.png"
|
||||
imageCredit: "Image from the Outdoor Computing Club collection by Fletcher Bach (are.na/block/21997694)"
|
||||
description: "New year status update 2025"
|
||||
---
|
||||
|
||||
Happy new year all! Here's another status update from your friendly neighbourhood democratic software federation 💫
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Kite flying hour is back 🪁
|
||||
|
||||
We are meeting weekly again!
|
||||
|
||||
Here's the [running agenda](https://pad.autonomic.zone/VtyrLUl9RWaJGgEDrncQUw?view) and [documentation](https://docs.coopcloud.tech/federation/organisers/#kite-flying-hours) for context and motivation for this regular online hangout and co-working session.
|
||||
|
||||
We are meeting every Thursday online at alternating moments to account for different timezones:
|
||||
|
||||
* timeslot 1: 12 UTC 📅
|
||||
* timeslot 2: 19 UTC 📅
|
||||
|
||||
Check in on our [Matrix channels](https://docs.coopcloud.tech/intro/contact/) to see what the upcoming time slot is or keep an eye on [this fedi thread](https://social.coop/@coopcloud/113555815289767778). There is budget to claim for active contributors. See [`R024`](https://docs.coopcloud.tech/federation/resolutions/passed/024/) for more.
|
||||
|
||||
## `social.coop` donation 💸
|
||||
|
||||
The Good People of [`social.coop`](https://social.coop) decided to make an incredible financial contribution to Co-op Cloud. Thank you all so much! Read more [here](https://social.coop/@coopcloud/113442786975981368).
|
||||
|
||||
## Updating the anarchist cookbook of recipes 🧨
|
||||
|
||||
As more comrades start to use Co-op Cloud more regularly in their daily infrastructure work, we're starting to see new recipes come in, recipes that hadn't been working correctly are fixed, while others receive upgrades and new features!
|
||||
|
||||
Here's a quick run-through of the weird and wonderful recipe updates we saw passing by in the last weeks/months.
|
||||
|
||||
* The [Mastodon recipe](https://git.coopcloud.tech/coop-cloud/mastodon) is so back (thanks to `bimbo.blog.br`)
|
||||
* The [Workadventure recipe](https://git.coopcloud.tech/coop-cloud/workadventure) is *almost* back (thanks to `wiki.cafe`)
|
||||
* A wild [Gitlab recipe](https://git.coopcloud.tech/coop-cloud/gitlab) recipe appears (thanks `@marlon0` from [MIR](https://mirnet.org))
|
||||
* A wild [Pretix recipe](https://git.coopcloud.tech/coop-cloud/pretix) appears (thanks [Local-IT](https://local-it.org) / ESN)
|
||||
* We have Signal and Telegram bridges available in the [Matrix Synapse recipe](https://git.coopcloud.tech/coop-cloud/matrix-synapse) (thanks `@Simon`, `@decentral1se`)
|
||||
* The [Limesurvey recipe](https://git.coopcloud.tech/coop-cloud/limesurvey) got Authentik LDAP Outpost support (thanks [a bunch of hackers](https://git.coopcloud.tech/coop-cloud/limesurvey/commits/branch/main))
|
||||
* A wild [XWiki recipe](https://git.coopcloud.tech/coop-cloud/xwiki) appears (thanks [a bunch of hackers](https://git.coopcloud.tech/coop-cloud/xwiki/commits/branch/main))
|
||||
* The [Zammad recipe](https://git.coopcloud.tech/coop-cloud/zammad) now has SAML support integrated with [Authentik](https://git.coopcloud.tech/coop-cloud/authentik) (thanks `@moritz`)
|
||||
* The [Rallly recipe](https://git.coopcloud.tech/coop-cloud/rallly) now has Single-Sign-on support (thanks `@simon`)
|
||||
* The [Kimai recipe](https://git.coopcloud.tech/coop-cloud/kimai) now includes SAML SSO (thanks [a bunch of hackers](https://git.coopcloud.tech/coop-cloud/kimai/commits/branch/main))
|
||||
* A wild suite of `*arr` recipes appear! That is, [Sonarr](https://git.coopcloud.tech/coop-cloud/sonarr), [Radarr](https://git.coopcloud.tech/coop-cloud/radarr) and [Prowlarr](https://git.coopcloud.tech/coop-cloud/prowlarr). Also, the [Photoprism](https://git.coopcloud.tech/coop-cloud/photo-prism) and [Navidrome](https://git.coopcloud.tech/coop-cloud/navidrome) recipes too! Huge thanks to `@Ammar` 🎉
|
||||
|
||||
## New federation members and friends 👩💻
|
||||
|
||||
A very warm welcome to the new federation members 👋 🥹
|
||||
|
||||
* [Ammar](https://docs.coopcloud.tech/federation/resolutions/passed/022/)
|
||||
* [Karrot](https://docs.coopcloud.tech/federation/resolutions/passed/019/)
|
||||
* [EOTL](https://docs.coopcloud.tech/federation/resolutions/passed/018/)
|
||||
* [Klasse & Methode](https://docs.coopcloud.tech/federation/resolutions/passed/015/)
|
||||
|
||||
We've also seen some spectacular projects getting interested in and/or deploying Co-op Cloud: [Movement Infrastructure Research](https://mirnet.org) and [Escuela Común](https://escuelacomun.yanapak.org/) / [Red Abya Yala](https://abyayala.sutty.nl/) 👀
|
||||
|
||||
Anyone can [become a member](https://docs.coopcloud.tech/federation/membership/) and help shape the project 📢
|
||||
|
||||
## New website Coming Soon ™ 🕸️
|
||||
|
||||
[`R023`](https://docs.coopcloud.tech/federation/resolutions/passed/023/) has been passed! `@sef` from [`doop.coop`](https://doop.coop) is on the case! We're hoping to have the results of a federation wide survey coming in shortly and then we can start to come up with a new design 🎉
|
||||
|
||||
## Self-management migrations 🚚
|
||||
|
||||
We ran into a few "growing pains" recently regarding how we self-manage the project. We won't bore you with the details (they're in [this small resolution](https://pad.local-it.org/5JBUdyfkQauR5yhJ_IR2xA?both) if you really must) but based on feedback we've got a new setup on `git.coopcloud.tech` 🤓
|
||||
|
||||
* [`git.coopcloud.tech/toolshed`](https://git.coopcloud.tech/toolshed): the new location for all "non-recipe" repositores such as `abra`, the docs, the website etc.
|
||||
* [`git.coopcloud.tech/coop-cloud`](https://git.coopcloud.tech/coop-cloud): now dedicated for recipe repositories.
|
||||
* [We're migrating away](https://git.coopcloud.tech/toolshed/organising/issues/667) from a single issue tracker for the entire project. We originally went with this option to have a single overview but we can now do this with [organisation-wide project boards](https://git.coopcloud.tech/toolshed/-/projects).
|
||||
* We're considering the use of the [timetracking software Kimai ](https://git.coopcloud.tech/coop-cloud/kimai) to track our time and monitor budgets but we hit the [ol' SSO question](https://git.coopcloud.tech/toolshed/organising/issues/669).
|
||||
|
||||
## New `abra` release candidate 🌈
|
||||
|
||||
It's been 10 months and 236+ commits of `abra` hacking without a release 🙈
|
||||
|
||||
We took on quite an ambitious list of new features and ran into a number of challenges along the way. Thanks everyone for your patience 💓
|
||||
|
||||
Due to the sheer amount of changes, we're going with a release candidate (`0.10.0-rc1-beta`) which people can test out before we do a proper release.
|
||||
|
||||
You can test it out by running: `abra upgrade --rc`. Please note however, this will overwrite your current `abra` binary in-place (run `which abra` to see where it is if you want to make a backup).
|
||||
|
||||
You can also grab the right binary for your system from [`git.coopcloud.tech/toolshed/abra/releases`](https://git.coopcloud.tech/toolshed/abra/releases/tag/0.10.0-rc1-beta) and manually download and `chmod +x` it. Documentation for this is [here](https://docs.coopcloud.tech/abra/upgrade/#manually).
|
||||
|
||||
⚠️ As always, **please back up** your `$ABRA_DIR` / `~/.abra` before testing. More specifically, any app `.env` files or recipe changes you're hacking on ⚠️
|
||||
|
||||
Here's the *Work-In-Progress* migration guide: [`0.9.x-beta` 👉 `0.10.x-beta`](https://docs.coopcloud.tech/abra/upgrade/#09x-beta-010x-beta).
|
||||
|
||||
If you're curious, here's the ["mega issue"](https://git.coopcloud.tech/toolshed/organising/issues/583) we used to coordinate this release (*and* the [project board](https://git.coopcloud.tech/toolshed/-/projects/29) we migrated to 😅).
|
||||
|
||||
Finally, a list of the top-level features that are ready to test is as follows.
|
||||
|
||||
### `backup-bot-two` support
|
||||
|
||||
The specification has been [published](https://docs.coopcloud.tech/specs/backup/spec/). The implementation has been [released](https://git.coopcloud.tech/coop-cloud/backup-bot-two). The `abra` machinery has been [wired up](https://git.coopcloud.tech/toolshed/abra/pulls/447).
|
||||
|
||||
We're happy to finally announce that `backup-bot-two` is available for general testing!
|
||||
|
||||
In the grand tradition of Co-op Cloud, several federation members have been running an unreleased version of `backup-bot-two` in production for some time 😂
|
||||
|
||||
The documentation is still coming together but you can dive in right now. Deploy a `backup-bot-two`, wire up labels on your recipes and `backup` / `restore` directly from `abra`.
|
||||
|
||||
Many recipe hackers have already put in the work to enable the correct `backup-bot-two` labels. Thank you all for your maintenance work!
|
||||
|
||||
See the `backup-bot-two` [`README.md`](https://git.coopcloud.tech/coop-cloud/backup-bot-two#backupbot-ii) for more 📚
|
||||
|
||||
### Improved CLI handling
|
||||
|
||||
We finally took the plunge and migrated to a more stable command-line library in `abra`. The [enormous diff](https://git.coopcloud.tech/toolshed/abra/pulls/452) is pretty gnarly.
|
||||
|
||||
The good news is that there are now several improvements for convenient and ergonomic use of `abra` on the command-line 🌻
|
||||
|
||||
* You can now generate `abra` manpages for your system! See `abra man --help` for more.
|
||||
* The handling of `--` on the command-line is now stable again. For example, running `abra app cmd 1312.net app --user nobody -- ls -lha` works.
|
||||
* Autocompletion works for flags and for flag arguments. So you can `abra app ls -[tab]` and see a list of all possible flags. And you can `abra app ls -s [tab]` to get a list of all servers. Happy tabbin' ⌨️
|
||||
* We now have an `EXAMPLES` section for all commands in the `--help` output. Please let us know what we can improve and don't hesitate to send your docs patches!
|
||||
* It is finally possible to combine "shorthand" flags into one. For example, before: `abra app deploy -C -n 1312.net` now: `abra app deploy -Cn 1312.net`
|
||||
|
||||
#### "Operator collaboration"
|
||||
|
||||
For context, the problem in a nutshell is: when you work with others and you deploy stuff with `abra`, how do you let your collaborators know what you did?
|
||||
|
||||
At the moment, several collectives are manually syncing a Git repository somewhere under `$ABRA_DIR` / `~/.abra`. We want to eventually bring this support into `abra` itself but we're still researching how to support the existing diverse workflows.
|
||||
|
||||
In the meantime, the foundations have been implemented and are now available in `abra`. A huge thanks to `@p4u1` from [K & M](https://klasse-methode.it) for implementing a huge part of this work.
|
||||
|
||||
Here's the docs:
|
||||
* [Remote recipes](https://docs.coopcloud.tech/operators/handbook/#remote-recipes)
|
||||
* [Saving the version to the app .env file](https://docs.coopcloud.tech/operators/handbook/#saving-the-version-to-the-app-env-file)
|
||||
* [How is the new deployment version determined?](https://docs.coopcloud.tech/operators/handbook/#how-is-the-new-deployment-version-determined)
|
||||
|
||||
### Integration test suite
|
||||
|
||||
`abra` now has an automated integration test suite. It's humming away each night running (so far) 290+ tests which keep us grounded. For those curious, it's [implemented in Bash](https://git.coopcloud.tech/toolshed/abra/src/branch/main/tests/integration) 😌 Thanks to comrade `@mirsal` for loaning us the server resources 💞
|
||||
|
||||
## What we're up to next 🔭
|
||||
|
||||
It's hard to have a clear overview with so much going on but this is what seems to be gathering momentum in the channels and on the issue trackers:
|
||||
|
||||
* More inclusive documentation tool (aka "edit the docs without having to know Git and Python") ([`#665`](https://git.coopcloud.tech/toolshed/organising/issues/665)).
|
||||
* We now have a [`Co-op Cloud Docs Channel`](https://matrix.to/#/#coop-cloud-docs:autonomic.zone) and are discussing [ways to improve terminology](https://git.coopcloud.tech/toolshed/organising/issues/664) in the project.
|
||||
* Improving the recipe release workflow with `abra` ([`#663`](https://git.coopcloud.tech/toolshed/organising/issues/663)) and related, [The Maintainers Proposal ™](https://pad.autonomic.zone/42Ier8ZgQ-CUgBsFKUmdpQ?view)
|
||||
* TUI replacement for `abra app ls` ([`#657`](https://git.coopcloud.tech/toolshed/organising/issues/657))
|
||||
* Going collectively further down the "operator collaboration" rabbit hole (specifically, how to remotely sync deployment changes to fellow operators) ([`#467`](https://git.coopcloud.tech/toolshed/organising/issues/467))
|
||||
* We want to move towards a 1.0 stable release of `abra` in the near future. The discussion is beginning over on [`#670`](https://git.coopcloud.tech/toolshed/organising/issues/670).
|
||||
|
||||
The new directions of our project will always be democratically determined by participants and federation members, so please get involved to have your say 📢
|
||||
|
||||
## We're reading this month 📚 ☕
|
||||
|
||||
### SYNWARE
|
||||
|
||||
**Free software syndicates**
|
||||
|
||||
> The present volume inaugurates the Synware collection (sinwɛːʁ) on free software syndicalism. This collection explores the modalities of using, creating, and maintaining digital technologies collectively. Synware documents decentralized free software, their usage and community organization as much technical as conceptual, aesthetic and political.
|
||||
|
||||
More info, credits and an online PDF are all [here](https://oxygen.offdem.net/pub/synware-free-software-syndicates).
|
||||
|
||||
## Get Radical with us 🚩🏴
|
||||
|
||||
We’d love to see more folks [get involved](https://docs.coopcloud.tech/intro/get-involved/) 🎉
|
||||
|
||||
If you’re thinking about setting up a technology co-op, you have a software stack sitting around waiting for you to pick up now; we have the technology! It’s built by tech co-ops for tech co-ops.
|
||||
|
||||
If you’re curious but don’t know where to start, [get in touch](https://docs.coopcloud.tech/intro/contact/) anyway!
|
@ -33,7 +33,7 @@ We're now a grand total of [8 `abra` hackers](https://git.coopcloud.tech/coop-cl
|
||||
|
||||
## Get Radical with us
|
||||
|
||||
We'd love to see more folks [get involved](https://docs.coopcloud.tech/get-involved/) :tada:
|
||||
We'd love to see more folks [get involved](https://docs.coopcloud.tech/intro/get-involved/) :tada:
|
||||
|
||||
If you're thinking about setting up a technology co-op, you have a software stack sitting around waiting for you to pick up now; we have the technology! It's built by tech co-ops for tech co-ops. If you're curious but don't know where to start, [get in touch](https://docs.coopcloud.tech/intro/contact/) anyway!
|
||||
|
||||
|
187
content/blog/selfhosted-infrastructure-any%.md
Normal file
@ -0,0 +1,187 @@
|
||||
|
||||
---
|
||||
title: "Selfhosted Infrastructure Any%"
|
||||
date: 2024-03-30T16:00:00+00:00
|
||||
draft: false
|
||||
image: "/img/speedrun.jpg"
|
||||
---
|
||||
|
||||
A Co-op Cloud speedrun attempt livestream! Brought to you by by libre software.
|
||||
|
||||
<!--more-->
|
||||
|
||||
It'd been so long since [the last Co-op Cloud demo video](https://asciinema.org/a/405836) that, since then, our core command-line tool `abra` had been completely rewritten (from Bash to Golang), and the entire Co-op Cloud project moved from an in-house Autonomic production to a participatory, democratic [Co-op Cloud federation](https://docs.coopcloud.tech/federation/). Definitely time for an update!
|
||||
|
||||
So, Co-op Cloud nerd `@3wc` picked up the fine tradition of [speedrunning](https://en.wikipedia.org/wiki/Speedrunning) for a "Selfhosted Infrastructure Any%" livestream – attempting to beat their personal best time of 46m17s to deploy chat (Matrix / Fluffychat), microblogging (Hometown), and file-/calendar-sharing (Nextcloud) behind single sign-on (Keycloak).
|
||||
|
||||
<iframe title="Selfhosted Infrastructure Any%" width="560" height="315" src="https://tv.undersco.re/videos/embed/0044ff41-bf84-4b53-a6e0-4f7d7ce38622" frameborder="0" allowfullscreen="" sandbox="allow-same-origin allow-scripts allow-popups"></iframe>
|
||||
|
||||
Before we dive into the write-up, mega-thanks to audience member `@yala` for putting together an excellent write-up during the stream, including some insightful questions. And, of course, to everyone who came along, and everyone who helped signal-boost the announcement beforehand!
|
||||
|
||||
# Concept
|
||||
|
||||
The integrated set-up of Keycloak/Matrix/Hometown/Nextcloud is a running start for a small-to-medium group looking for alternatives to corporate spyware. It comprises solid alternatives to Dropbox/Google Drive, Twitter, and Slack/Discord/Whatsapp. And, the entire stack can be hosted on a cheap server (or even an old laptop or desktop computer), and the services can be accessed using reasonably slick mobile and desktop apps.
|
||||
|
||||
Single sign-on means that in some ways, this set-up is even more usable, even for non-technical users, than the corporate equivalents. And, highlighting where Co-op Cloud can help, getting this combination of tools running manually without Co-op Cloud (that is, following the separate set-up instructions for each platform) is a non-trivial technical challenge.
|
||||
|
||||
The choice of apps is primarily geared towards working groups of 3-200 people, and the focus is on internal coördination platforms rather than publication.
|
||||
|
||||
## Preparation
|
||||
|
||||
To try and simulate an experience of setting up these apps for the first time, and as a nod to the purist conditions popular with videogame speedruns, the demo starts with a blank Debian Docker image (`docker run debian`) and a blank Debian 12 server. (All commands below are run inside that container, unless specified otherwise).
|
||||
|
||||
To avoid needing to screenshare DNS and server configuration, there are DNS records for `speedrun.coopcloud.tech` and `*.speedrun.coopcloud.tech` set up, and a pre-generated SSH key has permission to log into the server as root.
|
||||
|
||||
## Howto / script
|
||||
|
||||
### 1 Local setup
|
||||
|
||||
```bash
|
||||
apt update && apt install vim curl wget openssh-client -y
|
||||
export EDITOR=vim
|
||||
```
|
||||
|
||||
(The recommended installation instructions for `abra` require both `curl` and `wget` for some reason. An issue has been opened to figure that out: [`#591`](https://git.coopcloud.tech/coop-cloud/organising/issues/591))
|
||||
|
||||
The next step is to copy-paste this from the [`abra` installation instructions](https://docs.coopcloud.tech/operators/tutorial/#install-abra):
|
||||
|
||||
```bash
|
||||
curl https://install.abra.coopcloud.tech | bash
|
||||
```
|
||||
|
||||
> An audience member commented that `curl X | bash` is not amazing security, and indeed downloading [the latest `abra` release binary](https://git.coopcloud.tech/coop-cloud/abra/releases) manually, and comparing the file checksums, would be more secure – patches to [`docs.coopcloud.tech`](https://git.coopcloud.tech/coop-cloud/docs.coopcloud.tech/) extremely welcome! See more on [`#593`](https://git.coopcloud.tech/coop-cloud/organising/issues/593).
|
||||
|
||||
Then, running `abra autocomplete bash` shows the necessary commands to set us up some autocompletion for `abra` commands.
|
||||
|
||||
### 2. Server set-up
|
||||
|
||||
The next step, on the virtual server, is to run the ["Server set-up" section](https://docs.coopcloud.tech/operators/tutorial/#server-setup) of the Co-op Cloud docs:
|
||||
|
||||
```bash
|
||||
ssh speedrun.coopcloud.tech
|
||||
# docker install convenience script
|
||||
wget -O- https://get.docker.com | bash
|
||||
|
||||
# setup swarm
|
||||
docker swarm init
|
||||
docker network create -d overlay proxy
|
||||
```
|
||||
|
||||
(Skipping adding the current user to the `docker` group, because `root` already has permission to access the Docker daemon)
|
||||
|
||||
> As above, `wget ... | bash` is a bit wacky, this is the Docker-recommended installation method but there are others – patches welcome!
|
||||
|
||||
Lastly, back on the local machine, `abra app server add speedrun.coopcloud.tech`
|
||||
|
||||
### 3. Traefik
|
||||
|
||||
```bash
|
||||
abra app new traefik
|
||||
abra app config traefik.speedrun.coopcloud.tech
|
||||
abra app deploy traefik.speedrun.coopcloud.tech -c -n
|
||||
```
|
||||
|
||||
(`-c` to skip waiting for the container to come up, and `-n` to skip the confirmation prompt)
|
||||
|
||||

|
||||
|
||||
### 4. Keycloak
|
||||
|
||||
```bash
|
||||
abra app new keycloak --secrets
|
||||
abra app config keycloak.speedrun.coopcloud.tech
|
||||
abra app deploy keycloak.speedrun.coopcloud.tech -c -n
|
||||
```
|
||||
|
||||
Then the Keycloak interface is available at `https://keycloak.speedrun.coopcloud.tech`, necessary to set up the OpenID Connect "clients" for single sign-on for the other apps.
|
||||
|
||||

|
||||
|
||||
### 5. Matrix
|
||||
|
||||
```bash
|
||||
abra app new matrix-synapse
|
||||
```
|
||||
|
||||
Meanwhile, by this point Keycloak is alive, and ready to create a new "client". Doing so requires specifying a "client ID", and generates a new "client secret", both of which get added:
|
||||
|
||||
```bash
|
||||
abra app config matrix-synapse.speedrun.coopcloud.tech --secrets
|
||||
# fill in SSO details
|
||||
abra app secret insert matrix-synapse.speedrun.coopcloud.tech keycloak_client_secret v1 (value)
|
||||
abra app deploy matrix-synapse.speedrun.coopcloud.tech -n -c
|
||||
```
|
||||
|
||||

|
||||
|
||||
### 6. Fluffychat
|
||||
|
||||
|
||||
```bash
|
||||
abra app new fluffychat
|
||||
abra app config fluffychat.speedrun.coopcloud.tech -n -c
|
||||
```
|
||||
|
||||

|
||||
|
||||
### 7. Hometown
|
||||
|
||||
```bash
|
||||
abra app new hometown
|
||||
```
|
||||
|
||||
Again, a new Keycloak "client" is needed, giving us a client secret and client ID.
|
||||
|
||||
Additionally (at least, for now), it's necessary to do some slightly cursed hacking on the server:
|
||||
|
||||
```bash
|
||||
docker run -it git.coopcloud.tech/coop-cloud-chaos-patchs/hometown:v4.0.15-hometown-1.1.1 bash
|
||||
/usr/local/bin/docker-entrypoint.sh bundle exec rake secret # once for otp_secret
|
||||
/usr/local/bin/docker-entrypoint.sh bundle exec rake secret # then a second time for secret_key
|
||||
/usr/local/bin/docker-entrypoint.sh bundle exec rake mastodon:webpush:generate_vapid_key
|
||||
```
|
||||
|
||||
Then manually insert the secrets, generate the remaining ones, and edit in the `VAPID_PUBLIC_KEY` and the other SSO details:
|
||||
|
||||
```bash
|
||||
abra app secret insert hometown.speedrun.coopcloud.tech vapid_private_key v1 <value>
|
||||
abra app secret insert hometown.speedrun.coopcloud.tech otp_secret v1 <value>
|
||||
abra app secret insert hometown.speedrun.coopcloud.tech secret_key v1 <value>
|
||||
abra app config hometown.speedrun.coopcloud.tech
|
||||
# set OIDC_* settings, and VAPID_PUBLIC_KEY
|
||||
```
|
||||
|
||||
Now, finally, the app can be deployed!
|
||||
|
||||
```bash
|
||||
abra app deploy hometown.speedrun.coopcloud.tech -n -c
|
||||
```
|
||||
|
||||

|
||||
|
||||
### 8. Nextcloud
|
||||
|
||||
```bash
|
||||
abra app new nextcloud --secrets
|
||||
abra app deploy nextcloud.speedrun.coopcloud.tech
|
||||
```
|
||||
|
||||
Annoyingly, Nextcloud needs stuff done in the web interface, and in the PHP config file, for SSO. So, with another new Keycloak client set up, the next step is logging into https://nextcloud.speedrun.coopcloud.tech, going to "Apps", installing "OIDC login by pulsejet", and then editing the config file:
|
||||
|
||||
```bash
|
||||
abra app run nextcloud.speedrun.coopcloud.tech
|
||||
apt update && apt install vim
|
||||
vim config/config.php
|
||||
# fill in from https://git.coopcloud.tech/coop-cloud/nextcloud#how-do-i-integrate-with-keycloak-sso
|
||||
```
|
||||
|
||||
(in the demo, this was done from the server, but the above approach is probably conceptually simpler)
|
||||
|
||||

|
||||
|
||||
## Closing thoughts
|
||||
|
||||
Even though no records got broken, this was fun to make, and definitely a better way to prepare for an in-person demo than silent solo-hacking. It's also nice to get a little "this is how Co-op Cloud is currently looking" demo video out of it.
|
||||
|
||||
If you have ideas for future streams, hit us up on Mastodon ([@coopcloud@social.coop](https://social.coop/@coopcloud/)) or dive into our Matrix ([#coopcloud:autonomic.zone](https://matrix.to/#/#coopcloud:autonomic.zone)). Otherwise, follow us directly on owncast ([`@cast@cast.coopcloud.tech`](https://cast.coopcloud.tech/)) and/or peertube ([@coopcloud@tv.undersco.re](https://tv.undersco.re/a/coopcloud/)) to hear about future streams and videos when they happen!
|
@ -15,7 +15,7 @@ Happy September folks! Time for another recap of what we've been up to.
|
||||
|
||||
Our rewrite of `abra`, the Co-op Cloud command-line tool, continues apace: the `server`/`recipe` commands are completed, progress can be seen on [TODO.md](https://git.coopcloud.tech/coop-cloud/go-abra/src/branch/main/TODO.md). We're working on design and usability as we go. The new command-line seems to remove the need to install Docker locally which is a huge win for portability :partly_sunny:
|
||||
|
||||
`@roxxers` has set up our own Golang package repositories in [coop-cloud/coopcloud.tech#20](https://git.coopcloud.tech/coop-cloud/coopcloud.tech/issues/20#issuecomment-8201), so we can now do things like `go get coopcloud.tech/abra` for package installations.
|
||||
`@roxxers` has set up our own Golang package repositories in [toolshed/coopcloud.tech#20](https://git.coopcloud.tech/toolshed/coopcloud.tech/issues/20#issuecomment-8201), so we can now do things like `go get coopcloud.tech/abra` for package installations.
|
||||
|
||||
`@roxxers` also put together [`abra-git`](https://aur.archlinux.org/packages/abra-git/), an Arch AUR package of `abra` :rainbow:
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
+++
|
||||
title = "abra"
|
||||
vanity = "https://git.coopcloud.tech/coop-cloud/go-abra"
|
||||
vanity = "https://git.coopcloud.tech/toolshed/go-abra"
|
||||
aliases = [
|
||||
"/abra/cli",
|
||||
"/abra/cli/app",
|
||||
@ -15,4 +15,4 @@ aliases = [
|
||||
"/abra/secret",
|
||||
"/abra/web",
|
||||
]
|
||||
+++
|
||||
+++
|
||||
|
@ -1,4 +1,4 @@
|
||||
+++
|
||||
title = "tagcmp"
|
||||
vanity = "https://git.coopcloud.tech/coop-cloud/tagcmp"
|
||||
+++
|
||||
vanity = "https://git.coopcloud.tech/toolshed/tagcmp"
|
||||
+++
|
||||
|
@ -13,6 +13,6 @@
|
||||
},
|
||||
{
|
||||
"left": "What about other alternatives?",
|
||||
"right": "Co-op Cloud helps fill a gap between the personal and the industrial-scale: it's easier to use than [Kubernetes](https://kubernetes.io/) or [Ansible](https://www.ansible.com/), does more to support multi-server, multi-tenant deployments than [Cloudron](https://www.cloudron.io/), and is much easier than manual deployments. [See all the comparisons with other tools](https://docs.coopcloud.tech/intro/faq/#what-about-alternative)."
|
||||
"right": "Co-op Cloud helps fill a gap between the personal and the industrial-scale: it's easier to use than [Kubernetes](https://kubernetes.io/) or [Ansible](https://www.ansible.com/), does more to support multi-server, multi-tenant deployments than [Cloudron](https://www.cloudron.io/), and is much easier than manual deployments. [See all the comparisons with other tools](https://docs.coopcloud.tech/intro/comparisons/)."
|
||||
}
|
||||
]
|
||||
|
BIN
static/img/keyb.png
Normal file
After Width: | Height: | Size: 2.8 MiB |
BIN
static/img/speedrun-fluffychat.webp
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
static/img/speedrun-hometown.webp
Normal file
After Width: | Height: | Size: 146 KiB |
BIN
static/img/speedrun-keycloak.webp
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
static/img/speedrun-matrix.webp
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
static/img/speedrun-nextcloud.webp
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
static/img/speedrun-traefik.webp
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
static/img/speedrun.jpg
Normal file
After Width: | Height: | Size: 262 KiB |
@ -35,11 +35,11 @@
|
||||
"deprecated": false,
|
||||
"description": "Modern CSS framework based on Flexbox",
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^9.8.6",
|
||||
"autoprefixer": "^10.0.0",
|
||||
"clean-css-cli": "^5.0.0",
|
||||
"node-sass": "^4.14.1",
|
||||
"node-sass": "^9.0.0",
|
||||
"postcss-cli": "^7.1.2",
|
||||
"rimraf": "^4.0.0"
|
||||
"rimraf": "^5.0.0"
|
||||
},
|
||||
"files": [
|
||||
"css",
|
||||
|
@ -350,4 +350,8 @@ div.thumbnail {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.highlight {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
@ -8,5 +8,9 @@
|
||||
<p>
|
||||
Copyleft {{ now.Format "2006"}} Autonomic Cooperative
|
||||
</p>
|
||||
|
||||
<!-- NOTE(d1): for https://social.coop/settings/verification
|
||||
due to requiring 'rel="me"', we can't stuff this in the config.toml -->
|
||||
<a style="display:none;" rel="me" href="https://social.coop/@coopcloud">Mastodon</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
{{ $title := print .Site.Title " | " .Title }}
|
||||
{{ if .IsHome }}{{ $title = .Site.Title }}{{ end }}
|
||||
{{/* scss compiling */}}
|
||||
@ -8,8 +8,12 @@
|
||||
{{ $style := resources.Get "scss/main.scss" | resources.ToCSS $options }}
|
||||
{{ template "_internal/opengraph.html" . }}
|
||||
{{ template "_internal/twitter_cards.html" . }}
|
||||
<link href='{{ $style.RelPermalink }}' rel="stylesheet">
|
||||
<meta name="go-import" content="coopcloud.tech/tagcmp git https://git.coopcloud.tech/coop-cloud/tagcmp">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href='{{ $style.RelPermalink }}' rel="stylesheet" />
|
||||
{{ with .OutputFormats.Get "rss" -}}
|
||||
{{ printf `<link rel=%q type=%q href=%q title=%q />` .Rel .MediaType.Type .Permalink site.Title | safeHTML }}
|
||||
{{ end }}
|
||||
|
||||
<meta name="go-import" content="coopcloud.tech/tagcmp git https://git.coopcloud.tech/coop-cloud/tagcmp" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>{{ $title }}</title>
|
||||
</head>
|
||||
|