mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
Wire nine database-backed web-app roles to the shared SeaweedFS object store
via the engine-agnostic objstore lookup, following the existing consumer recipe
(declare the seaweedfs service, render the app S3 config from
lookup('objstore', application_id, ...), add the e2e test). Each app's S3
config keys were verified against the upstream docs/source, and all honor
SeaweedFS path-style addressing + the internal http endpoint:
- fider: BLOB_STORAGE=s3 + BLOB_STORAGE_S3_*
- snipe-it: split s3_private/s3_public disks, single bucket via BUCKET_ROOT, *_AWS_PATH_STYLE
- mobilizon: Uploader.S3 + ExAws (private)
- decidim: ActiveStorage amazon service, force_path_style
- taiga: django-storages, AWS_S3_ADDRESSING_STYLE=path
- shopware: Flysystem amazon-s3 adapter, use_path_style_endpoint
- magento: remote_storage driver aws-s3 + endpoint
- matrix: s3_storage_provider module baked into the image + media_storage_providers
- gitlab: consolidated object storage, single bucket split into per-type virtual buckets, path_style
Both object-store guards (test_database_requires_seaweedfs,
test_seaweedfs_consumer_playwright) pass; autoformat clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
66 lines
2.8 KiB
Django/Jinja
66 lines
2.8 KiB
Django/Jinja
---
|
|
{% if lookup('objstore', application_id, 'enabled') | bool %}
|
|
shopware:
|
|
filesystem:
|
|
public:
|
|
type: "amazon-s3"
|
|
url: "{{ lookup('objstore', application_id, 'public_url') }}"
|
|
config:
|
|
bucket: "{{ lookup('objstore', application_id, 'bucket') }}"
|
|
region: "{{ lookup('objstore', application_id, 'region') }}"
|
|
endpoint: "{{ lookup('objstore', application_id, 'url') }}"
|
|
root: "public"
|
|
use_path_style_endpoint: true
|
|
credentials:
|
|
key: "{{ lookup('objstore', application_id, 'access_key') }}"
|
|
secret: "{{ lookup('objstore', application_id, 'secret_key') }}"
|
|
private:
|
|
type: "amazon-s3"
|
|
visibility: "private"
|
|
config:
|
|
bucket: "{{ lookup('objstore', application_id, 'bucket') }}"
|
|
region: "{{ lookup('objstore', application_id, 'region') }}"
|
|
endpoint: "{{ lookup('objstore', application_id, 'url') }}"
|
|
root: "private"
|
|
use_path_style_endpoint: true
|
|
credentials:
|
|
key: "{{ lookup('objstore', application_id, 'access_key') }}"
|
|
secret: "{{ lookup('objstore', application_id, 'secret_key') }}"
|
|
theme:
|
|
type: "amazon-s3"
|
|
url: "{{ lookup('objstore', application_id, 'public_url') }}"
|
|
config:
|
|
bucket: "{{ lookup('objstore', application_id, 'bucket') }}"
|
|
region: "{{ lookup('objstore', application_id, 'region') }}"
|
|
endpoint: "{{ lookup('objstore', application_id, 'url') }}"
|
|
root: "theme"
|
|
use_path_style_endpoint: true
|
|
credentials:
|
|
key: "{{ lookup('objstore', application_id, 'access_key') }}"
|
|
secret: "{{ lookup('objstore', application_id, 'secret_key') }}"
|
|
sitemap:
|
|
type: "amazon-s3"
|
|
url: "{{ lookup('objstore', application_id, 'public_url') }}"
|
|
config:
|
|
bucket: "{{ lookup('objstore', application_id, 'bucket') }}"
|
|
region: "{{ lookup('objstore', application_id, 'region') }}"
|
|
endpoint: "{{ lookup('objstore', application_id, 'url') }}"
|
|
root: "sitemap"
|
|
use_path_style_endpoint: true
|
|
credentials:
|
|
key: "{{ lookup('objstore', application_id, 'access_key') }}"
|
|
secret: "{{ lookup('objstore', application_id, 'secret_key') }}"
|
|
asset:
|
|
type: "amazon-s3"
|
|
url: "{{ lookup('objstore', application_id, 'public_url') }}"
|
|
config:
|
|
bucket: "{{ lookup('objstore', application_id, 'bucket') }}"
|
|
region: "{{ lookup('objstore', application_id, 'region') }}"
|
|
endpoint: "{{ lookup('objstore', application_id, 'url') }}"
|
|
root: "asset"
|
|
use_path_style_endpoint: true
|
|
credentials:
|
|
key: "{{ lookup('objstore', application_id, 'access_key') }}"
|
|
secret: "{{ lookup('objstore', application_id, 'secret_key') }}"
|
|
{% endif %}
|