digitalboard.core/roles/send
Simon Bärlocher de947dd8a4
feat(send): add role for self-hosted Send file-share service
Deploys timvisee/send with a Redis backend behind Traefik. Supports
local-disk or S3 storage (e.g. via the garage role). Uses the shared
`*_domains` list convention so the router can accept internal *.int.*
names alongside the canonical BASE_URL host.
2026-05-20 22:00:32 +02:00
..
defaults feat(send): add role for self-hosted Send file-share service 2026-05-20 22:00:32 +02:00
handlers feat(send): add role for self-hosted Send file-share service 2026-05-20 22:00:32 +02:00
meta feat(send): add role for self-hosted Send file-share service 2026-05-20 22:00:32 +02:00
tasks feat(send): add role for self-hosted Send file-share service 2026-05-20 22:00:32 +02:00
templates feat(send): add role for self-hosted Send file-share service 2026-05-20 22:00:32 +02:00
vars feat(send): add role for self-hosted Send file-share service 2026-05-20 22:00:32 +02:00
README.md feat(send): add role for self-hosted Send file-share service 2026-05-20 22:00:32 +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