1
0
Fork 0
mirror of https://github.com/anyproto/any-sync-dockercompose.git synced 2025-06-08 05:47:03 +09:00

Merge pull request #17 from anyproto/new-s3-backend

New s3 backend
This commit is contained in:
Kirill Shklyaev 2024-01-24 12:38:04 +03:00 committed by GitHub
commit 450d49c998
Signed by: github
GPG key ID: B5690EEEBB952194
8 changed files with 60 additions and 20 deletions

View file

@ -1,3 +1,3 @@
[default]
aws_access_key_id=testid
aws_secret_access_key=testkey
aws_access_key_id=minio_access_key
aws_secret_access_key=minio_secret_key

13
.env
View file

@ -1,6 +1,8 @@
AWS_ACCESS_KEY_ID=testid
AWS_SECRET_ACCESS_KEY=testkey
AWS_PORT=4569
AWS_ACCESS_KEY_ID=minio_access_key
AWS_SECRET_ACCESS_KEY=minio_secret_key
MINIO_BUCKET=minio-bucket
MINIO_PORT=9000
MINIO_WEB_PORT=9001
ANY_SYNC_NODE_VERSION=latest
ANY_SYNC_FILENODE_VERSION=latest
@ -9,7 +11,7 @@ ANY_SYNC_CONSENSUSNODE_VERSION=latest
MONGO_VERSION=7.0.2
REDIS_VERSION=7.2.0-v6
S3_EMULATOR_VERSION=0.0.1
MINIO_VERSION=RELEASE.2024-01-16T16-07-38Z
EXTERNAL_LISTEN_HOST="127.0.0.1"
@ -36,6 +38,9 @@ ANY_SYNC_COORDINATOR_PORT=1004
ANY_SYNC_COORDINATOR_ADDRESSES=${ANY_SYNC_COORDINATOR_HOST}:${ANY_SYNC_COORDINATOR_PORT}
ANY_SYNC_COORDINATOR_QUIC_PORT=1014
ANY_SYNC_COORDINATOR_QUIC_ADDRESSES=${ANY_SYNC_COORDINATOR_HOST}:${ANY_SYNC_COORDINATOR_QUIC_PORT}
ANY_SYNC_COORDINATOR_FILE_LIMIT_DEFAULT=1099511627776
ANY_SYNC_COORDINATOR_FILE_LIMIT_ALPHA_USERS=1099511627776
ANY_SYNC_COORDINATOR_FILE_LIMIT_NIGHTLY_USERS=1099511627776
ANY_SYNC_FILENODE_HOST=any-sync-filenode
ANY_SYNC_FILENODE_PORT=1005

View file

@ -7,6 +7,8 @@ generate_config:
start: generate_config
docker compose up -d
@echo "Done! Upload your self-hosted network configuration file ${CURDIR}/etc/client.yml into the client app"
@echo "See: https://doc.anytype.io/anytype-docs/data-and-security/self-hosting#switching-between-networks"
stop:
docker compose stop

View file

@ -3,6 +3,9 @@ Self-host for any-sync, designed for review and testing purposes.
> [!IMPORTANT]
> please don't use it for production!
> [!WARNING]
> Starting from release version v2.0.1, we have transitioned from the **s3-emulator** to **minio** as the data storage for any-sync-filenode. Please note that this change will result in the loss of any-sync-filenode data (stored at the path `./storage/s3_root`).
## Prepare
* install docker and docker-compose https://docs.docker.com/compose/install/linux/

View file

@ -38,17 +38,46 @@ services:
- "${REDIS_PORT}:${REDIS_PORT}"
volumes:
- ./storage/redis/:/data/
healthcheck:
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
interval: 10s
timeout: 30s
retries: 3
s3-emulator:
image: "stanislavt/s3-emulator:${S3_EMULATOR_VERSION}"
minio:
container_name: minio
image: "minio/minio:${MINIO_VERSION}"
restart: always
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: "${AWS_ACCESS_KEY_ID}"
MINIO_ROOT_PASSWORD: "${AWS_SECRET_ACCESS_KEY}"
ports:
- "${AWS_PORT}:4569"
- "${MINIO_PORT}:9000"
- "${MINIO_WEB_PORT}:9001"
volumes:
- ./storage/s3_root:/s3_root
- ./storage/minio:/data
healthcheck:
test: bash -c ':> /dev/tcp/127.0.0.1/9000' || exit 1
interval: 5s
timeout: 10s
retries: 3
networks:
default:
aliases:
- s3-emulator.s3-emulator
- "${MINIO_BUCKET}.minio" # <bucket-name>.<endpoint-name>
create-bucket:
image: minio/mc:latest
environment:
MC_HOST_minio: http://${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}@minio:${MINIO_PORT}
restart: no
depends_on:
- minio
entrypoint:
- sh
- -c
- mc mb minio/${MINIO_BUCKET}
any-sync-coordinator_bootstrap:
image: "ghcr.io/anyproto/any-sync-coordinator:${ANY_SYNC_COORDINATOR_VERSION}"
@ -81,7 +110,7 @@ services:
image: "ghcr.io/anyproto/any-sync-filenode:${ANY_SYNC_FILENODE_VERSION}"
depends_on:
- redis
- s3-emulator
- minio
- any-sync-coordinator
ports:
- "${ANY_SYNC_FILENODE_PORT}:${ANY_SYNC_FILENODE_PORT}"

View file

@ -26,6 +26,6 @@ quic:
dialTimeoutSec: 10
fileLimit:
limitDefault: 1099511627776
limitAlphaUsers: 1099511627776
limitNightlyUsers: 1099511627776
limitDefault: %ANY_SYNC_COORDINATOR_FILE_LIMIT_DEFAULT%
limitAlphaUsers: %ANY_SYNC_COORDINATOR_FILE_LIMIT_ALPHA_USERS%
limitNightlyUsers: %ANY_SYNC_COORDINATOR_FILE_LIMIT_NIGHTLY_USERS%

View file

@ -1,10 +1,11 @@
s3Store:
bucket: s3-emulator
indexBucket: s3-emulator
bucket: %MINIO_BUCKET%
indexBucket: %MINIO_BUCKET%
maxThreads: 16
profile: default
region: eu-central-1
endpoint: http://s3-emulator:%AWS_PORT%
region: us-east-1
endpoint: http://minio:%MINIO_PORT%
forcePathStyle: true # 'true' for self-hosted S3 Object Storage
redis:
isCluster: false

View file

@ -48,7 +48,7 @@ for node_type in node_1 node_2 node_3 coordinator filenode consensusnode; do
done
# Replace other placeholders
placeholders=( "MONGO_CONNECT" "REDIS_URL" "AWS_PORT" )
placeholders=( "MONGO_CONNECT" "REDIS_URL" "MINIO_PORT" "MINIO_BUCKET" "ANY_SYNC_COORDINATOR_FILE_LIMIT_DEFAULT" "ANY_SYNC_COORDINATOR_FILE_LIMIT_ALPHA_USERS" "ANY_SYNC_COORDINATOR_FILE_LIMIT_NIGHTLY_USERS")
for placeholder in "${placeholders[@]}"; do
perl -i -pe "s|%${placeholder}%|${!placeholder}|g" "${network_file}" "${dest_path}/"/*/*.yml
done