anyproto / any-sync-filenode

Implementation of file node from any-sync protocol
https://anytype.io
MIT License
34 stars 14 forks source link

update file node configuration to provide S3 credentials and force path style #22

Closed clems4ever closed 11 months ago

clems4ever commented 11 months ago

Description

for self-hosted use cases, users might use an S3-compatible service like MinIO. This service requires authentication using an access key and a secret key however I think it does not really make sense for users to create an AWS configuration on the machine since there is no AWS account involved.

Moreover, for using MinIO, path style is mandatory unless users setup some kind of DNS resolution for their bucket. I think it is best to avoid this complication and simply force the path style with the related option in the AWS SDK. Without that option set in the case of minio, errors are thrown because the minio service cannot be resolved by the DNS resolver.

All this has been tested with MinIO.

What type of PR is this? (check all applicable)

Related Tickets & Documents

None

Mobile & Desktop Screenshots/Recordings

NA

Added tests?

Added to documentation?

clems4ever commented 11 months ago

If we merge this PR, I will add some documentation to tech-docs in the self-hosted document.

Also, I would advise to avoid duplicating the configuration datastructures like in https://github.com/anyproto/any-sync-tools/blob/b1ec0d33bb6452ac8582dd34a3a243bae9d4a2c1/any-sync-network/cmd/create.go#L70C9-L70C9 because it would require to keep both in sync. This might lead to issues if it is forgotten, I think it's better to avoid the issue altogether by maintaining the structure in one place and importing it in the other. Just a suggestion.

clems4ever commented 11 months ago

Good job on this wonderful project btw. FYI, I have made various PRs already in some of your repos and this one allowed me complete building a fully working self-hosted backup node with docker. I will wrap everything up and share my repo as soon as I have something satisfactory to get published.

cheggaaa commented 11 months ago

Also, I would advise to avoid duplicating the configuration datastructures like in https://github.com/anyproto/any-sync-tools/blob/b1ec0d33bb6452ac8582dd34a3a243bae9d4a2c1/any-sync-network/cmd/create.go#L70C9-L70C9 because it would require to keep both in sync. This might lead to issues if it is forgotten, I think it's better to avoid the issue altogether by maintaining the structure in one place and importing it in the other. Just a suggestion.

I agree, it's not good. Maybe it will be good if any-sync-tools repo will stores configs and other repos will import it. But seems it's a big change and maybe not very usable for development. So anyway thanks for the advice, we will think about it!

cheggaaa commented 11 months ago

Thank you! Merged and v0.3.5 created.

fuksman commented 11 months ago

@any contributor @clems4ever code