Compare commits

...

35 Commits

Author SHA1 Message Date
decentral1se 70e7eebf82
feat: new mins
continuous-integration/drone/push Build is passing Details
2024-04-21 14:08:19 +02:00
decentral1se 1e0fb2859a
docs: links for members
continuous-integration/drone/push Build is passing Details
2024-04-08 10:48:23 +02:00
decentral1se 064a26e182
docs: long secret names
continuous-integration/drone/push Build is passing Details
2024-04-06 23:57:49 +02:00
basebuilder 6550aa1d1d adjust Operator Handbook backup/restore
continuous-integration/drone/push Build is passing Details
2024-04-06 14:47:31 +02:00
basebuilder f22ca6f570 update Operators Handbook backup/restore
continuous-integration/drone/push Build is passing Details
2024-04-06 14:44:19 +02:00
basebuilder cfd2fd1911 improve style and add Manually storing app data to abra/cheet-sheet
continuous-integration/drone/push Build is passing Details
2024-04-06 14:14:14 +02:00
basebuilder 36e18bdc62 Add Restarting an App refactor style abra/cheet-sheet.md
continuous-integration/drone/push Build is passing Details
2024-04-06 13:12:47 +02:00
decentral1se ff39cf10b6
docs: wording on 022
continuous-integration/drone/push Build is passing Details
2024-04-05 00:02:59 +02:00
decentral1se f0875a735a
fix: it is large, money involved
continuous-integration/drone/push Build is passing Details
2024-04-05 00:00:30 +02:00
decentral1se a04faab11e
docs: 022 publish
continuous-integration/drone/push Build is passing Details
2024-04-04 23:57:44 +02:00
decentral1se 39c493aac9
docs: installer prereqs
continuous-integration/drone/push Build is passing Details
2024-04-03 00:55:30 +02:00
decentral1se 747e8001d8
chore: remove tabs
continuous-integration/drone/push Build is passing Details
2024-04-03 00:50:55 +02:00
decentral1se 930d2217e0
docs: use wget/curl & also show source on top
See coop-cloud/organising#591
2024-04-03 00:50:54 +02:00
basebuilder 38c6ec1c6b minor text and styling improvements to Operators Tutorial
continuous-integration/drone/push Build is passing Details
2024-04-02 10:39:24 +02:00
Mayel de Borniol 3066cc1cea Running an offline coop-cloud server
continuous-integration/drone/push Build is passing Details
2024-04-01 20:19:04 +01:00
3wc 5fba3ba21b Fix link to recent federation meeting minutes (whoops)
continuous-integration/drone/push Build is passing Details
2024-04-01 10:49:30 -03:00
basebuilder e0838a33f5 add EOTL & Karrot to Federation Members
continuous-integration/drone/push Build is passing Details
2024-04-01 15:36:42 +02:00
decentral1se 7facef8d30
docs: 018/9 passed
continuous-integration/drone/push Build is passing Details
2024-04-01 13:24:34 +02:00
3wc 895e7c2245 Rename latest meeting minutes
continuous-integration/drone/push Build is passing Details
2024-03-30 13:20:55 -03:00
decentral1se a17d1aee36
docs: code of coop
continuous-integration/drone/push Build is passing Details
See https://pad.autonomic.zone/PtNbWo-7Tt-CKXvC6kxvZQ?view
2024-03-30 09:01:21 +01:00
decentral1se ace5fcfff3
fix: formatting
continuous-integration/drone/push Build is passing Details
2024-03-29 12:08:58 +01:00
decentral1se 27870f0c43
docs: new minutes in list
continuous-integration/drone/push Build is passing Details
2024-03-29 12:08:09 +01:00
decentral1se affbd71af7
docs: new fedi meet minutes
continuous-integration/drone/push Build is passing Details
2024-03-29 12:05:34 +01:00
decentral1se 3eb5e4e8b4
feat: inspo
continuous-integration/drone/push Build is passing Details
2024-03-28 22:12:39 +01:00
decentral1se c161031d3b
docs: remove old cruft
continuous-integration/drone/push Build is passing Details
2024-03-28 17:14:44 +01:00
decentral1se b2c2fb0149
docs: point to caddy work
continuous-integration/drone/push Build is passing Details
See coop-cloud/organising#388
2024-03-27 07:46:29 +01:00
decentral1se 062a9dfe25
docs: design prime directives
continuous-integration/drone/push Build is passing Details
2024-03-27 07:42:26 +01:00
decentral1se a90de581d9
fix: unbork warning box
continuous-integration/drone/push Build is passing Details
2024-03-27 07:38:04 +01:00
decentral1se 991dd3d78f
fix: remove moar, turn into warning
continuous-integration/drone/push Build is passing Details
2024-03-27 07:36:30 +01:00
decentral1se 7675df7d7c
docs: warn on version
continuous-integration/drone/push Build is passing Details
Closes coop-cloud/organising#543
2024-03-27 07:14:24 +01:00
decentral1se 0fe493b959
docs: log in/out issue
continuous-integration/drone/push Build is passing Details
Closes coop-cloud/organising#562
2024-03-27 07:00:19 +01:00
decentral1se 45446f0168
docs: contributing guidelines
continuous-integration/drone/push Build is passing Details
See coop-cloud/organising#576
2024-03-27 06:55:11 +01:00
decentral1se a5d8c0fc9f
docs: remove server note
continuous-integration/drone/push Build is passing Details
Closes coop-cloud/organising#588
2024-03-27 06:32:57 +01:00
decentral1se cbbf06ca47
fix: lists formatting
continuous-integration/drone/push Build is passing Details
2024-03-25 23:11:10 +01:00
decentral1se 38d5d5e89f
docs: formatting, deadline & add to list
continuous-integration/drone/push Build is passing Details
2024-03-25 22:58:59 +01:00
17 changed files with 708 additions and 100 deletions

View File

@ -7,62 +7,132 @@ title: Cheat sheet
!!! info
not all flags are listed here.
!!! warning
Definitely set up autocomplete or you'll be sad
`abra autocomplete bash/zsh/fizsh`
### Abra Autocomplete
### create and deploy a new app:
- `abra app new $RECIPE`
flags: `-s/--server`, `-D/--domain`, `-S/--secrets`, `-p/--pass`
- `abra app config $APPNAME`
- `abra app secret generate $APPNAME -a`
flags: `-p/--pass`, `-a/--all`
- `abra app deploy $APPNAME`
flags: `-f/--force`, `-C/--chaos`
Definitely set up autocomplete or you'll be sad :sob: `abra` supports `bash`,
`zsh`, and `fizsh` just run
### undeploy and remove an app
- back up any data you don't want to lose
- `abra app undeploy $APPNAME`
- `abra app rm --volumes $APPNAME`
flags: `-f/--force`, `-V/--volumes`
```
$ abra autocomplete bash
```
### add/remove server
- `abra server add $SERVER`
- `abra server remove $SERVER`
flags: `-s/--server`
### upgrade abra
- `abra upgrade`
flags: `--rc`
### Create & deploy an app
### upgrade a recipe
- `abra recipe upgrade $RECIPE`
flags: `-x,y,z/--major,minor,patch`
- `abra recipe sync $RECIPE`
flags: `-x,y,z`
- `abra recipe release $RECIPE [$VERSION]`
flags: `-p/--publish`, `-r/--dry-run`, `-x,y,z`
```
$ abra app new $RECIPE`
```
Optional flags: `-s/--server`, `-D/--domain`, `-S/--secrets`, `-p/--pass`
```
$ abra app config $APPNAME
$ abra app secret generate $APPNAME -a
```
Optional flags: `-p/--pass`, `-a/--all`
```
$ abra app deploy $APPNAME
```
Optional flags: `-f/--force`, `-C/--chaos`
### Restarting an app
To run `restart` you need to specify the `<service>` name with the default being `app`
```
$ abra app restart <domain> app
```
### Undeploy & remove an app
Back up any data you don't want to lose
```
$ abra app undeploy $APPNAME
$ abra app rm --volumes $APPNAME
```
Optional flags: `-f/--force`, `-V/--volumes`
### Upgrade abra
To upgrade `abra` itself, run the following:
```
$ abra upgrade
```
Option flags: `--rc`
### Upgrade a recipe
```
$ abra recipe upgrade $RECIPE`
```
Option flags: `-x,y,z/--major,minor,patch`
```
$ abra recipe sync $RECIPE
```
Optional flags: `-x,y,z`
```
$ abra recipe release $RECIPE [$VERSION]
```
Optional flags: `-p/--publish`, `-r/--dry-run`, `-x,y,z`
### Manually restoring app data
To manually restore app data or configurations, you can use the `cp` command as:
```
$ abra app cp <domain> path/to/.app.conf app:/home/app/
$ abra app cp <domain> path/to/data app:/home/app/
```
*Note: the destination must be a directory and not a filename*
### Make changes to a recipe
Edit the files in `~/.abra/recipe/$RECIPENAME`
Deploy the changed version to your test instance
Determine how serious your change is (semver.org for reference)
```
$ abra recipe release $RECIPE [$VERSION]
```
### make a change to a recipe
- edit the files in `~/.abra/recipe/$RECIPENAME`
- deploy the changed version to your test instance
- determine how serious your change is (semver.org for reference)
- `abra recipe release $RECIPE [$VERSION]`
### Advanced Listing using `jq`
Several `abra` commands can output JSON formatted tables, and can thus be queried and filtered with the tool [jq](https://stedolan.github.io/jq/ "jq JSON Query tool"). We can also format these outputs with [tv](https://github.com/uzimaru0000/tv "tv Table Viewer") into a pretty table.
Currently, `abra recipe ls`, `abra server ls`, and `abra app ls` support the `-m` machine readable output flag which outputs JSON.
#### Filter recipes by "category"
`abra recipe ls -m | jq '[.[] | select(.category == "Utilities") ]' | tv`
```
$ abra recipe ls -m | jq '[.[] | select(.category == "Utilities") ]' | tv
```
As you can see we, we're selecting all recipes where category is "Utilities".
#### Filter apps by state `deployed`
!!! info
@ -71,9 +141,8 @@ As you can see we, we're selecting all recipes where category is "Utilities".
!!! info
`abra app ls` lists apps grouped into a server object, with statistics about the server. In `jq` we can select the entire apps list with `.[].apps[]`.
`abra app ls -m -S |jq '[.[].apps[] | select(.status == "deployed") | del(.upgrade)]' |tv`
```
$ abra app ls -m -S |jq '[.[].apps[] | select(.status == "deployed") | del(.upgrade)]' |tv
```
The `del(.upgrade)` filter filters out available versions for the recipe in question for that row. It could be useful to leave in if you want a list of deployed apps that need an upgrade.

9
docs/abra/design.md Normal file
View File

@ -0,0 +1,9 @@
---
title: Design
---
## Design Prime Directives
* De-coupling: it should be possible to use the recipes without relying on
`abra`. The commons of recipes should live and function independently of
`abra`.

View File

@ -2,6 +2,19 @@
title: Hack
---
## Contributing
Welcome to Hacking the Planet with `abra`! We're looking forward to see what
you come up. If you have any questions, don't hesitate to ask 💖 If any of your
changes seems a bit controversial, it's probably to come have a chat first to
avoid heartache.
In general, we're into the idea of "Optimistic Merging" (instead of
"Pessimistic Merging" based on our understanding of
[C4](https://hintjens.gitbooks.io/social-architecture/content/chapter4.html)
(described further down under "Development Process" and also [in this blog
post](http://hintjens.com/blog:106)).
## Quick start
Get a fresh copy of the `abra` source code from [here](https://git.coopcloud.tech/coop-cloud/abra).

View File

@ -2,14 +2,40 @@
title: Install
---
## Installer script source
You can view that [here](https://git.coopcloud.tech/coop-cloud/abra/src/branch/main/scripts/installer/installer).
## Installer prerequisites
* `tar`
* `wget`
* `curl` (only if using `curl` method below)
## Stable release
### Wget
```
wget -q -O - https://install.abra.coopcloud.tech | bash
```
### Curl
```
curl https://install.abra.coopcloud.tech | bash
```
## Release candidate
### Wget
```
wget -q -O - https://install.abra.coopcloud.tech | bash -s -- --rc
```
### Curl
```
curl https://install.abra.coopcloud.tech | bash -s -- --rc
```
@ -36,20 +62,16 @@ Otherwise, you downloaded a corrupted file and you should re-download it.
Follow the guide [here](https://docs.coopcloud.tech/abra/hack/)
## Installer script source
You can view that [here](https://git.coopcloud.tech/coop-cloud/abra/src/branch/main/scripts/installer/installer).
## Using Docker
```
docker run \
-v $HOME/.abra:/.abra \
git.coopcloud.tech/coop-cloud/abra app ls
-v $HOME/.abra:/.abra \
git.coopcloud.tech/coop-cloud/abra app ls
```
!!! note
If you're using symlinks, e.g. for [sharing
`~/.abra`](/operators/handbook/#sharing-abra), add more `-v` options for each
directory you're symlinking to, e.g. `-v
$HOME/Projects/CoopCloud/apps:/home/user/Projects/CoopCloud/apps`
If you're using symlinks, e.g. for [sharing
`~/.abra`](/operators/handbook/#sharing-abra), add more `-v` options for
each directory you're symlinking to, e.g. `-v
$HOME/Projects/CoopCloud/apps:/home/user/Projects/CoopCloud/apps`

View File

@ -0,0 +1,160 @@
---
title: Code of Co-operation
---
> Huge thanks to the folks at [Varia](https://varia.zone/) &
> [LURK](https://lurk.org) who carefully prepared wonderful Code of Conduct
> documents which we have adapted for our needs (with permission). See the
> original documents [here](https://varia.zone/en/pages/code-of-conduct.html)
> and [there](https://lurk.org/TOS.txt).
Co-op Cloud is used by several communities coming from a variety of cultural,
ethnic and professional backgrounds. We strive for to be welcoming to people of
these various backgrounds and provide a non-toxic and harassment-free
environment.
The Code of Conduct is a set of guidelines that help establish shared values
and ensure that behaviour that may harm participants is avoided.
We acknowledge that we come from different backgrounds and all have certain
biases and privileges. Therefore, this Code of Conduct cannot account for all
the ways that people might feel excluded, unsafe or uncomfortable. We commit to
open dialogues, and as such this Code of Conduct is never finished and should
change whenever needed. We amend this document over time so it reflects the
priorities and sensitivities of the community as it changes.
It is a collective responsibility for all of us to enact the behaviour
described in this document.
## Expected behaviour
We expect each other to:
### Be considerate...
...of each other, the space we enter, the Co-op Cloud community and the
practices that it houses.
### Be open and generous...
...while trying not to make assumptions about others. This can include
assumptions about identity, knowledge, experiences or preferred pronouns. Be
generous with our time and our abilities, when we are able to. Help others, but
ask first. There are many ways to contribute to a collective practice, which
may differ from our individual ways.
### Be respectful...
...of different viewpoints and experiences. Respect physical and emotional
boundaries. Be respectful of each others' limited time and energy. Take each
other and each other's practices seriously. Acknowledge that this might lead to
disagreement. However, disagreement is no excuse for poor manners.
### Be responsible....
...for the promises we make, meaning that we follow up on our commitments. We
take responsibility for the good things we do, but also for the bad ones. We
listen to and act upon respectful feedback. We correct ourselves when
necessary, keeping in mind that the impact of our words and actions on other
people doesn't always match our intent.
### Be dedicated...
...which means not letting the group happen to us, but making the group
together. We participate in the group with self-respect and don't exhaust
ourselves. This might mean saying how we feel, setting boundaries, being clear
about our expectations. Nobody is expected to be perfect in this community.
Asking questions early avoids problems later. Those who are asked should be
responsive and helpful.
### Be empathetic...
..by actively listening to others and not dominating discussions. We give each
other the chance to improve and let each other step up into positions of
responsibility. We make room for others. We are aware of each other's feelings,
provide support where necessary, and know when to step back. One's idea of
caring may differ from how others want to be cared for. We ask to make sure
that our actions are wanted.
### Foster an inclusive environment...
...by trying to create opportunities for others to express views, share skills
and make other contributions. Being together is something we actively work on
and requires negotiation. We recognize that not everyone has the same
opportunities, therefore we must be sensitive to the context we operate in.
There are implicit hierarchies that we can challenge, and we should strive to
do so. When we organize something (projects, events, etc.), we think about how
we can consider degrees of privilege, account for the needs of others, promote
an activist stance and support other voices.
## Unacceptable behaviour
### No structural or personal discrimination
Attitudes or comments promoting or reinforcing the oppression of any groups or
people based on gender, gender identity and expression, race, ethnicity,
nationality, sexuality, sexual orientation, religion, disability, mental
illness, neurodiversity, personal appearance, physical appearance, body size,
age, or class. Do not claim “reverse-isms”, for example “reverse racism”.
### No harrassment
Neither public nor private. Also no deliberate intimidation, stalking,
following, harassing photography or recording, disruption of events,
aggressive, slanderous, derogatory, or threatening comments online or in person
and unwanted physical or electronic contact or sexual attention. No posting or
disseminating libel, slander, or other disinformation.
### No violation of privacy
Namely publishing others private information, such as a physical or electronic
address, without explicit permission. Do not take or publish photos or
recordings of others after their request to not do so. Delete recordings if
asked.
### No unwelcome sexual conduct
Including unwanted sexual language, imagery, actions, attention or advances.
### No destructive behaviour
Or any other conduct which could reasonably be considered inappropriate. This
includes (but is not exclusive to) depictions of violence without content
warnings, consistently and purposely derailing or disrupting conversations, or
other behaviour that persistently disrupts the ability of others to engage in
the group or space.
## Intervention procedure
**Immediate intervention (help is needed now!)**
If you are feeling unsafe, you can immediately contact the Co-op Cloud members
who are tasked with making sure the code of co-operation is respected.
These contact people are members of Co-op Cloud who will do their best to help,
or to find the correct assistance if relevant/necessary. Here is the list so
far. If you would like to help in this task, please also feel free to volunteer
to be a support member.
> handle: `sordidwhiskey` contact:
> [helo@coopcloud.tech](mailto:helo@coopcloud.tech) handle: `3wc` contact:
> [helo@coopcloud.tech](mailto:helo@coopcloud.tech)
For example, something happened during a still-ongoing online event and needs
to be acted upon right away. Action is taken immediately when this violation of
the code of co-operation is reported. This could involve removing an attendee
from said event.
## Non-immediate intervention (a situation that requires more time)
Other violations need to be considered and consulted upon with more people or
in a more measured way. For example: If you experience an ongoing pattern of
harrassment; if you witness structurally unacceptable behaviour; if somebody
keeps "accidentally" using discriminatory language, after being asked to stop.
If you feel comfortable or able, discuss the issues with the involved parties
before consulting a mediator. We prefer to constructively resolve disagreements
together and work to right the wrong, when it is possible and safe to do so.
However, if the problems still persist, those who are responsible for enforcing
the code of co-operation can help you deal with these kinds of problems.
Contact the members listed above. Information will be handled with sensitivity.

View File

@ -38,4 +38,10 @@ This is the public facing page where we publish all things federation in the ope
[Tools We Use](/federation/tools){ .md-button .md-button--primary }
- __Code of Co-operation__
Be excellent to each other 💝
[Read More](/federation/code-of-coop){ .md-button .md-button--primary }
</div>

View File

@ -4,15 +4,17 @@ title: Membership
> Are you also interested in joining the federation? Please see [Resolution 002](/federation/resolutions/passed/002/) for our process on how to join. If you have any questions, [drop us a line](/intro/contact/) with us for a chat
| Name | Dues paid up? | Notes | Contact |
| -------- | -------- | -------- |-------- |
| Agaric | - | - | `@wolcen:matrix.org` |
| Autonomic | - | - | `@3wc`, `@cas`, `@knoflook`, `@travvy`, `@aadil` |
| Bonfire | - | - | `@mayel:matrix.org` + Ivan (`@cambriale:matrix.org`) |
| Doop.coop | - | - | `@yusf:gottsnack.net` |
| Klasse & Methode | - | - | `@p4u1_f4u1:matrix.org` |
| Local IT | - | - | Philipp (`@yksflip:matrix.kaputt.cloud`) + `@moritz:matrix.local-it.org` |
| Mirsal ™ | - | - | `@mirsal:1312.media` |
| UTAW | - | - | `@javielico:matrix.org` |
| Name | Dues Paid | Notes | Contact |
| --------- | --------- | -------- |-------- |
| Agaric | - | - | `@wolcen:matrix.org` |
| [Autonomic](https://autonomic.zone) | - | - | `@3wc`, `@cas`, `@knoflook`, `@travvy`, `@aadil` |
| [Bonfire](https://bonfirenetworks.org) | - | - | `@mayel:matrix.org` + Ivan (`@cambriale:matrix.org`) |
| [Doop.coop](https://doop.coop) | - | - | `@yusf:gottsnack.net` |
| [EOTL](https://eotl.supply) | - | - | `@basebuilder:pub.solar` |
| [Karrot](https://karrot.world) | - | - | `@nicksellen:matrix.org` |
| [Klasse & Methode](https://codeberg.org/Klasse-Methode) | - | - | `@p4u1_f4u1:matrix.org` |
| [Local IT](https://local-it.org/) | - | - | Philipp (`@yksflip:matrix.kaputt.cloud`) + `@moritz:matrix.local-it.org` |
| Mirsal ™ | - | - | `@mirsal:1312.media` |
| [UTAW](https://utaw.tech) | - | - | `@javielico:matrix.org` |
| [BeWater](https://bewater.contact) | Waiver | - | `@decentral1se` |
| ruangrupa | - | - | Henry `@babystepper:matrix.org` |
| [ruangrupa](https://ruangrupa.id) | - | - | Henry `@babystepper:matrix.org` |

View File

@ -0,0 +1,125 @@
---
title: 2024-03-29
---
## Meta
* Time: 29-03-2024
* Present: d1, p4u1, mo
* Call: https://vc.autistici.org/CoopCloudFederationMeeting
## Agenda
- checking in
- abra release planning https://git.coopcloud.tech/coop-cloud/organising/issues/583
- reforms to fedi process
- symptoms
- eotl vote delayed weeks
- many members not paying dues, no waiver agreed
- vera / Flancia left all chats?
- proposals
- [define fedi member reponsibilities](https://git.coopcloud.tech/coop-cloud/organising/issues/579)
- exit criteria for fedi members
- delay x quorom decision making
- rolling "credit system" for doing work
## Notes
### Checking in
d1: last release was gnarly, was tired but now looking forward to coordinating new release
mo: travelling, pretty busy, alakazam presentation/docs/feedback energies
p4: release hell, good progress, happy to see automation for new release. backupbot spec is underway, to discuss soon...
### Release planning
Note about previous release: goreleaser refused to to release on a branch previously, so we reverted the backup changes and reverted the revert after the release
#### Catalogue
why catalogue?
- advantage: git repository
- disadvantage: overhead, CI/CD system, people don't understand it, several bugs
proposal: rely on tags in the repository. clone everything to .abra/recipes/... pull tags locally on-the-fly.
if i create a new version of a recipe, the catalogue is not even at all. it just looks locally. the update happens afterwards
precomputing means saving resources later on
With the operator collaboration topic, it will be possible to specificy an app recipe with a git location, it is then possible to skip the catalogue.
https://git.coopcloud.tech/coop-cloud/organising/issues/533#issuecomment-19038
recipes.coopcloud.tech (the Elm app) is reading the JSON
in an ideal post-catalogue abra, you could just ref a git org where `RECIPE=<recipe>` would find `https://git.example.com/<org>/<recipe>` and even `RECIPE=<org>/<recipe>`
Backwards compatiblibility will be key. For next next release 🎉
#### Automation test suite
Computing power from somewhere? Local-IT doing migration atm so not ideal timing. Maybe again after a month or so, can check-in again then.
Can also ask Autonomic and/or whoever else feels like they can help.
#### Cli Argument Handling
https://git.coopcloud.tech/coop-cloud/organising/issues/581
Upgrade to `urfave/cli` version 2 will enforce `abra app command command [command options] <domain> [<service>] <command> [-- <args>]`
Maybe we need a poll to see how people are using it? `@mo` using the strict format anyway, `@d1` not minding, `@p4` in favour...
adding a good/clear warning/error that if using e.g. `--chaos` on the end, it's not possible anymore...
> How do you use flag options (e.g. `--chaos`) with Abra?
> At the beginning: abra app deploy --chaos app.example.com
> At the end: abra app deploy app.example.com --chaos
> How annoyed will you be if, we enforce it at the beginning?
> Not annoyed
> Slighty annoyed
> Very annoyed
> If you are *annoyed, what can we do to help this process? e.g. docs, warning, etc.
Decision vs. poll? It's not really a choice. the lib is broken / enforces this. its ambigous now and just causes issues / questions / confusion.
Hack to re-order options transparently? Some pre-processor which would special case the `[-- ARGS]` for `abra app cmd`.
Doing it one way is just clear for everyone.
Plan: make proposal, get votes. if voted against, try to make new with adaptions / more work/money etc. but compromises with needs. (TODO: `@d1`)
Btw emoji polls are actually broken for some clients 😱
### Fedi process reforms
https://git.coopcloud.tech/coop-cloud/organising/issues/579
- pay yearly dues or get waiver (don't pay)
- actively participate in voting
- actively participate in monthly federation meetings. if you can't make it, please send your updates by text
- agree to code of conduct
exit criteria?
- no yearly dues arragement
- no/less voting/participation in meetings
TODO: proposal, pass, check in with people in the "exit criteria" area, are they OK?
### Goals of Federation?
- what is the purpose of the fedi?
- in relation to theory, ideology, strategy
- Co-op Cloud Conf !!!
- let's think about this and check back in
### Next meeting
`@mo` does next poll

View File

@ -0,0 +1,73 @@
---
title: 2024-04-17
---
## Meta
* Poll: https://poll.local-it.org/invite/Q828kjlYLNwW
* Call: https://talk.local-it.org/rooms/nyy-z5y-yrh-sc2/join
* Present: Local IT (moritz), EOTL (BaseBuilder, blu), BeWater(d1), Autonomic (Lai), Klasse & Methode (p4u1)
## Agenda
### First
* Fixed monthly Federation meeting (3rd Mon, etc) `@basebuilder`
* Project re-organisation (recipes, tools, fedi repos) `@d1`
* Backup specification `@p4u1`
### The Rest
* Non-Federation tasks specific bounty / funding `@basebuilder`
* Website and docs work to better showcase federation - `@kawaiipunk`
* https://git.coopcloud.tech/coop-cloud/organising/milestone/43
* Recipe maintainence proposal - `@kawaiipunk`
* "Hacking velocity = slow & money" (RE: recent fedi orga chat) `@d1`
* Continuing budget 001 for meeting attendance, resolution 004 technically only covered 6 months to oct 2023 `@3wc` (but I won't be there)
## Notes
### Fixed monthly Federation meeting (3rd Mon, etc)
Talked about it couple of times, back and forth.
- People who want to do regular can do that
- Other people can do polled meeting
- Poll every month is time consuming
- Timezones is an issue
Poll options for meeting
1. fix time/date every month
1. fixed time/date with timezone wraparound (can be merged with 1. :)
1. flexible every month (poll)
1. fixed week with poll (day of week, crab.fit)
> crab.fit - software with heatmap of availability
### Project re-organisation (recipes, tools, fedi repos)
Problem: All projects are under one organisation (coop-cloud). Abra has to do a lot of work to figure out what is a recipe repo and what not. This got fixed but made recipe generation really slow
Proposal: 3 Organisations in gitea:
- Recipes
- Tools
- Projects
What to look out for:
- Redirects (mainly for recipes)
- SSH will break though -> could make a migration script for that?
https://git.coopcloud.tech/coop-cloud/organising/milestone/45
https://git.coopcloud.tech/coop-cloud/organising/issues/569
Maybe "tools" / "projects" not needed, only "recipes" / "other".
### Backup Specification
Needing to write operators and matainers guide
- [ ] should abra implement backup and restore or only provide an integration?
- [ ] should we add a specification version?
## Next Meeting
* Who: ???

View File

@ -0,0 +1,48 @@
---
title: "Resolution 022"
---
- Topic: Budget 10: Abra integration suite automation
- Date: 04-04-2024
- Deadline: 18-04-2024
- Size: Large
### Summary
Motivated by the collective release planning:
[`#583`](https://git.coopcloud.tech/coop-cloud/organising/issues/583) under
"Automate Integration Test Suite".
The latest `abra` release (`0.9.x`) was heavily delayed due to several issues.
One of those was the need to fix the integration test suite which wasn't run in
some time. Many breakages had crept into the test suite over time. This can
avoided in the future by automating the running of the integration test suite.
This proposal describes a way to do this and includes a budget for doing so.
### Details (Budget 10)
The `abra` test suite takes around 1.30 hrs to run on a modest machine.
Therefore, we propose to run it only once daily. Some parts of the tests are
slow, fast and only a few require public DNS. This means we can break up the
tests and run them in separate "builds" to speed things up. This involves some
research & experimentation.
A server has been provided by `@mirsal` on donation (💘). This machine will be
be wiped clean each day (`docker <command> prune ....`) and will have the usual
DNS machinery attached to it, e.g. `int.coopcloud.tech`, `*.int.coopcloud.tech`.
Once that is all wired up, we can implement the CI/CD configuration to make the
test suite run automatically once a day. This will be triggered via the
`.drone.yml` in the `abra` Git repository.
Budget details:
| Item | Cost | Who? |
| ---- | ---- | ---- |
| Server | Free (on donation) | `@mirsal` |
| Server setup & docs | 1 hour | `@d1` |
| R & D for breaking up tests | 5 hours | `@d1` |
| Implementing CI/CD configs | 10 hours | `@d1` |
**Total: 16 hrs * 20 EUR = 320 EUR**

View File

@ -4,7 +4,7 @@ title: "Resolution 019"
- Topic: Karrot joins the Co-op Cloud Federation
- Date: 25-03-24
- Deadline: 25-04-2024
- Deadline: 08-04-2024
- Size: Large
### Summary
@ -12,10 +12,11 @@ title: "Resolution 019"
> [Karrot](https://karrot.world) / [Docs](https://docs.karrot.world)
[@nicksellen](https://git.coopcloud.tech/nicksellen) is a Karrot Team member and has:
- used Co-op Cloud for https://bath.social
- supported Foodsharing Luxembourg to self-host Karrot using Co-op Cloud
- participated in https://matrix.to/#/#coopcloud-tech:autonomic.zone chat
- some small contributions/fixes/bug reports for some Co-op Cloud stuff
- Used Co-op Cloud for [bath.social](https://bath.social)
- Supported Foodsharing Luxembourg to self-host Karrot using Co-op Cloud
- Participated in [`#coopcloud-tech:autonomic.zone`](https://matrix.to/#/#coopcloud-tech:autonomic.zone) chat
- Some small contributions/fixes/bug reports for some Co-op Cloud stuff
### Details

View File

@ -0,0 +1,6 @@
---
title: Inspirations
---
* [Dmytri Kleiner: "You can't code away their wealth"](https://yewtu.be/watch?v=FEU632_Em3g). Also, [The Telekommunist Manifesto](https://www.networkcultures.org/_uploads/%233notebook_telekommunist.pdf). Reading / checking out Kleiners work is a must IMHO -- `@decentral1se`.
* [CoopCycle](https://coopcycle.org/en/) - heavily inspired the Federation model and how we shaped the first decisions on how to do it. -- `@decentral1se`

View File

@ -391,13 +391,17 @@ If you don't have time or are not an operator, reach out on our communication ch
In the root of your recipe repository, run the following (if the folder doesn't already exist):
```
mkdir -p releases
mkdir -p release
```
And then create a text file which corresponds to the version release, e.g. `1.1.0+5.9.0` and write some notes. `abra` will show these when another operator runs `abra app deploy` / `abra app upgrade`.
You can also add release notes for the next release into a special file `releases/next`. This file will be used when running `abra recipe release`.
!!! warning "Not available previous versions of Abra"
Using `releases/next` is only available in > 0.9.x series of `abra`.
## How do I generate the recipe catalogue
To generate an entire new copy of the catalogue:
@ -692,6 +696,21 @@ You should be able to deploy this overriden configuration now.
## Linting rules
### R015: "long secret names"
Due to limitations placed by the Docker runtime, secret names must be < 64
characters long. Due to convetions in recipe configuration and how `abra`
works, several characters are appended to secret names during a deployment.
This means if you have a domain `example.org` and a secret `foo_pass`, you'll
end up with something like `example_org_foo_pass_v1` being used for the secret
name.
Based on a discussion in
[`#463`](https://git.coopcloud.tech/coop-cloud/organising/issues/463) and
looking on what is implemented currently in existing recipes, we came up with a
general rule of thumb that secret names in recipe configurations should be < 12
characters long to avoid errors on deployment.
### R014: "invalid lightweight tag"
This is an issue related to the way Git/`go-git` handle Git tags internally. We

View File

@ -205,18 +205,6 @@ At time of writing (Jan 2022), we think there is a limitation in our design whic
This may be possible to overcome if someone really needs it, we encourage people to investigate. We've found that often there are limitations in the actual software which don't support this anyway and several of the current operators simply use a new domain per app.
## Creating a new server
`abra server new` can create servers if you have an account with a supported 3rd party integration. We currently support [Servers.coop](https://servers.coop) & [Hetzner](https://hetzner.com). The process of creating a new server usually goes like this:
1. Create an account with a server hosting provider
2. Generate an API client key which you'll give to `abra`
3. Run `abra server new` & fill in the values
`abra` supports creating, listing and removing servers if the 3rd party integration supports it.
If you want to teach `abra` how to support your favourite server hosting provider, we'd glady accept patches.
## How do I bootstrap a server for running Co-op Cloud apps?
The requirements are:
@ -226,6 +214,12 @@ The requirements are:
1. Swarm mode initialised
1. Proxy network created
!!! warning "You may need to log in/out"
When running `usermod ...`, you may need to (depending on your system) log
in and out again of your shell session to get the required permissions for
Docker.
```
# docker install convenience script
wget -O- https://get.docker.com | bash
@ -242,18 +236,6 @@ apt install apparmor
systemctl restart docker containerd
```
## Managing DNS entries
`abra record ...` can help you manage your DNS entries if you have an account with a supported 3rd party provider. We currently support [Gandi](https://gandi.net). The process of managing DNS with `abra` usually goes like this:
1. Create an account with a DNS service provider
2. Generate an API client key which you'll give to `abra`
3. Run `abra record ls` to check everything works
`abra` supports creating, listing and removing DNS entries if the 3rd party integration supports it.
If you want to teach `abra` how to support your favourite DNS service provider, we'd glady accept patches.
## How do I persist container logs after they go away?
This is a big topic but in general, if you're looking for something quick & easy, you can use the [journald logging driver](https://docs.docker.com/config/containers/logging/journald/). This will hook the container logs into systemd which can handle persistent log collection & managing log file size.
@ -335,9 +317,20 @@ See [`#312`](https://git.coopcloud.tech/coop-cloud/organising/issues/312) for mo
If you're app [supports backup/restore](/maintainers/handbook/#how-do-i-configure-backuprestore) then you have two options: [`backup-bot-two`](https://git.coopcloud.tech/coop-cloud/backup-bot-two) & [`abra`](https://git.coopcloud.tech/coop-cloud/abra).
With `abra`, you can simply run `abra app backup ...` & `abra app restore ...`.
With `abra`, you can simply run the commands:
```
$ abra app backup <domain>
$ abra app restore <domain>
```
Pass `-h` for more information on the specific flags & arguments.
If your app Recipe *does not support backups* you can do it manually with the
`abra cp` command. See the exact commands in [abra
cheetsheet](/abra/cheat-sheet/#manually-restoring-app-data).
## How do I take a manual database backup?
MySQL / MariaDB:
@ -462,3 +455,28 @@ route requests after. You're free to make as many `$whatever.yml` files in your
Please note that we have to hardcode `production` and `web-secure` which are
typically configurable when not using `FILE_PROVIDER_DIRECTORY_ENABLED`.
## Can I use Caddy instead of Traefik?
Yes, it's possible although currently Quite Experimental! See
[`#388`](https://git.coopcloud.tech/coop-cloud/organising/issues/388) for more.
## Running an offline coop-cloud server
You may want to run a coop-cloud directly on your device (or in a VM or machine on your LAN), whether that's for testing a recipe or to run coop-cloud apps outside of the cloud ;-)
In that case you might simply add some names to `/etc/hosts` (e.g `127.0.0.1 myapp.localhost`), or configure them on a local DNS server - which means `traefik` won't be able to use `letsencrypt` to generate and verify SSL certificates. Here's what you can do instead:
1. In your traefik .env file, edit/uncomment the following lines:
```
LETS_ENCRYPT_ENV=staging
WILDCARDS_ENABLED=1
SECRET_WILDCARD_CERT_VERSION=v1
SECRET_WILDCARD_KEY_VERSION=v1
COMPOSE_FILE="$COMPOSE_FILE:compose.wildcard.yml"
```
2. Generate a self-signed certificate using the [command listed here](https://letsencrypt.org/docs/certificates-for-localhost/#making-and-trusting-your-own-certificates). Unless using `localhost` you may want to edit that where it appears in the command, and/or add multiple (sub)domains to the certificate e.g: `subjectAltName=DNS:localhost,DNS:myapp.localhost`
3. Run these commands:
```
abra app secret insert localhost ssl_cert v1 "$(cat localhost.crt)"
abra app secret insert localhost ssl_key v1 "$(cat localhost.key)"
```
4. Re-deploy `traefik` with `--force` and voila!

View File

@ -32,6 +32,12 @@ You need to keep port `:80` and `:443` free on your server for web proxying to y
`abra` has support for creating servers (`abra server new`) but that is a more advanced automation feature which is covered in the [handbook](/operators/handbook). For this tutorial, we'll focus on the basics. Assuming you've managed to create a testing VPS with some `$hosting_provider`, you'll need to install Docker, add your user to the Docker group & setup swarm mode:
!!! warning "You may need to log in/out"
When running `usermod ...`, you may need to (depending on your system) log
in and out again of your shell session to get the required permissions for
Docker.
```
# docker install convenience script
wget -O- https://get.docker.com | bash
@ -133,15 +139,21 @@ abra server ls
In order to have your Co-op cloud deployment serve the public internet, we need to install the core web proxy, [Traefik](https://doc.traefik.io/traefik/).
Traefik is the main entrypoint for all web requests (e.g. like NGINX) and supports automatic SSL certificate configuration and other quality-of-life features which make deploying libre apps more enjoyable.
Traefik is the main entrypoint for all web requests (e.g. like NGINX) and
supports automatic SSL certificate configuration and other quality-of-life
features which make deploying libre apps more enjoyable.
To get started, you'll need to create a new app:
**1. To get started, you'll need to create a new app:**
```bash
abra app new traefik
```
Choose your newly registered server and specify a domain name.
Choose your newly registered server and specify a domain name. By default `abra`
will suggest `<app-name>.server.org` or prompt you with a list of servers.
**2. Configure this new `traefix` app**
You will want to take a look at your generated configuration and tweak the `LETS_ENCRYPT_EMAIL` value. You can do that by running `abra app config`:
@ -149,14 +161,32 @@ You will want to take a look at your generated configuration and tweak the `LETS
abra app config <traefik-domain>
```
Every app you deploy will have one of these `.env` files, which contains variables which will be injected into app configurations when deployed. Variables starting with `#` are optional, others are required.
Every app you deploy will have one of these `.env` files, which contains
variables which will be injected into app configurations when deployed. These
files exist at relevantly named path:
Now it is time to deploy:
```bash
~/.abra/servers/<domain>/<traefik-domain>.env
```
Variables starting with `#` are optional, others are required. Some things to
consider here is that by default our *Traefik* recipe exposes the metric
dashboard unauthenticated on the public internet at the URL `<traefik-domain>`
it is deployed to, which is not ideal. You can disable this with:
```
DASHBOARD_ENABLED=false
```
**3. Now it is time to deploy your app:**
```
abra app deploy <traefik-domain>
```
Voila. Abracadabra :magic_wand: your first app is deployed :sparkles:
### Deploy Nextcloud
And now we can deploy apps. Let's create a new Nextcloud app.

View File

@ -61,6 +61,7 @@ nav:
- "Frequently Asked Questions": intro/faq.md
- "Project Strategy": intro/strategy.md
- "Comparisons": intro/comparisons.md
- "Inspirations": intro/inspirations.md
- "Project Status": intro/bikemap.md
- "Managed Hosting": intro/managed.md
- "Get In Touch": intro/contact.md
@ -91,6 +92,7 @@ nav:
- "Install": abra/install.md
- "Quick Start": abra/quickstart.md
- "Upgrade": abra/upgrade.md
- "Design": abra/design.md
- "Recipes": abra/recipes.md
- "Hack": abra/hack.md
- "Troubleshoot": abra/trouble.md
@ -103,6 +105,7 @@ nav:
- "Bylaws": federation/bylaws.md
- "Finance": federation/finance.md
- "Membership": federation/membership.md
- "Code of Co-operation": federation/code-of-coop.md
- "Resolutions":
- federation/resolutions/index.md
- "Passed":
@ -122,14 +125,18 @@ nav:
- federation/resolutions/passed/015.md
- federation/resolutions/passed/016.md
- federation/resolutions/passed/017.md
- federation/resolutions/passed/018.md
- federation/resolutions/passed/019.md
- "In Progress":
- federation/resolutions/in-progress/013.md
- federation/resolutions/in-progress/018.md
- federation/resolutions/in-progress/022.md
- "Minutes":
- federation/minutes/index.md
- "Recently":
- federation/minutes/2024-02-01.md
- federation/minutes/2024-04-17.md
- federation/minutes/2024-03-29.md
- "Archive":
- federation/minutes/2024-02-01.md
- federation/minutes/2022-03-03.md
- federation/minutes/2023-05-03.md
- "Digital Tools": federation/tools.md