docs.coopcloud.tech/docs/abra/trouble.md

106 lines
5.0 KiB
Markdown
Raw Normal View History

2022-01-26 10:47:44 +00:00
---
2022-01-27 09:27:23 +00:00
title: Troubleshoot
2022-01-26 10:47:44 +00:00
---
2022-02-02 20:27:05 +00:00
## Where do I report `abra` bugs / feature requests?
2022-02-03 13:37:34 +00:00
You can use [this issue tracker](https://git.coopcloud.tech/coop-cloud/abra/issues/new).
2022-02-03 15:45:15 +00:00
## SSH connection issues?
2022-02-02 20:27:05 +00:00
2022-02-03 15:45:15 +00:00
`abra` tries its best to learn from your system configuration or command-line input what the correct SSH connection details are for a given server. This doesn't always work out. Here are some things to try to fix it.
2022-02-02 20:27:05 +00:00
2022-02-03 15:45:15 +00:00
First, ensure that you can `ssh <my-server>` and things work. If you can't SSH to your server then neither can `abra`. If you have a password protected SSH key, then you'll need to make sure your `ssh-agent` is running and you've added your SSH key part:
```
eval $(ssh-agent -k)
ssh-add ~/.ssh/<my-secret-key-part>
ssh-add -L # validate loaded keys
```
2022-02-04 09:58:20 +00:00
The first thing `abra` will check for is the connection details listed in `abra server ls`. Check those details are correct. If you haven't managed to `abra server add` your server yet, then no details will appear in that list. You may need to take a look at [this entry](/abra/trouble/#abra-server-ls-shows-the-wrong-details) to clean up old values depending on your situation.
2022-02-03 15:45:15 +00:00
`abra` will then try to read your `~/.ssh/config` entries and match the server domain against a `Host` entry. So, if you do `ssh myserver.com` and you have:
```
Host myserver.com
Hostname myserver.com
User myuser
Port 222
IdentityFile ~/.ssh/my@myserver.com
```
Then `abra` should have all it needs to build a working SSH connection. You can validate this by passing `-d/--debug` to your commands.
However, sometimes, you use an alias in your SSH configuration, say:
```
Host mys
...
```
So that you can simply type `ssh mys`. `abra` won't be able to match against those entries to discover connection details. You can use aliases to remedy this:
```
Host mys, myserver.com
...
```
`abra` will try to read the relevant `IdentityFile` entry from your `~/.ssh/config` but if it can't make a match, it will rely on your key being added to the `ssh-agent`.
2022-01-26 10:47:44 +00:00
2022-02-03 15:45:15 +00:00
Due to a limitation in our implementation, `abra` uses 2 methods of making SSH connections, the main `abra` -> `remote docker` connection using `/usr/bin/ssh` which can seamlessly pick up loaded SSH keys. However, for SSH host key checking, `abra` uses an SSH library & Golang SSH internals. We're working on resolving this to a single implementation but it is tricky work.
2022-01-27 10:50:40 +00:00
## "abra server ls" shows the wrong details?
2022-02-04 12:49:20 +00:00
You can use `abra server rm` to remove the incorrect details. Make sure to take a backup of your `~/.abra/servers/<domain>` first. You can then try to re-create by using `abra server add ...` again, making sure to take care if you need to use `<user> <port>`, see `abra server add -h` for more help on this.
2022-02-03 13:37:34 +00:00
However, if you have Docker installed on the same machine you have `abra`, then there might be some confusion. If you run `docker context ls` you'll see that Docker uses context connection strings also. `abra` simply uses this approach. Sometimes, your Docker defined context details & your `abra` context details can get out of sync. You can use `docker context rm` to resolve this.
If you need to create a new context from Docker, you can do:
```
docker context create <domain> --docker "host=ssh://<user>@<domain>:<port>"
```
(This is what we used to before we wrote `abra` to make it more convenient.)
2022-01-27 10:50:40 +00:00
## Command-line flag handling is weird?
2022-02-03 15:45:15 +00:00
Unfortunately, there is a limitation in our underlying command-line library implementation for `abra` ([ref](https://github.com/urfave/cli/issues/1113)) (and more fundamentally in the design of flags in the Go programming language itself ([ref](https://utcc.utoronto.ca/~cks/space/blog/programming/GoFlagUIImportance))). We're aiming to work with upstream to resolve the flag handling but this it is not yet clear when this will be resolved.
Currently, the following example of flexible flag usage is supported:
```
abra app new gitea -S # generate secrets, after args
abra app new -S gitea # generate secrets, before args
```
But something like the following does not work as expected:
```
abra app new -S gitea -p
```
Where the position of flags is mixed before & after args. `-p` is ignored :cry:
We're still waiting for upstream patch which resovles this.
## Why can't `abra` support multiline in `.env` files?
We're sorry, it's an issue with an upstream dependency. See [`#291`](https://git.coopcloud.tech/coop-cloud/organising/issues/291) for more.
## I need some feature from the old depreciated bash abra?
There is an archive of the [old code here](https://git.coopcloud.tech/coop-cloud/abra-bash).
You can install it alongside the [supported version of Abra](https://git.coopcloud.tech/coop-cloud/abra) by using these commands:
```bash
git clone https://git.coopcloud.tech/coop-cloud/abra-bash ~/.abra/bash-src
ln -s ~/.abra/bash-src/abra ~/.local/bin/babra
```
2022-05-17 12:00:05 +00:00
## I am seeing very weird `lookup <domain> on <ip>: write udp <ip>: write: operation not permitted` errors
You should turn off your VPN. `abra` has trouble dealing with it right now. We welcome change sets to make it work though!