Self-hosting networking requirements and adding self-hosted network to clients

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

Self-hosting will be improved in the December release. You won’t need to build clients from source anymore iirc. Here’s a sneak peak of the settings menu (sorry about the quality).
image

1 Like