diff --git a/blueprints/seaweedfs/docker-compose.yml b/blueprints/seaweedfs/docker-compose.yml new file mode 100644 index 000000000..a664e9807 --- /dev/null +++ b/blueprints/seaweedfs/docker-compose.yml @@ -0,0 +1,114 @@ +services: + master: + image: chrislusf/seaweedfs:latest + command: > + -v=0 + master + -volumeSizeLimitMB=10240 + -ip=master + -ip.bind=0.0.0.0 + -port=9333 + -mdir=/data/master + volumes: + - seaweedfs-master:/data/master + restart: unless-stopped + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://localhost:9333"] + interval: 30s + timeout: 10s + retries: 3 + expose: + - 9333 + deploy: + resources: + limits: + memory: 512M + reservations: + memory: 256M + + volume: + image: chrislusf/seaweedfs:latest + command: > + -v=0 + volume + -mserver="master:9333" + -port=8080 + -dir=/data/volume + -max=100 + volumes: + - seaweedfs-volume:/data/volume + depends_on: + master: + condition: service_healthy + restart: unless-stopped + expose: + - 8080 + deploy: + resources: + limits: + memory: 1G + reservations: + memory: 512M + + filer: + image: chrislusf/seaweedfs:latest + command: > + -v=0 + filer + -defaultReplicaPlacement=000 + -master="master:9333" + -ip=filer + -ip.bind=0.0.0.0 + -port=8888 + environment: + - WEED_MASTER=master:9333 + volumes: + - seaweedfs-filer:/data + depends_on: + - master + - volume + restart: unless-stopped + # # Secure the GUI with username/password + # labels: + # # htpasswd -nb admin admin + # - "traefik.http.middlewares.basic-auth.basicauth.users=admin:$$apr1$$aLLYxhdC$$ZAW26eJfBRC8qWjCkcZns." + # - "traefik.http.routers.service-name.middlewares=basic-auth" + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://localhost:8888"] + interval: 30s + timeout: 10s + retries: 3 + deploy: + resources: + limits: + memory: 1G + reservations: + memory: 512M + expose: + - 8888 + + s3: + image: chrislusf/seaweedfs:latest + command: > + -v=0 + s3 + -filer="filer:8888" + -ip.bind=0.0.0.0 + -port=8333 + environment: + - AWS_ACCESS_KEY_ID=${S3_ACCESS_KEY} + - AWS_SECRET_ACCESS_KEY=${S3_SECRET_KEY} + restart: unless-stopped + deploy: + resources: + limits: + memory: 512M + reservations: + memory: 256M + expose: + - 8333 + +volumes: + seaweedfs-master: + seaweedfs-volume: + seaweedfs-filer: diff --git a/blueprints/seaweedfs/seaweedfs.svg b/blueprints/seaweedfs/seaweedfs.svg new file mode 100644 index 000000000..61fce5681 --- /dev/null +++ b/blueprints/seaweedfs/seaweedfs.svg @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blueprints/seaweedfs/template.toml b/blueprints/seaweedfs/template.toml new file mode 100644 index 000000000..a72ae280f --- /dev/null +++ b/blueprints/seaweedfs/template.toml @@ -0,0 +1,27 @@ +[variables] +main_domain = "${domain}" +filer_domain = "filer.${domain}" +master_domain = "master.${domain}" +s3_domain = "s3.${domain}" + +[config] +mounts = [] + +[[config.domains]] +serviceName = "filer" +port = 8888 +host = "${filer_domain}" + +[[config.domains]] +serviceName = "master" +port = 9333 +host = "${master_domain}" + +[[config.domains]] +serviceName = "s3" +port = 8333 +host = "${s3_domain}" + +[config.env] +S3_ACCESS_KEY = "admin" +S3_SECRET_KEY = "${password:16}" diff --git a/meta.json b/meta.json index 7fc8b6b70..b2670bff0 100644 --- a/meta.json +++ b/meta.json @@ -5342,6 +5342,25 @@ "aggregator" ] }, + { + "id": "seaweedfs", + "name": "SeaweedFS", + "version": "latest", + "description": "SeaweedFS is a fast distributed storage system for blobs, objects, and files. Features S3-compatible API, POSIX FUSE mount, and WebDAV support.", + "logo": "seaweedfs.svg", + "links": { + "github": "https://github.com/seaweedfs/seaweedfs", + "website": "https://seaweedfs.com/", + "docs": "https://github.com/seaweedfs/seaweedfs/wiki" + }, + "tags": [ + "storage", + "s3", + "distributed", + "object-storage", + "file-system" + ] + }, { "id": "shlink", "name": "Shlink",