Compare commits

..

No commits in common. "main" and "new-post" have entirely different histories.

21 changed files with 18 additions and 335 deletions

View File

@ -4,22 +4,14 @@ 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 = 2
[[menu.main]]
name = "Recipes"
url = "https://recipes.coopcloud.tech"
weight = 3
weight = 1
[[menu.main]]
name = "Blog"
url = "/blog/"
weight = 4
weight = 2
[params]
[params.links]
@ -41,11 +33,8 @@ enableemoji = true
name = "Mastodon"
link = "https://social.coop/@coopcloud"
[[params.links.footer]]
name = "RSS"
link = "https://coopcloud.tech/blog/index.xml"
name = "Twitter"
link = "https://twitter.com/coop_cloud"
[Permalinks]
code = "/:filename/"
[markup.goldmark.renderer]
unsafe = true

View File

@ -1,60 +0,0 @@
---
title: "April 2023 funding report"
date: 2023-04-13T11:32:59+02:00
draft: false
image: "/img/comp-squat.jpg"
imageCredit: "Image from the Outdoor Computing Club collection by Fletcher Bach (are.na/fletcher-bach)."
description: "April 2023 funding report"
---
Were coming to the end of another funded chunk of work, heres what happened 🤟
<!--more-->
## What happened?
At the start of 2023, we announced [our next major round of funding](https://coopcloud.tech/blog/new-year-status-update/), this time from a private donor. We would like to thank them, and the [individual contributors on our OpenCollective](https://opencollective.com/coop-cloud#section-contributors), once again, for financially supporting our work and enabling us to push the project forward 💗
## Tooling updates
Theres a new `abra` available and if you havent upgraded, [please go ahead](https://docs.coopcloud.tech/abra/upgrade/)! Theres a [migration guide](https://docs.coopcloud.tech/abra/upgrade/#06x-beta-07x-beta) available and the full changelog is [here](https://git.coopcloud.tech/coop-cloud/abra/releases/tag/0.7.0-beta).
The idea behind the `0.7.x` series of `abra` was to fix several critical bugs and also re-factor - and, in some cases, remove - some of the more unreliable parts of the tool. Some of the main improvements are:
* `abra` has a more stable interaction model with SSH. Weve seen a dramatic decrease in obscure SSH related errors and hope that will be a thing of the past 😌
* Weve got the beginnings of machine-readable output! Try running ([with `jq` installed](https://stedolan.github.io/jq/download/)) `abra app ls -m | jq '.[].apps[].appName`. This has enabled such wonders as [`abra.php`](https://social.coop/@coopcloud/110125297575197185)!
* `abra` now continues to work during outages of `git.coopcloud.tech` - removing one dependency on a central point of failure, on the path to eventually [further decentralising the recipe catalogue infrastructure](https://git.coopcloud.tech/coop-cloud/organising/issues/139).
Lastly, were also happy to share news of `kadabra`, a server-side companion tool which is available for general alpha-testing (here be dragons!) which has been developed by `@Moritz`, a member of [Local-IT](https://local-it.org). Thank you `@Moritz` and Local-IT!
`kadabra` is about helping perform automatic upgrades of apps in your Co-op Cloud deployment. `abra` now attaches some extra metadata to the deployed app, and `kadabra` can read that and make a decision about whether or not to perform an automated upgrade. Its all new, and we welcome brave alpha-testers to check it out!
## The Federation bootstrap meeting
> Update: read more about our progress on [this post](/blog/federation-bootstrapped/)
Were delighted to announce that we have finally bootstrapped the federation 🎉 The process is far from over, but the wheels are now officially turning: we had 13 in attendance at the founding meeting, representing 7 collectives.
One of the main goals of the session was to come to agreement on what decision-making protocol to use. Thankfully, this was a success, and we now have a way to collectively make decisions together using consent and consensus. This means that Autonomic has completed the process of decentering itself as a main decision maker of the project and from now, will submit decisions to a vote like any other member of the federation.
We will be publishing all public federation minutes, decisions, plans, etc. [here](https://docs.coopcloud.tech/federation/).
## Finances
We have reached our goals for this current chunk of funded work and we still have funds remaining! This is money which was budgeted to support future administration and pay members for participating in the meetings (yet to be invoiced for). We will be transferring this money to the [Co-op Cloud Open Collective](https://opencollective.com/coop-cloud) once we finish up some remaining finance admin. In this way, we can also start to make collective finances more transparent.
## Whats next?
On the technical side of things, we will continue to identify critical bug fixes and improvements in `abra` and publish new versions. We hope to bring `kadabra` to a stable release soon and expand the collectives who are running the software.
For the federation, there will be more discussions and meetings coming up soon. We aim to continue thinking through how to organise our internal processes, for example, membership guidelines, financial sustainability and prioritisation of development efforts.
## Get Radical with us
We'd love to see more folks [get involved](https://docs.coopcloud.tech/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!
We have [these amazing flyers](/pdf/flyercoopcloud.pdf) now (massive thanks to `@analuisa`)! Print, distribute, share, spread the word 🎺

View File

@ -194,7 +194,7 @@ As the public beta is now in effect, we are generally interested in the followin
## Public Money, Public Power
We'd like to say a **HUGE** thanks to the [ECF](https://culturalfoundation.eu/) who [funded this work towards the public beta](https://culturalfoundation.eu/stories/cosround4-autonomic-co-operative). We couldn't have gotten this far without their support and understanding during this process.
We'd like to say a **HUGE** thanks to our the [ECF](https://culturalfoundation.eu/) who [funded this work towards the public beta](https://culturalfoundation.eu/stories/cosround4-autonomic-co-operative). We couldn't have gotten this far without their support and understanding during this process.
We feel it is important to emphasise that funding democratic technology collectives with public money delivers democratic outcomes!

View File

@ -1,44 +0,0 @@
---
title: "The Federation is bootstrapped"
date: 2023-04-17T11:32:59+02:00
draft: false
image: "/img/solifedi.jpg"
imageCredit: "Solidarity by Roger Peet (instagram.com/toosphexy)"
description: "The democratic wheels are turning."
---
The democratic wheels are turning. We've successfully had the Federation Boostrap ™ meeting and things are up and running! Here's what we now know.
<!--more-->
### Public documentation
As of [Resolution 005](https://docs.coopcloud.tech/federation/resolutions/passed/005/), we now have public documentation for the federation.
Grab a beverage and dive in on [`docs.coopcloud.tech/federation`](https://docs.coopcloud.tech/federation).
### Decision making
In the [bootstrap meeting](https://docs.coopcloud.tech/federation/minutes/2022-03-03/), we decided on a decision making protocol in [Resolution 001](https://docs.coopcloud.tech/federation/resolutions/passed/001/). This has since been put to great use and we're seeing resolutions coming in and getting voted on. All resolutions that are passed are documented over [here](https://docs.coopcloud.tech/federation/resolutions/).
### Membership & dues
The federation currently has [9 members](https://docs.coopcloud.tech/federation/membership/) 🤓 As per [Resolution 002](https://docs.coopcloud.tech/federation/resolutions/passed/002/), all members present at the [bootstrap meeting](https://docs.coopcloud.tech/federation/minutes/2022-03-03/) are now members. Thanks everyone for turning up and joining in!
We've done some Open Collective adminstration and It is now possible to pay membership dues 🤑 Please submit an expense on behalf of your collective against the "Federation membership dues" tier. You can do that by clicking [here](https://opencollective.com/coop-cloud/contribute/federation-membership-dues-55111/checkout).
Membership is open if you're interested in joining! See [this FAQ question](https://docs.coopcloud.tech/federation/faq/#how-do-i-join-the-federation) for more information on how to get started. If you're hosting, developing or using free software which has some relation to Co-op Cloud, we'd encourage you to join the federation!
### Finances
Autonomic has published documentation about how the federation finances work [here](https://docs.coopcloud.tech/federation/finance/). If anything is unclear, please let us know!
As of today, the Open Collective balance represents the total sum of money available to the federation. This is currently **6,507.14 GBP** 🎉 This money is made up the ongoing Open Collective "Infrastructure Sustainability" tier donations and the remainder of [our previous round of funding](/blog/april-2023-funding-report/) (budget for this funding available to review [here](/blog/new-year-status-update/)). Thanks again for the support folks 😍
In [Resolution 003](https://docs.coopcloud.tech/federation/resolutions/passed/003/), we decided on budgets for paid work and an hourly rate. If you're a member of the federation, please submit budget proposals to get paid for your work!
### Meeting schedule
There is a poll currently flying around in the members only federation channel on Matrix. Please take a look and fill in your times! We will aim to discuss a fixed meeting schedule (which takes all members timezones into account) going forward, so we can avoid the organisational churn of online polls.
-- decentral1se on behalf of Autonomic

View File

@ -17,13 +17,13 @@ We're delighted to report that we have secured more funding! The proposal we wro
## New community hackers & organisers, w e l c o m e 🌻
We've seen a lot of activity in the Matrix channels in the last months. It's been great to have a steady stream of new people step into the project. We've received wonderfully constructive feedback! We're happy to welcome members of [Arso](https://arso.xyz) and [Agaric](https://agaric.coop) into the project and see them testing out Co-op Cloud.
We've seen a lot of activity in the Matrix channels in the last months. It's been great to see a steady stream of new people step into the project. We've received wonderfully constructive feedback! We're happy to welcome members of [Arso](https://arso.xyz) and [Agaric](https://agaric.coop) into the project and see them testing out Co-op Cloud.
We're now a grand total of [8 `abra` hackers](https://git.coopcloud.tech/coop-cloud/abra/src/branch/main/AUTHORS.md)! It's reassuring to know that folks who want to dive in and hack on `abra` can do so without too much trouble. `abra` is now `0.6.0-beta`, see [the docs](https://docs.coopcloud.tech/abra/upgrade/) for how to upgrade.
We're now a grand total of [8 `abra` hackers](https://git.coopcloud.tech/coop-cloud/abra/src/branch/main/AUTHORS.md)! It's reassuring to see that folks who want to dive in and hack on `abra`, have been able to do so without too much trouble. `abra` is now `0.6.0-beta`, see [the docs](https://docs.coopcloud.tech/abra/upgrade/) for now to upgrade.
## FOSDEM 2023 talk confirmed
`@decentral1se` will be at [FOSDEM 2023](https://fosdem.org/2023) doing [a talk](https://fosdem.org/2023/schedule/event/sovcloud_the_co_operative_cloud/) in the Sovereign Cloud devroom. Maybe see you there if you're around for some Co-op Cloud Beverages & Chats 🍺 Here's the abstract for the talk:
`@decentral1se` will be at [FOSDEM 2023](https://fosdem.org/2023) doing [a talk](https://fosdem.org/2023/schedule/event/sovcloud_the_co_operative_cloud/) in the Soverign Cloud devroom. Maybe see you there if you're around for some Co-op Cloud Beverages & Chats 🍺 Here's the abstract for the talk:
> Co-op Cloud is a software stack that aims to make hosting libre software applications simple for small service providers such as tech co-ops who are looking to standardise around an open, transparent and scalable infrastructure. It uses the latest container technologies and configurations are shared into the commons for the benefit of all.
>

View File

@ -1,187 +0,0 @@
---
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)
![screenshot of Traefik dashboard](/img/speedrun-traefik.webp)
### 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.
![screenshot of Keycloak login page](/img/speedrun-keycloak.webp)
### 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
```
![screenshot of a terminal showing the above abra commands](/img/speedrun-matrix.webp)
### 6. Fluffychat
```bash
abra app new fluffychat
abra app config fluffychat.speedrun.coopcloud.tech -n -c
```
![screenshot of fluffychat login page](/img/speedrun-fluffychat.webp)
### 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
```
![screenshot of the livestream, showing the speedrun timer, a quite-bad webcam
still, a terminal window with the above abra commands, and a chat log](/img/speedrun-hometown.webp)
### 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)
![screenshot of nextcloud login page](/img/speedrun-nextcloud.webp)
## 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!

View File

@ -1,3 +0,0 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

View File

@ -35,11 +35,11 @@
"deprecated": false,
"description": "Modern CSS framework based on Flexbox",
"devDependencies": {
"autoprefixer": "^10.0.0",
"clean-css-cli": "^5.0.0",
"node-sass": "^9.0.0",
"autoprefixer": "^9.8.6",
"clean-css-cli": "^4.3.0",
"node-sass": "^4.14.1",
"postcss-cli": "^7.1.2",
"rimraf": "^5.0.0"
"rimraf": "^3.0.2"
},
"files": [
"css",

View File

@ -350,8 +350,4 @@ div.thumbnail {
}
}
}
}
.highlight {
margin-bottom: 1rem;
}
}

View File

@ -8,9 +8,5 @@
<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>

View File

@ -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,12 +8,8 @@
{{ $style := resources.Get "scss/main.scss" | resources.ToCSS $options }}
{{ template "_internal/opengraph.html" . }}
{{ template "_internal/twitter_cards.html" . }}
<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" />
<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">
<title>{{ $title }}</title>
</head>