digitalboard.core/roles/send
Simon Bärlocher 98e40b4730
docs(send): add meta/argument_specs.yml
29 typed options with full defaults coverage (no required: true marks —
the role works with an empty S3 config when storage_backend=local).
Documents the send_domains list convention, the local-vs-s3 storage
choice, the timing/size limits and the Traefik / network wiring.

Loads through ansible-core's ArgumentSpecValidator. Matches the spec
convention used by the other roles in this collection.
2026-05-26 16:16:36 +02:00
..
defaults feat(send): add role for self-hosted Send file-share service 2026-05-26 16:16:36 +02:00
handlers feat(send): add role for self-hosted Send file-share service 2026-05-26 16:16:36 +02:00
meta docs(send): add meta/argument_specs.yml 2026-05-26 16:16:36 +02:00
tasks fix(send): self-review fixes (FQCN, min_ansible_version str) 2026-05-26 16:16:36 +02:00
templates fix(send): use Traefik v3 OR-syntax for multi-domain Host rule 2026-05-26 16:16:36 +02:00
vars feat(send): add role for self-hosted Send file-share service 2026-05-26 16:16:36 +02:00
README.md feat(send): add role for self-hosted Send file-share service 2026-05-26 16:16:36 +02:00

Send

Deploys a self-hosted 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

- hosts: send_servers
  become: true
  roles:
    - digitalboard.core.send

With S3 (Garage) backend:

send_storage_backend: s3
send_s3_endpoint: "http://{{ hostvars['backend']['garage_s3_domain'] }}"
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'] }}"

License

MIT