Compare commits

...

19 Commits

Author SHA1 Message Date
Apfelwurm cfc015c42e update secret generation docs 2026-02-15 20:56:03 +01:00
Apfelwurm f9d3d7e02c add docker cli pr to fork maintenance 2026-02-13 14:17:39 +01:00
p4u1 2cc577af37 docs: Add docker/cli fork to abra hacking 2026-02-13 10:14:29 +01:00
Apfelwurm 0d2b6afc15 add to nav 2026-02-12 14:41:41 +01:00
Apfelwurm 3900fba85a add Resolution 037: Adopt alakazam as an official project in the Co-op Cloud Federation 2026-02-12 14:34:07 +01:00
decentral1se 8f5636e28d feat: publish 2026-02-12 09:15:29 +01:00
decentral1se dd2587228e fix: tweaks 2026-02-12 09:15:29 +01:00
iexos 38ea5271c1 fix link 2026-02-11 10:28:23 +01:00
bohne b7c04f8eb0 Remove deprecated abra command from ops tutorial 2026-02-10 08:00:46 +00:00
decentral1se 8a2bd25ded feat: passed 2026-02-03 14:39:55 +01:00
decentral1se c5185be5b6 docs: running CI yourself 2026-01-27 16:45:00 +01:00
decentral1se f61538ff10 fix: move file 2026-01-19 22:23:32 +01:00
decentral1se 5717e15966 fix: publish, new date 2026-01-19 22:21:56 +01:00
decentral1se 3bccc629b2 fix: membership fee 2026-01-19 22:21:00 +01:00
decentral1se b433dbd666 fix: formatting 2026-01-16 19:38:28 +01:00
decentral1se dd9153bf93 fix: wording 2026-01-16 19:34:08 +01:00
decentral1se 125fbe3545 fix: reworking R036 2026-01-16 19:30:47 +01:00
decentral1se 06552cc793 feat: new drafts 2026-01-16 19:02:24 +01:00
decentral1se e43dcd1238 fix: formatting 2026-01-15 22:22:18 +01:00
11 changed files with 175 additions and 20 deletions
+28
View File
@@ -99,6 +99,30 @@ The drone configuration was wired up as follows:
Please ask `@decentral1se` or on the Matrix channels for SSH access to the machine.
### Running manually on the CI server
It's convenient to be able reproduce the CI server environment yourself by SSHing to the machine and running the integration tests. Here's how you do it.
SSH config details:
```
Host int.coopcloud.tech
Hostname 51.159.168.99
User root
Port 22
IdentityFile ~/.ssh/<private-key-part>
```
Once you're in, you can run the following:
```
sudo -su abra
cd
./run-ci-int
```
You can also `cd abra` and run `bats ...` directly to trigger specific subsets of tests. See below for more tips.
### Running them locally
#### Install dependencies
@@ -416,6 +440,10 @@ Happy Hacking 🫂
We maintain a fork of [godotenv](https://git.coopcloud.tech/toolshed/godotenv) because we need inline comment parsing for environment files. You can upgrade the version here by running `go get git.coopcloud.tech/toolshed/godotenv@0<COMMID>` where `<commit>` is the latest commit you want to pin to. See [`abra#391`](https://git.coopcloud.tech/toolshed/abra/pulls/391) for more.
### `docker/cli`
We maintain a fork of [docker-cli](https://git.coopcloud.tech/toolshed/docker-cli/) because we needed to [patch port exposing](https://git.coopcloud.tech/toolshed/docker-cli/commit/2fbb22f65866ac97b47e4d47d8f855fee8c98e2a) to fix this [bug](https://github.com/docker/cli/issues/2407). Once the [fix was upstreamed](https://github.com/docker/cli/pull/6799) we can remove this fork again.
### `docker/client`
A number of modules in [pkg/upstream](https://git.coopcloud.tech/toolshed/abra/src/branch/main/pkg/upstream) are copy/pasta'd from the upstream [docker/docker/client](https://pkg.go.dev/github.com/docker/docker/client). We had to do this because upstream are not exposing their API as public.
+1 -1
View File
@@ -105,4 +105,4 @@ $ git clone https://git.coopcloud.tech/coop-cloud/MyCoolRecipe.git ~/.abra/recip
## "only updates to Labels are allowed"
See [Packaging handbook » What does "only updates to Labels are allowed" mean](maintainers/handbook/#what-does-only-updates-to-labels-are-allowed-mean).
See [Packaging handbook » What does "only updates to Labels are allowed" mean](/maintainers/handbook/#what-does-only-updates-to-labels-are-allowed-mean).
@@ -0,0 +1,33 @@
---
title: "Resolution 035: Budget 016: Sutty Website Proposal"
---
- Topic: Budget 016: Sutty Website Proposal
- Date: 2026-02-12
- Deadline: 2026-02-26
- Size: Large
## Summary
Budget 016 proposes to:
1. Compensate Sutty and Co-op Cloud community members `@edu` & `@eli` 250 USD (500 USD total) each according to their own proposed compensation.
1. Compensate `@diatom` for up to 30 hours to participate in the generative process as Co-op Cloud community delegate.
Please see [the full proposal text](https://vvvvvvaria.org/~decentral1se/cc/CoopCloud-2025WebsiteProposal-Sutty.pdf) for more details. See `Capítulo 3 > Resources estimations` for the section regarding financial estimations. The Co-op Cloud community and federation are to be consulted during this process for decision making around choosing a new website proposal. `@diatom` agrees to be a bridge between the work of `@edu`/`@eli` and the Co-op Cloud community.
## Details (Budget 016)
This resolution follows the Good Work of `@sef`/`@edu`/`@eli` in carrying out the Co-op Cloud Community Website Survey. The idea is that `@edu` and `@eli` (with the blessing of `@sef`) will now bring forward a concrete proposal for the new Co-op Cloud website based on their proposed generative process. Please see [the full proposal text](https://vvvvvvaria.org/~decentral1se/cc/CoopCloud-2025WebsiteProposal-Sutty.pdf) for all details.
#### Budget
`@edu`/`@eli`/`@diatom` will carry out this work.
Please join `#coop-cloud-new-website:autonomic.zone` to participate in this process. All community members are welcome.
The budget total is:
* 500 USD (423 EUR)
* 30 hrs * 20 EUR = 600 EUR
* **Total**: 1023 EUR
@@ -0,0 +1,26 @@
---
title: "Resolution 037: Adopt alakazam as an official project in the Co-op Cloud Federation"
---
- Topic: Resolution 037: Adopt alakazam as an official project in the Co-op Cloud Federation
- Date: 12-02-2026
- Deadline: 26-02-2026
- Size: medium
## Summary
We want to adopt the abra wrapper Alakazam (https://git.coopcloud.tech/moritz/alakazam) , which is used by KolliCloud (https://kollicloud.de) as an official project in the Co-op Cloud Federation
## Details
As we already disscussed on our Meetup and the Alakazam workshop at 39C3 end of 2025, we want to adopt the abra wrapper Alakazam (https://git.coopcloud.tech/moritz/alakazam), which is used by KolliCloud (https://kollicloud.de) as an official project in the Co-op Cloud Federation. This way, we want to start collaborative effort on teaching, writing docs, writing tests.
This includes the following (in the long run):
* tranfering the Alakazam repository to https://git.coopcloud.tech/toolshed
* creating a space in the docs for alakazam and moving the contents of the readme and the nessecary contents of https://wiki.local-it.org/s/kollicloud-wiki/doc/installation-wVp2LfBbg7
* get others to try alakazam (future Kite-Flying sessions for this)
* write tests for alakazam
* implement the option to use more than one deployment of the same application in one instance
* migrate alaconnect.yml files for the recipe (we have to figure out how multiple instances would allow this in regards to the multiple same apps in one instance)
* migrate the features (that makes sense) into abra
+28
View File
@@ -0,0 +1,28 @@
---
title: "Resolution 036: Democratic Tech Fund joins the Co-op Cloud Federation"
---
- Topic: Resolution 036: Democratic Tech Fund joins the Co-op Cloud Federation
- Date: 2026-01-19
- Deadline: 2026-02-02
- Size: Large
## Summary
The Democratic Tech Fund (DTF) is a Project-In-The-Making which has close affinity with Co-op Cloud in culture and stated goals. `@mikemh` and `@wtebbens` are active members of the community and can represent the Democratic Tech Fund. The DTF would like to join the Co-op Cloud Federation in order to establish a solid base for future collaboration.
The DTF is set up as a co-operative federation, with multi-stakeholder membership: to allow both individual as organisational membership, operational members (i.e. workers), collaborator members, council of steward members (elected) and institutional members (public and private funders).
A brief summary of the the intended goals of the DTF are as follows:
* **Build and provide the tech**: Generating working configurations of tech infrastructure and services that address actual, perceived needs, drawing on the reserves of free-libre open- source software and constructing practices of material infrastructure that are under the review and steering of the communities they service.
* **Mobilise awareness towards adoption**: highlighting the clear and present danger and our collective capacity to resist, re-make and re-imagine. There's a need for campaign work, media and visuals, and for intelligence and news about what has already been done.
* **Build the community**: nurturing local, regional and trans-regional communities and networks that are capable to articulate these alternatives, to make the change together and to sustain the economic base for radically re-oriented infrastructure.
Please see the latest Work-In-Progress [DTF concept note - v0.3](https://oficina.commonscloud.coop/s/No93qBkpxAsgYqE) for more details. Founding members include the [Free Knowledge Institute](https://freeknowledge.eu), [Commons Network](https://www.commonsnetwork.org) and [Fundación Platoniq / Goteo.org](https://goteo.org). The Free Knowledge Institute is also the fiscal host of the DTF. Please see the website of the [DTF](https://democratictech.fund) itself for more information.
DTF are happy to pay the current recommended federation membership fee.
Please feel free to join `#dtf2026:matrix.org` to keep up with DTF project developments.
+49 -17
View File
@@ -582,23 +582,6 @@ Add the `# generate=false` comment
SECRET_JWT_SECRET_VERSION=v1 # generate=false
```
## How do I specify the charset for a specific secret generation
!!! warning "Watch out for old versions of `abra` 🚧"
This feature is only available in the >= 0.10.x series of `abra`.
```
SECRET_JWT_SECRET_VERSION=v1 # charset=default,special
```
Options are:
* `special`: [source](https://github.com/decentral1se/passgen/blob/8404cb922dea92efa8c3514f0ec8c37ce12a880f/const.go#L22C29-L22C43)
* `safespecial`: [source](https://git.coopcloud.tech/toolshed/abra/src/commit/6abaf7a094df1a96599af2c4cbae1769821ad17c/pkg/secret/secret.go#L182)
* `default,special`: mix of `default` and `special`
* `default,safespecial`: mix of `default` and `safespecial`
## How do I change secret generation length?
It is possible to tell `abra` which length it should generate secrets with from your recipe config.
@@ -620,6 +603,13 @@ of passwords which admins have to type out in database shells.
## How do I change secret generation characters?
!!! warning "Watch out for old versions of `abra` 🚧"
This feature is only available in the >= 0.10.x series of `abra`.
The generation of `hex` secrets is only available in the >= 0.12.x series of `abra`.
The generation of `bytes` secrets is only available in the >= 0.13.x series of `abra`.
It is also possible to tell `abra` which characters it should use to generate secrets with from your recipe config.
You do this by adding an additional modifier in the inline comment on the secret definition in the `.env.sample` / `.env` file.
@@ -640,10 +630,52 @@ The possible Values are:
| `default,special` | `abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789!@#$%^&*_-+=` | Uses uppercase letters, lowercase letters and numbers and special characters |
| `default,safespecial` | `abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789!@#%^&*_-+=` | Uses uppercase letters, lowercase letters and numbers and console safe special characters |
| `default` | `abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789` | Uses uppercase letters, lowercase letters and numbers |
| `hex` | `0123456789abcdef` | Uses only hexadecimal characters (0-9, a-f) |
| `bytes` | N/A (generates random bytes) | Generates random bytes instead of character-based passwords (requires `length` modifier, automatically uses `encoding=base64`) |
| any other value or not setting one will be treated as `default` | `abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789` | Uses uppercase letters, lowercase letters and numbers |
The setting does only apply when you also set a length modifier to the secret (documented [here](/maintainers/handbook/#how-do-i-change-secret-generation-length)), so it is not applicable for the "easy to remember word" style generator that used when you don't set a length.
## How do I encode generated secrets?
!!! warning "Watch out for old versions of `abra` 🚧"
This feature is only available in the >= 0.13.x series of `abra`.
You can tell `abra` to encode generated secrets using the `encoding` modifier in the inline comment on the secret definition in the `.env.sample` / `.env` file.
Here is an example:
```bash
SECRET_API_KEY_VERSION=v1 # length=32 encoding=base64
```
This will generate a 32-character secret and then base64-encode it before storing.
Currently supported encoding options:
- `base64`: Base64-encodes the generated secret value
**Note:** When using `charset=bytes`, the encoding automatically defaults to `base64` even if not explicitly specified, as raw binary data needs to be encoded for safe storage.
## How do I add a prefix to generated secrets?
!!! warning "Watch out for old versions of `abra` 🚧"
This feature is only available in the >= 0.13.x series of `abra`.
You can tell `abra` to add a prefix to generated secrets using the `prefix` modifier in the inline comment on the secret definition in the `.env.sample` / `.env` file.
Here is an example:
```bash
SECRET_APP_KEY_VERSION=v1 # length=32 charset=bytes prefix=base64:
```
This will generate a 32-byte random key, base64-encode it, and prefix it with `base64:`. This is useful for applications like Laravel that expect secrets in a specific format.
The prefix is applied after any encoding transformations.
## How do I configure backup/restore?
From the perspective of the recipe maintainer, backup/restore is just more
+5 -1
View File
@@ -64,15 +64,19 @@ See the [`.gitea/PULL_REQUEST_TEMPLATE.md`](https://git.coopcloud.tech/coop-clou
## Where can maintainers find support?
### Chat
An active community exists in the [`#coopcloud-tech`](https://matrix.to/#/#coopcloud-tech:autonomic.zone?via=autonomic.zone) channel, which can answer your questions and help with issues. Please be patient when asking for support.
### Recipe Issue Tracker
If you're stuck on a problem, create an issue in your recipe's issue tracker. Users of your repository may contribute PRs, otherwise you can ask the community for support.
### Toolshed
If you're blocked by a problem in Coop Cloud's tooling, write a ticket to one of the [Toolshed](https://git.coopcloud.tech/toolshed) issue trackers. For example:
* [abra](https://git.coopcloud.tech/toolshed/abra/issues)
* [docs.coopcloud.tech](https://git.coopcloud.tech/toolshed/docs.coopcloud.tech/issues)
* [recipes.coopcloud.tech](https://git.coopcloud.tech/toolshed/recipes.coopcloud.tech/issues)
If you cannot find a repository to match your problem, you can write in the (organizing issues)[https://git.coopcloud.tech/toolshed/organising/issues] tracker. (See: [migration notice](https://git.coopcloud.tech/toolshed/organising/issues/667))
If you cannot find a repository to match your problem, you can write in the [organizing issues](https://git.coopcloud.tech/toolshed/organising/issues) tracker. (See: [migration notice](https://git.coopcloud.tech/toolshed/organising/issues/667))
-1
View File
@@ -262,7 +262,6 @@ abra app deploy <nextcloud-domain>
```
abra app ps -w <nextcloud-domain> # status check
abra app logs <nextcloud-domain> # logs trailing
abra app errors -w <nextcloud-domain> # error catcher
```
Your new `traefik` instance will detect that a new app is coming up and generate TLS certificates for it. You can see what `traefik` is up to using the same commands above but replacing `<nextcloud-domain>` with the `<traefik-domain>` you chose earlier (`abra app ls` will remind you what domains you chose :grinning:).
+5
View File
@@ -94,6 +94,8 @@ nav:
- federation/proposals/federation.md
- "Resolutions":
- federation/resolutions/index.md
- "Draft":
- federation/resolutions/index.md
- "Passed":
- federation/resolutions/passed/001.md
- federation/resolutions/passed/002.md
@@ -127,11 +129,14 @@ nav:
- federation/resolutions/passed/031.md
- federation/resolutions/passed/033.md
- federation/resolutions/passed/034.md
- federation/resolutions/passed/036.md
- "Stalled":
- federation/resolutions/stalled/013.md
- federation/resolutions/stalled/030.md
- "In Progress":
- federation/resolutions/index.md
- federation/resolutions/in-progress/035.md
- federation/resolutions/in-progress/037.md
- "Minutes":
- federation/minutes/index.md
- "Recently":