Hi, guys. First, thanks for the app, it looks really pretty and useful!
I tried my hand at the whole self-hosting situation, and pheww, it was quite an “adventure”! At the end it did not work because I was not able to build the android client, but that is for another discussion
I want to share what I think it will be necessary to know when deploying a self-hosted solution.
Network resource security
An Anytype network is composed of a few elements (nodes, redis, mongo) that need to connect with each other, but not necessarily (?) with the client. For example, from the language of the readme, it looks like the client needs to communicate with the (some?) nodes, and the nodes connect with the databases. Having clarity on this is important, because I want to be able to access Anytype from outside of my LAN, and I don’t want to open proxies and ports that I don’t absolutely have to to the outside. In my ideal architecture, I want to set DNS records for the resources that my Anytype instance needs, and use them in the config.
Storage
In the readme for self-hosting, there is mention of an S3 emulator. It would be great to hear the rationale for it (against having the option of a real S3 bucket in aws), and a bit of a discussion on how is that “S3 port” used, and by which resources. On a smilar vein, I wonder how and where can we store the database and other assets of the deployment. I plan to host Anytype on my NAS, so having that information would be useful to plan my shared folders and containers. I am also thinking on hosting it on AWS (if hosting costs allow), and in that cloud, not having a clear understanding the architecture ends up in a wallet disaster
Clients
It was not clear how or why the clients had to be built from source. The UX that I was expecting was something like choosing between Anytype hosted or self hosted with a radio button, and if self-hosted, type the URLs (ideally one URL) of the nodes. It also makes migration to other providers very uncertain. For example, if I am self-hosting, but then I decide to sign up for your paid program, it would be ideal to just check the other option. Similarly, lets say I am hosting on my NAS, but it broke, so I want to move the infra to AWS, it would be great if I could just input the resource URLs of that deployment in my client apps
Hapy to help
All that said, I really like the Anytype project, and if there is anything I can do to help, I would be happy to. I mainly code in Python, but I also have some experience setting up Docker applications, AWS and cloud computing things, and some security-related topics. I can also do UX testing and consolidating documentation