forked from toolshed/docs.coopcloud.tech
Compare commits
1 Commits
main
...
resolution
Author | SHA1 | Date | |
---|---|---|---|
7de2547f10 |
@ -7,132 +7,57 @@ title: Cheat sheet
|
|||||||
!!! info
|
!!! info
|
||||||
not all flags are listed here.
|
not all flags are listed here.
|
||||||
|
|
||||||
|
!!! warning
|
||||||
|
Definitely set up autocomplete or you'll be sad
|
||||||
|
|
||||||
### Abra Autocomplete
|
`abra autocomplete bash/zsh/fizsh`
|
||||||
|
|
||||||
Definitely set up autocomplete or you'll be sad :sob: `abra` supports `bash`,
|
### create and deploy a new app:
|
||||||
`zsh`, and `fizsh` just run
|
- `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`
|
||||||
|
|
||||||
```
|
### undeploy and remove an app
|
||||||
$ abra autocomplete bash
|
- back up any data you don't want to lose
|
||||||
```
|
- `abra app undeploy $APPNAME`
|
||||||
|
- `abra app rm --volumes $APPNAME`
|
||||||
|
flags: `-f/--force`, `-V/--volumes`
|
||||||
|
|
||||||
|
### 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 app new $RECIPE`
|
- `abra recipe sync $RECIPE`
|
||||||
```
|
flags: `-x,y,z`
|
||||||
|
- `abra recipe release $RECIPE [$VERSION]`
|
||||||
Optional flags: `-s/--server`, `-D/--domain`, `-S/--secrets`, `-p/--pass`
|
flags: `-p/--publish`, `-r/--dry-run`, `-x,y,z`
|
||||||
|
|
||||||
```
|
|
||||||
$ 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`
|
### 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.
|
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.
|
|
||||||
|
|
||||||
|
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"
|
#### 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".
|
As you can see we, we're selecting all recipes where category is "Utilities".
|
||||||
|
|
||||||
|
|
||||||
#### Filter apps by state `deployed`
|
#### Filter apps by state `deployed`
|
||||||
|
|
||||||
!!! info
|
!!! info
|
||||||
@ -141,8 +66,6 @@ As you can see we, we're selecting all recipes where category is "Utilities".
|
|||||||
!!! info
|
!!! 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` 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.
|
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.
|
||||||
|
@ -54,44 +54,11 @@ go test ./pkg/recipe -v -run TestGetVersionLabelLocalDoesNotUseTimeoutLabel
|
|||||||
|
|
||||||
## Integration tests
|
## Integration tests
|
||||||
|
|
||||||
### Running on the CI server
|
### Install dependencies
|
||||||
|
|
||||||
Based on
|
We use [`bats`](https://bats-core.readthedocs.io/en/stable/), you can install
|
||||||
[R020](https://docs.coopcloud.tech/federation/resolutions/passed/020/), we have
|
the required dependencies with the following. You also need a working
|
||||||
automated running the integration test suite. Here's the TLDR;
|
installation of Docker and Go (not covered in this section).
|
||||||
|
|
||||||
* We have a donated CI server (tysm `@mirsal` 💝) standing at the ready,
|
|
||||||
`int.coopcloud.tech`.
|
|
||||||
* We run the entire integration suite nightly via our Drone CI/CD configuration [here](https://git.coopcloud.tech/coop-cloud/abra/src/branch/main/.drone.yml) (see "`name: integration test`" stanza)
|
|
||||||
* Here is the script that is run on the remote server: [`run-ci-int`](https://git.coopcloud.tech/coop-cloud/abra/src/branch/main/scripts/tests/run-ci-int)
|
|
||||||
|
|
||||||
What follows is a listing of how this was achieved so that we can collectivise
|
|
||||||
the maintenance.
|
|
||||||
|
|
||||||
On the server, we have:
|
|
||||||
|
|
||||||
* Created an `abra` user with `docker` permissions
|
|
||||||
* Ran `apt install bats bats-file bats-assert bats-support jq make git golang-1.21 wget bash`
|
|
||||||
* Installed `bats-core` from source, following the instructions below
|
|
||||||
* Docker was already installed on the machine, so nothing to do there
|
|
||||||
* `docker login` with the `thecoopcloud` details so we don't get rate limited
|
|
||||||
|
|
||||||
The drone configuration was wired up as follows:
|
|
||||||
|
|
||||||
* Generated a SSH key and put the public key part in `~/.ssh/authorize_keys`
|
|
||||||
* Added that public key part as a "deploy key" in the abra repo (so we can do `ssh://` git remote pulls)
|
|
||||||
* Added the private key part as a Drone secret which is available in build so that the build can SSH over to the server to run commands. That was done like so: `drone secret add --repository coop-cloud/abra --name abra_int_private_key --data @id_ed25519`
|
|
||||||
* In order to specify a cron timing, you need to create it with the Drone CLI: `drone cron add "coop-cloud/abra" "integration" @daily --branch main`
|
|
||||||
|
|
||||||
Please ask `@decentral1se` or on the Matrix channels for SSH access to the machine.
|
|
||||||
|
|
||||||
### Running them locally
|
|
||||||
|
|
||||||
#### Install dependencies
|
|
||||||
|
|
||||||
We use [`bats`](https://bats-core.readthedocs.io/en/stable/) to run the tests.
|
|
||||||
You can install the required dependencies with the following. You also need a
|
|
||||||
working installation of Docker and Go >= 1.16 (not covered in this section).
|
|
||||||
|
|
||||||
```
|
```
|
||||||
apt install bats-file bats-assert bats-support jq make git
|
apt install bats-file bats-assert bats-support jq make git
|
||||||
@ -108,14 +75,12 @@ cd bats-core
|
|||||||
sudo ./install.sh /usr/local
|
sudo ./install.sh /usr/local
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Setup Test Server
|
### Setup Test Server
|
||||||
|
|
||||||
For some tests an actual server is needed, where apps can be deployed. You can
|
For many tests an actual server is needed, where apps can be deployed. You can
|
||||||
either use a local one or a remote test server. There is also a way to run or
|
either use a local one or a remote test server.
|
||||||
skip tests that require a remote server. This is covered below in the
|
|
||||||
[filtering tests](#filter-tests_1) section.
|
|
||||||
|
|
||||||
##### Remote swarm
|
#### With remote test server
|
||||||
|
|
||||||
```
|
```
|
||||||
export ABRA_TEST_DOMAIN="test.example.com"
|
export ABRA_TEST_DOMAIN="test.example.com"
|
||||||
@ -124,9 +89,14 @@ export ABRA_DIR="$HOME/.abra_test"
|
|||||||
|
|
||||||
`ABRA_TEST_DOMAIN` should also have a DNS A record for `*.test.example.com`
|
`ABRA_TEST_DOMAIN` should also have a DNS A record for `*.test.example.com`
|
||||||
which points to the same server so that the test suite can deploy apps freely.
|
which points to the same server so that the test suite can deploy apps freely.
|
||||||
The test suite does not deploy Traefik for you.
|
It's advised that you re-use the same server and therefore the same Traefik
|
||||||
|
deployment for running your integration tests. The test suite does not deploy
|
||||||
|
Traefik for you. Then you'll have more stable results.
|
||||||
|
|
||||||
##### Local swarm
|
You probably don't want to run the entire test suite though, it takes a while.
|
||||||
|
Try the following for starters.
|
||||||
|
|
||||||
|
#### With local swarm
|
||||||
|
|
||||||
When running the test suite localy you need a running docker swarm setup:
|
When running the test suite localy you need a running docker swarm setup:
|
||||||
|
|
||||||
@ -158,11 +128,10 @@ bats -Tp tests/integration/autocomplete.bats
|
|||||||
|
|
||||||
### Tagging tests
|
### Tagging tests
|
||||||
|
|
||||||
When a test actually deploys something, we tag it as "slow". When the test
|
When a test actually deploys something to a server, we tag it with the following:
|
||||||
requires public DNS, we use "dns". There may be more tags we write more tests.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
# bats test_tags=slow,dns
|
# bats test_tags=slow
|
||||||
@test "..." {
|
@test "..." {
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
@ -197,17 +166,14 @@ bats -Tp tests/integration --filter "validate app argument"
|
|||||||
You can filter on tags.
|
You can filter on tags.
|
||||||
|
|
||||||
```
|
```
|
||||||
bats -Tp tests/integration --filter-tags \!slow # only fast tests
|
bats -Tp tests/integration --filter-tags "\!slow" # only fast tests
|
||||||
bats -Tp tests/integration --filter-tags slow # only slow tests
|
bats -Tp tests/integration --filter-tags "slow" # only slow tests
|
||||||
bats -Tp tests/integration --filter-tags slow,\!dns # slow but no DNS tests
|
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also only run the previously failed tests.
|
You can also only run the previously failed tests.
|
||||||
|
|
||||||
```
|
```
|
||||||
mkdir -p tests/integration/.bats/run-logs
|
bats -TP tests/integration --filter-status failed
|
||||||
bats -Tp tests/integration # run tests
|
|
||||||
bats -Tp tests/integration --filter-status failed # re-run only failed
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Debug tests
|
### Debug tests
|
||||||
|
@ -2,40 +2,14 @@
|
|||||||
title: Install
|
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
|
## Stable release
|
||||||
|
|
||||||
### Wget
|
|
||||||
|
|
||||||
```
|
|
||||||
wget -q -O - https://install.abra.coopcloud.tech | bash
|
|
||||||
```
|
|
||||||
|
|
||||||
### Curl
|
|
||||||
|
|
||||||
```
|
```
|
||||||
curl https://install.abra.coopcloud.tech | bash
|
curl https://install.abra.coopcloud.tech | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
## Release candidate
|
## Release candidate
|
||||||
|
|
||||||
### Wget
|
|
||||||
|
|
||||||
```
|
|
||||||
wget -q -O - https://install.abra.coopcloud.tech | bash -s -- --rc
|
|
||||||
```
|
|
||||||
|
|
||||||
### Curl
|
|
||||||
|
|
||||||
```
|
```
|
||||||
curl https://install.abra.coopcloud.tech | bash -s -- --rc
|
curl https://install.abra.coopcloud.tech | bash -s -- --rc
|
||||||
```
|
```
|
||||||
@ -62,16 +36,20 @@ Otherwise, you downloaded a corrupted file and you should re-download it.
|
|||||||
|
|
||||||
Follow the guide [here](https://docs.coopcloud.tech/abra/hack/)
|
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
|
## Using Docker
|
||||||
|
|
||||||
```
|
```
|
||||||
docker run \
|
docker run \
|
||||||
-v $HOME/.abra:/.abra \
|
-v $HOME/.abra:/.abra \
|
||||||
git.coopcloud.tech/coop-cloud/abra app ls
|
git.coopcloud.tech/coop-cloud/abra app ls
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
If you're using symlinks, e.g. for [sharing
|
If you're using symlinks, e.g. for [sharing
|
||||||
`~/.abra`](/operators/handbook/#sharing-abra), add more `-v` options for
|
`~/.abra`](/operators/handbook/#sharing-abra), add more `-v` options for each
|
||||||
each directory you're symlinking to, e.g. `-v
|
directory you're symlinking to, e.g. `-v
|
||||||
$HOME/Projects/CoopCloud/apps:/home/user/Projects/CoopCloud/apps`
|
$HOME/Projects/CoopCloud/apps:/home/user/Projects/CoopCloud/apps`
|
||||||
|
@ -4,17 +4,15 @@ 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
|
> 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 | Notes | Contact |
|
| Name | Dues paid up? | Notes | Contact |
|
||||||
| --------- | --------- | -------- |-------- |
|
| -------- | -------- | -------- |-------- |
|
||||||
| Agaric | - | - | `@wolcen:matrix.org` |
|
| Agaric | - | - | `@wolcen:matrix.org` |
|
||||||
| [Autonomic](https://autonomic.zone) | - | - | `@3wc`, `@cas`, `@knoflook`, `@travvy`, `@aadil` |
|
| Autonomic | - | - | `@3wc`, `@cas`, `@knoflook`, `@travvy`, `@aadil` |
|
||||||
| [Bonfire](https://bonfirenetworks.org) | - | - | `@mayel:matrix.org` + Ivan (`@cambriale:matrix.org`) |
|
| Bonfire | - | - | `@mayel:matrix.org` + Ivan (`@cambriale:matrix.org`) |
|
||||||
| [Doop.coop](https://doop.coop) | - | - | `@yusf:gottsnack.net` |
|
| Doop.coop | - | - | `@yusf:gottsnack.net` |
|
||||||
| [EOTL](https://eotl.supply) | - | - | `@basebuilder:pub.solar` |
|
| Klasse & Methode | - | - | `@p4u1_f4u1:matrix.org` |
|
||||||
| [Karrot](https://karrot.world) | - | - | `@nicksellen:matrix.org` |
|
| Local IT | - | - | Philipp (`@yksflip:matrix.kaputt.cloud`) + `@moritz:matrix.local-it.org` |
|
||||||
| [Klasse & Methode](https://codeberg.org/Klasse-Methode) | - | - | `@p4u1_f4u1:matrix.org` |
|
| Mirsal ™ | - | - | `@mirsal:1312.media` |
|
||||||
| [Local IT](https://local-it.org/) | - | - | Philipp (`@yksflip:matrix.kaputt.cloud`) + `@moritz:matrix.local-it.org` |
|
| UTAW | - | - | `@javielico:matrix.org` |
|
||||||
| Mirsal ™ | - | - | `@mirsal:1312.media` |
|
|
||||||
| [UTAW](https://utaw.tech) | - | - | `@javielico:matrix.org` |
|
|
||||||
| [BeWater](https://bewater.contact) | Waiver | - | `@decentral1se` |
|
| [BeWater](https://bewater.contact) | Waiver | - | `@decentral1se` |
|
||||||
| [ruangrupa](https://ruangrupa.id) | - | - | Henry `@babystepper:matrix.org` |
|
| ruangrupa | - | - | Henry `@babystepper:matrix.org` |
|
||||||
|
@ -1,73 +0,0 @@
|
|||||||
---
|
|
||||||
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: ???
|
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 2024-03-29
|
title: 2024-29-03
|
||||||
---
|
---
|
||||||
|
|
||||||
## Meta
|
## Meta
|
49
docs/federation/resolutions/drafts/020.md
Normal file
49
docs/federation/resolutions/drafts/020.md
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
---
|
||||||
|
title: "Resolution 020"
|
||||||
|
---
|
||||||
|
|
||||||
|
- Topic: Federation member responsibilities
|
||||||
|
- Date: ...
|
||||||
|
- Deadline: ...
|
||||||
|
- Size: Large
|
||||||
|
|
||||||
|
### Summary
|
||||||
|
|
||||||
|
Motivated by the last Federation meeting: [minutes](https://docs.coopcloud.tech/federation/minutes/2024-29-03/).
|
||||||
|
|
||||||
|
New members are joining the Federation, hurray! In the discussion about what it means to join, the question came up: what exactly are the responsibilities of the members? This was raised in [`#581`](https://git.coopcloud.tech/coop-cloud/organising/issues/581).
|
||||||
|
|
||||||
|
Responsibilities were defined in the original [Federation Proposal](https://pad.autonomic.zone/s/MLafJE2jC#Responsibilities). We would like to document and extend those in this proposal.
|
||||||
|
|
||||||
|
Furthermore, some existing members have not been participating, not paid dues/asked for waiver and some have even left the federation chat room. It would seem also time to define some "exit criteria" to keep a healthy balance.
|
||||||
|
|
||||||
|
### Details
|
||||||
|
|
||||||
|
#### Responsibilities
|
||||||
|
|
||||||
|
**Already agreed upon**
|
||||||
|
|
||||||
|
- Pay yearly dues or ask for waiver (if they can't afford it)
|
||||||
|
- Actively participate in all large decisions
|
||||||
|
- Agree to the [Code of Co-operation (CoC)](https://docs.coopcloud.tech/federation/code-of-coop/)
|
||||||
|
|
||||||
|
**New**
|
||||||
|
|
||||||
|
- Actively participate in monthly federation meetings. If they can't make it, updates will be sent by text.
|
||||||
|
|
||||||
|
#### Exit criteria
|
||||||
|
|
||||||
|
> The idea is not to eject people out the federation but to use these clear guidelines as a way to assess if participants should remain federation members. This applies to both sides as it is often unclear how to leave volunteer projects.
|
||||||
|
|
||||||
|
**New**
|
||||||
|
|
||||||
|
- Not paying dues / having an agreed waiver
|
||||||
|
- Not actively participating in all large decisions
|
||||||
|
- Not active in federation monthly meetings
|
||||||
|
- Do not behave in accordance with the [CoC](https://docs.coopcloud.tech/federation/code-of-coop/)
|
||||||
|
|
||||||
|
#### Implementation
|
||||||
|
|
||||||
|
- These criteria + a link to the [Federation proposal](https://pad.autonomic.zone/s/MLafJE2jC) will be clearly linked on a new "Federation handbook" on docs.coopcloud.tech
|
||||||
|
|
||||||
|
- An agenda point will be put on the next federation meeting to chase up dues/waiver agreements and to agree on a collective process for checking on participation of members.
|
74
docs/federation/resolutions/drafts/021.md
Normal file
74
docs/federation/resolutions/drafts/021.md
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
---
|
||||||
|
title: "Resolution 021"
|
||||||
|
---
|
||||||
|
|
||||||
|
- Topic: Budget XXX: Flag handling in Abra
|
||||||
|
- Date: ...
|
||||||
|
- Deadline: ...
|
||||||
|
- Size: Medium
|
||||||
|
|
||||||
|
### Summary
|
||||||
|
|
||||||
|
Motivated by the collective release planning: [`#583`](https://git.coopcloud.tech/coop-cloud/organising/issues/583) under "Argument Handling".
|
||||||
|
|
||||||
|
Due to a bug in the underlying library (`urfave/cli`) that Abra uses for command-line argument/flag handling, we have a bug in Abra which cannot be fixed without causing a breaking change. See [`#581`](https://git.coopcloud.tech/coop-cloud/organising/issues/581) for the ongoing discussion. This proposal is the TLDR; and proposal for the fix.
|
||||||
|
|
||||||
|
### Details (Budget XXX)
|
||||||
|
|
||||||
|
#### The problem
|
||||||
|
|
||||||
|
The current help output of `abra app deploy` is as follows:
|
||||||
|
|
||||||
|
`abra app deploy [command options] <domain> [<version>]`
|
||||||
|
|
||||||
|
However, it is possible to do both of the following:
|
||||||
|
|
||||||
|
```
|
||||||
|
abra app deploy --chaos example.org # "before" style
|
||||||
|
abra app deploy example.org --chaos # "after" style
|
||||||
|
```
|
||||||
|
|
||||||
|
However, `abra app cmd` is broken if you try to use the "after" style:
|
||||||
|
|
||||||
|
```
|
||||||
|
abra app cmd <domain> <function> --local -- <args>
|
||||||
|
```
|
||||||
|
|
||||||
|
This results in `FATA[0000] <recipe> doesn't have a --local function` which is a bug in the `abra` code. It tries to read the position of the arguments but `--local` is included as an argument. The bug in `abra` is due to a bug in `urfave/cli` - "after" style options appear as arguments 😱
|
||||||
|
|
||||||
|
The only way to use `abra app cmd` right now is using the "before" style:
|
||||||
|
|
||||||
|
```
|
||||||
|
abra app cmd --local <domain> <function> -- <args>
|
||||||
|
```
|
||||||
|
|
||||||
|
This means that some commands allow both "after" and "before" style and some only allow "before" style. This is a source of confusion, raised issues and frustration.
|
||||||
|
|
||||||
|
#### Our solution
|
||||||
|
|
||||||
|
We propose to remedy this situation by upgrading `urfave/cli` to version 2 which enforces the "before" style. This was the solution from `urfave/cli` developers to fix their bug. You can then only do e.g.
|
||||||
|
|
||||||
|
```
|
||||||
|
abra app deploy --chaos <domain>
|
||||||
|
```
|
||||||
|
|
||||||
|
This is the "simplest" option in terms of development capacity and is the most cost effective option. The upgrade effort is more or less a known quantity, see [`#404`](https://git.coopcloud.tech/coop-cloud/abra/pulls/404) for more.
|
||||||
|
|
||||||
|
We have previously reverted from version 2 to version to 1 to maintain this flexibility. However, this leaves us with an unresolved bug which we want to close off.
|
||||||
|
|
||||||
|
#### Alternatives
|
||||||
|
|
||||||
|
If this restriction is seen as too burdensome, we see some alternatives.
|
||||||
|
|
||||||
|
If you choose to vote against this proposal, please include your preference for an alternative (below or with your own). This allows us to mount another proposal with minimal effort.
|
||||||
|
|
||||||
|
There is no guarantee we can get these right and it will incur an ongoing maintenance cost.
|
||||||
|
|
||||||
|
1. we make a special case hack in the case of the `--local` handling and proceed as usual
|
||||||
|
1. we upgrade to v2 and include a patch which automatically re-orders "after" style options into the "before" style transparently
|
||||||
|
|
||||||
|
#### Budget
|
||||||
|
|
||||||
|
Compensate `@p4u1` for XXX hrs work to get this done. This includes XXX hrs
|
||||||
|
backpay for the initial spike in
|
||||||
|
[`#404`](https://git.coopcloud.tech/coop-cloud/abra/pulls/404).
|
48
docs/federation/resolutions/drafts/023.md
Normal file
48
docs/federation/resolutions/drafts/023.md
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
---
|
||||||
|
title: "Resolution 023"
|
||||||
|
---
|
||||||
|
|
||||||
|
- Topic: Budget XXX: Improved project organisation
|
||||||
|
- Date: ...
|
||||||
|
- Deadline: ...
|
||||||
|
- Size: Large
|
||||||
|
|
||||||
|
### Summary
|
||||||
|
|
||||||
|
Motivated by the collective release planning: [`#583`](https://git.coopcloud.tech/coop-cloud/organising/issues/583) under "Improved Project Organisation".
|
||||||
|
|
||||||
|
Several issues, both social & technical in nature are cominmg up based on our chocies for how to organise our project management in Co-op Cloud. This proposal will present the problems and proposals for solutions.
|
||||||
|
|
||||||
|
### Details (Budget XXX)
|
||||||
|
|
||||||
|
#### The problems
|
||||||
|
|
||||||
|
1. Because recipes and "other" repositories are gathered under a single Gitea organisation, [co-op cloud](https://git.coopcloud.tech/coop-cloud), `abra` has to do some serious acrobatics to understand what is a recipe and what is not a recipe. More details in [`#377`](https://git.coopcloud.tech/coop-cloud/organising/issues/377). See also [`#569`](https://git.coopcloud.tech/coop-cloud/organising/issues/569).
|
||||||
|
1. Several participants have complained that there is too much indirection & noise involved in having a single issue tracker, [organising](https://git.coopcloud.tech/coop-cloud/organising/issues). By noise, we mean that, e.g. there are several conventions (labels, writing "Abra: " / "Docs: ") in marking issues related to different repositories. By indirection, we mean that it is not always clear where the issue relates to.
|
||||||
|
1. There is an old Federation related organisation and related repository, [Federation](https://git.coopcloud.tech/Federation) which has raised questions from new members. It is not used now but it is still there.
|
||||||
|
|
||||||
|
#### The solutions
|
||||||
|
|
||||||
|
For the recipes issue:
|
||||||
|
|
||||||
|
1. Rename [co-op cloud](https://git.coopcloud.tech/coop-cloud) to "Co-op Cloud Configuration Commons (CCCC)".
|
||||||
|
1. Create a new Gitea organisation called "Co-op Cloud Federation (CCF)".
|
||||||
|
1. Migrate all "non recipe" repositories away from [co-op cloud](https://git.coopcloud.tech/coop-cloud) ("CCCC") and under the CCF organisation.
|
||||||
|
|
||||||
|
This creates a clear separation between the configuration commons AKA "the recipes" and "other stuff". This means that `abra` logic can be greatly simplified and become performant once again. Furthermore, we don't break any URLs by keeping the recipes where they always were. The renaming aspect is purely cosmetic, the recipe organisation URL will remain "co-op cloud".
|
||||||
|
|
||||||
|
Then, for the issue management issue:
|
||||||
|
|
||||||
|
1. Re-open all repository issue trackers instead of pointing to [organising](https://git.coopcloud.tech/coop-cloud/organising/issues).
|
||||||
|
1. Migrate all issues by hand from `organising` to their relevant issue trackers. E.g. all issues in organising with the `abra` label will go to the `abra` issue tracker.
|
||||||
|
1. Create a new repository called "Co-op Cloud Federation Coordination" where we have an issue tracker for specific federation discussions (E.g. "tracking every member paying dues").
|
||||||
|
1. Create a single Gitea Project under the CCF organisation called "Federation FTW".
|
||||||
|
|
||||||
|
"Federation FTW" will be the project we collectively refer to in our federation meetings as the "main list of priorities". Issues from every part of the project can be referenced there in a single place. Discussions can happen decentrally in their own issue trackers. It is the central source of truth for our current priorities and a way to stay up to date with what we want to do in the short to medium term.
|
||||||
|
|
||||||
|
#### Budget
|
||||||
|
|
||||||
|
* 5 hrs for migrating labours of the issues to their related issue trackers.
|
||||||
|
* Additional 3 hrs for unseen migration / busy work gotchas.
|
||||||
|
* 4 hrs for `abra` changes to only parse the new recipes repository
|
||||||
|
* Total: 12 hrs
|
@ -1,48 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Resolution 020"
|
|
||||||
---
|
|
||||||
|
|
||||||
- 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**
|
|
@ -696,21 +696,6 @@ You should be able to deploy this overriden configuration now.
|
|||||||
|
|
||||||
## Linting rules
|
## 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"
|
### R014: "invalid lightweight tag"
|
||||||
|
|
||||||
This is an issue related to the way Git/`go-git` handle Git tags internally. We
|
This is an issue related to the way Git/`go-git` handle Git tags internally. We
|
||||||
|
@ -317,20 +317,9 @@ 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).
|
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 the commands:
|
With `abra`, you can simply run `abra app backup ...` & `abra app restore ...`.
|
||||||
|
|
||||||
```
|
|
||||||
$ abra app backup <domain>
|
|
||||||
$ abra app restore <domain>
|
|
||||||
```
|
|
||||||
|
|
||||||
Pass `-h` for more information on the specific flags & arguments.
|
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?
|
## How do I take a manual database backup?
|
||||||
|
|
||||||
MySQL / MariaDB:
|
MySQL / MariaDB:
|
||||||
@ -460,43 +449,3 @@ route requests after. You're free to make as many `$whatever.yml` files in your
|
|||||||
|
|
||||||
Yes, it's possible although currently Quite Experimental! See
|
Yes, it's possible although currently Quite Experimental! See
|
||||||
[`#388`](https://git.coopcloud.tech/coop-cloud/organising/issues/388) for more.
|
[`#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!
|
|
||||||
|
|
||||||
## Remote recipes
|
|
||||||
|
|
||||||
!!! warning "This is only available in the currently unreleased version of `abra`"
|
|
||||||
|
|
||||||
Please see [this issue](https://git.coopcloud.tech/coop-cloud/organising/issues/583) to track current progress towards a release. All feedback and testing are welcome on this new feature. The design is not finalised yet.
|
|
||||||
|
|
||||||
It is possible to specify a remote recipe in your `.env` file:
|
|
||||||
|
|
||||||
```
|
|
||||||
RECIPE=mygit.org/myorg/cool-recipe.git:1.3.12
|
|
||||||
```
|
|
||||||
|
|
||||||
Where `1.3.12` is an optional pinned version. When `abra` runs a deployment, it
|
|
||||||
will fetch the remote recipe and create a directory for it under `$ABRA_DIR`
|
|
||||||
(typically `~/.abra`):
|
|
||||||
|
|
||||||
```
|
|
||||||
$ABRA_DIR/recipes/mygit_org_myorg_cool-recipe
|
|
||||||
```
|
|
||||||
|
@ -13,6 +13,13 @@ In order to deploy an app you need two things:
|
|||||||
|
|
||||||
This tutorial tries to help you make choices about which server and which DNS setup you need to run a _Co-op Cloud_ deployment but it does not go into great depth about how to set up a new server.
|
This tutorial tries to help you make choices about which server and which DNS setup you need to run a _Co-op Cloud_ deployment but it does not go into great depth about how to set up a new server.
|
||||||
|
|
||||||
|
??? question "Can `abra` help automate this?"
|
||||||
|
|
||||||
|
Our `abra` tool can help bootstrap new servers & configure DNS records for
|
||||||
|
you. We'll skip that for now since we're just getting started. For more on
|
||||||
|
these topics after you finish the tutorial see the [operators
|
||||||
|
handbook](/operators/handbook).
|
||||||
|
|
||||||
### Server setup
|
### Server setup
|
||||||
|
|
||||||
Co-op Cloud has itself near zero system requirements. You only need to worry about the system resource usage of your apps and the overhead of running containers with the docker runtime (often negligible. If you want to know more, see [this FAQ entry](/intro/faq/#isnt-running-everything-in-containers-inefficient)).
|
Co-op Cloud has itself near zero system requirements. You only need to worry about the system resource usage of your apps and the overhead of running containers with the docker runtime (often negligible. If you want to know more, see [this FAQ entry](/intro/faq/#isnt-running-everything-in-containers-inefficient)).
|
||||||
@ -96,38 +103,14 @@ If you run into issues during installation, [please report a ticket](https://git
|
|||||||
|
|
||||||
### Add your server
|
### Add your server
|
||||||
|
|
||||||
Now you can connect `abra` with your server. You must have a working SSH configuration for your server before you can proceed. That means you can run `ssh <server-domain>` on your command-line and everything Works :tm:. See the [`abra` SSH troubleshooting](/abra/trouble/#ssh-connection-issues) for a working SSH configuration example.
|
Now you can connect `abra` with your server. You should have a working SSH configuration before you can do this (e.g. a matching `Host <server-domain>` entry in `~/.ssh/config` with the correct SSH connection details). That means you can run `ssh <server-domain>` on your command-line and everything Works :tm:.
|
||||||
|
|
||||||
??? warning "Beware of SSH dragons :dragon_face:"
|
|
||||||
|
|
||||||
Under the hood `abra` uses plain 'ol `ssh` and aims to make use of your
|
|
||||||
existing SSH configurations in `~/.ssh/config` and interfaces with your
|
|
||||||
running `ssh-agent` for password protected secret key files.
|
|
||||||
|
|
||||||
Running `server add` with `-d` or `--debug` should help you debug what is
|
|
||||||
going on under the hood. `ssh -v ...` should also help. If you're running
|
|
||||||
into SSH connection issues with `abra` take a moment to read [this
|
|
||||||
troubleshooting entry](/abra/trouble/#ssh-connection-issues).
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ssh <server-domain> # make sure it works
|
ssh <server-domain> # make sure it works
|
||||||
abra server add <server-domain>
|
abra server add <server-domain>
|
||||||
```
|
```
|
||||||
|
|
||||||
It is important to note that `<server-domain>` here is a publicy accessible domain name which points to your server IP address. `abra` does make sure this is the case and this is done to avoid issues with HTTPS certificate rate limiting.
|
It is important to note that `<domain>` here is a publicy accessible domain name which points to your server IP address. `abra` does make sure this is the case and this is done to avoid issues with HTTPS certificate rate limiting.
|
||||||
|
|
||||||
??? warning "Can I use arbitrary server names?"
|
|
||||||
|
|
||||||
Yes, this is possible. You need to pass `-D` to `server add` and ensure
|
|
||||||
that your `Host ...` entry in your SSH configuration includes the name.
|
|
||||||
So, for example:
|
|
||||||
|
|
||||||
Host example.com example
|
|
||||||
...
|
|
||||||
|
|
||||||
And then:
|
|
||||||
|
|
||||||
abra server add -D example
|
|
||||||
|
|
||||||
You will now have a new `~/.abra/` folder on your local file system which stores all the configuration of your Co-op Cloud instance.
|
You will now have a new `~/.abra/` folder on your local file system which stores all the configuration of your Co-op Cloud instance.
|
||||||
|
|
||||||
@ -137,30 +120,34 @@ By now `abra` should have registered this server as managed. To confirm this run
|
|||||||
abra server ls
|
abra server ls
|
||||||
```
|
```
|
||||||
|
|
||||||
|
??? warning "Beware of SSH dragons :dragon_face:"
|
||||||
|
|
||||||
|
Under the hood `abra` uses plain 'ol `ssh` and aims to make use of your
|
||||||
|
existing SSH configurations in `~/.ssh/config` and interfaces with your
|
||||||
|
running `ssh-agent` for password protected secret key files.
|
||||||
|
|
||||||
|
Running `server add` with `-d` or `--debug` should help you debug what is going
|
||||||
|
on under the hood. If you're running into SSH connection issues with `abra`
|
||||||
|
take a moment to read [this troubleshooting
|
||||||
|
entry](/abra/trouble/#ssh-connection-issues).
|
||||||
|
|
||||||
??? question "How do I share my configs in `~/.abra`?"
|
??? question "How do I share my configs in `~/.abra`?"
|
||||||
|
|
||||||
It's possible and quite easy, for more see [this handbook
|
It's possible and quite easy, for more see [this handbook entry](/operators/handbook/#understanding-app-and-server-configuration).
|
||||||
entry](/operators/handbook/#understanding-app-and-server-configuration).
|
|
||||||
|
|
||||||
### Web proxy setup
|
### Web proxy setup
|
||||||
|
|
||||||
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/).
|
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
|
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.
|
||||||
supports automatic SSL certificate configuration and other quality-of-life
|
|
||||||
features which make deploying libre apps more enjoyable.
|
|
||||||
|
|
||||||
**1. To get started, you'll need to create a new app:**
|
To get started, you'll need to create a new app:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
abra app new traefik
|
abra app new traefik
|
||||||
```
|
```
|
||||||
|
|
||||||
Choose your newly registered server and specify a domain name. By default `abra`
|
Choose your newly registered server and specify a domain name.
|
||||||
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`:
|
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`:
|
||||||
|
|
||||||
@ -168,32 +155,14 @@ You will want to take a look at your generated configuration and tweak the `LETS
|
|||||||
abra app config <traefik-domain>
|
abra app config <traefik-domain>
|
||||||
```
|
```
|
||||||
|
|
||||||
Every app you deploy will have one of these `.env` files, which contains
|
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.
|
||||||
variables which will be injected into app configurations when deployed. These
|
|
||||||
files exist at relevantly named path:
|
|
||||||
|
|
||||||
```bash
|
Now it is time to deploy:
|
||||||
~/.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>
|
abra app deploy <traefik-domain>
|
||||||
```
|
```
|
||||||
|
|
||||||
Voila. Abracadabra :magic_wand: your first app is deployed :sparkles:
|
|
||||||
|
|
||||||
|
|
||||||
### Deploy Nextcloud
|
### Deploy Nextcloud
|
||||||
|
|
||||||
And now we can deploy apps. Let's create a new Nextcloud app.
|
And now we can deploy apps. Let's create a new Nextcloud app.
|
||||||
|
10
mkdocs.yml
10
mkdocs.yml
@ -125,18 +125,16 @@ nav:
|
|||||||
- federation/resolutions/passed/015.md
|
- federation/resolutions/passed/015.md
|
||||||
- federation/resolutions/passed/016.md
|
- federation/resolutions/passed/016.md
|
||||||
- federation/resolutions/passed/017.md
|
- federation/resolutions/passed/017.md
|
||||||
- federation/resolutions/passed/018.md
|
|
||||||
- federation/resolutions/passed/019.md
|
|
||||||
- federation/resolutions/passed/020.md
|
|
||||||
- "In Progress":
|
- "In Progress":
|
||||||
- federation/resolutions/in-progress/013.md
|
- federation/resolutions/in-progress/013.md
|
||||||
|
- federation/resolutions/in-progress/018.md
|
||||||
|
- federation/resolutions/in-progress/019.md
|
||||||
- "Minutes":
|
- "Minutes":
|
||||||
- federation/minutes/index.md
|
- federation/minutes/index.md
|
||||||
- "Recently":
|
- "Recently":
|
||||||
- federation/minutes/2024-04-17.md
|
- federation/minutes/2024-29-03.md
|
||||||
- federation/minutes/2024-03-29.md
|
|
||||||
- "Archive":
|
|
||||||
- federation/minutes/2024-02-01.md
|
- federation/minutes/2024-02-01.md
|
||||||
|
- "Archive":
|
||||||
- federation/minutes/2022-03-03.md
|
- federation/minutes/2022-03-03.md
|
||||||
- federation/minutes/2023-05-03.md
|
- federation/minutes/2023-05-03.md
|
||||||
- "Digital Tools": federation/tools.md
|
- "Digital Tools": federation/tools.md
|
||||||
|
Loading…
x
Reference in New Issue
Block a user