Replace ansible-galaxy init placeholders across the collection and correct documentation that drifted from the code, after a multi-agent review of every role README against its defaults, tasks and templates. Collection level: - README: role table for all 16 roles, requirements and role-ordering - galaxy.yml: declare community.docker and community.general deps, real description/tags/urls; normalize license to MIT-0 - meta/runtime.yml: requires_ansible '>=2.15.0' - plugins/README: document the homarr_layout filter and garage_credentials lookup instead of scaffold boilerplate Per-role meta/main.yml and README for the placeholder roles (389ds, authentik, authentik_outpost_ldap, base, collabora, drawio, garage, homarr, httpbin, keycloak, nextcloud, opencloud, traefik). Correctness fixes found during review: - keycloak: wrong domain default, drop invented keycloak_cert_resolver, document the provisioning feature - garage: root_domain is .s3.<first-entry>, not the bare domain - opnform: jwt/front_api secrets use `openssl rand -hex 32`; align the validation fail_msg in tasks/main.yml accordingly - send: S3 example references garage_s3_domains[0] (was singular) - opencloud: document required opencloud_wopi_domain License normalized to MIT-0 across galaxy.yml, role meta and READMEs to match the SPDX headers.
64 lines
1.9 KiB
Markdown
64 lines
1.9 KiB
Markdown
Send
|
|
====
|
|
|
|
Deploys a self-hosted [Send](https://github.com/timvisee/send) instance
|
|
(timvisee fork of the discontinued Mozilla Send) with a Redis backend
|
|
behind Traefik, using Docker Compose.
|
|
|
|
Requirements
|
|
------------
|
|
|
|
- Docker + `docker compose` plugin on the target host
|
|
- Traefik (role `digitalboard.core.traefik`) reachable via an external
|
|
Docker network named `proxy` (default)
|
|
- DNS for each entry in `send_domains` pointing at the reverse proxy
|
|
- Optional: a Garage S3 bucket if `send_storage_backend: s3`
|
|
|
|
Role Variables
|
|
--------------
|
|
|
|
Important defaults (see `defaults/main.yml` for the full list):
|
|
|
|
| Variable | Default | Description |
|
|
|---|---|---|
|
|
| `send_domains` | `["send.local.test"]` | FQDNs the router accepts; first entry is the canonical BASE_URL |
|
|
| `send_image` | `registry.gitlab.com/timvisee/send:latest` | Send container image |
|
|
| `send_max_file_size` | `1073741824` | Max upload size in bytes (1 GiB) |
|
|
| `send_max_expire_seconds` | `604800` | Max share lifetime (7 d) |
|
|
| `send_storage_backend` | `local` | `local` (volume) or `s3` |
|
|
| `send_s3_*` | `""` | S3 endpoint/bucket/key/secret (when backend is `s3`) |
|
|
| `send_use_ssl` | `true` | Issue Traefik labels for the `websecure` entrypoint |
|
|
|
|
Dependencies
|
|
------------
|
|
|
|
None.
|
|
|
|
Example Playbook
|
|
----------------
|
|
|
|
```yaml
|
|
- hosts: send_servers
|
|
become: true
|
|
roles:
|
|
- digitalboard.core.send
|
|
```
|
|
|
|
With S3 (Garage) backend:
|
|
|
|
```yaml
|
|
send_storage_backend: s3
|
|
send_s3_endpoint: "http://{{ hostvars['backend']['garage_s3_domains'][0] }}"
|
|
send_s3_bucket: "send"
|
|
send_s3_access_key: "{{ lookup('digitalboard.core.garage_credentials', 'send', host='backend')['key_id'] }}"
|
|
send_s3_secret_key: "{{ lookup('digitalboard.core.garage_credentials', 'send', host='backend')['secret_key'] }}"
|
|
```
|
|
|
|
When `send_storage_backend: s3`, the role asserts that `send_s3_endpoint`,
|
|
`send_s3_bucket`, `send_s3_access_key` and `send_s3_secret_key` are all set,
|
|
and fails early otherwise.
|
|
|
|
License
|
|
-------
|
|
|
|
MIT-0
|