/any-sync-dockercompose

docker-compose for testing any-sync

Primary LanguagePythonMIT LicenseMIT

Docker-compose for any-sync

Self-host for any-sync, designed for personal usage or for review and testing purposes.

Important

This image is suitable for running your personal self-hosted any-sync network for home usage. If you plan to self-host a heavily used any-sync network, please consider other options.

Warning

Before upgrading please read UPGRADE.md

Table of Contents

Prepare

Usage

  • start stand - at the first run the directories etc/ of configuration files and storage/ for data storage will be generated:

    For Linux, MacOS and other nix* systems:

    make start
    

    For Windows (Run this in PowerShell, not cmd.exe):

    # Disable auto convert LF to CRLF
    # !!! run BEFORE clone repo !!!
    git config --global core.autocrlf false
    
    # Generate config
    docker buildx build --tag generateconfig-env --file Dockerfile-generateconfig-env .
    docker run --rm --volume ${PWD}/:/code/ generateconfig-env
    # Run containers
    docker compose up -d
    
  • stop stand:

    make stop
    
  • restart stand:

    make restart
    
  • update image versions and start:

    make update
    
  • clean unused docker objects:

    make clean
    
  • clean config and storage files - deleting data for redis, mongo, s3, any-sync-*:

    make cleanEtcStorage
    
  • show logs:

    docker-compose logs -f any-sync-node
    docker-compose logs -f any-sync-filenode
    docker-compose logs -f
    
  • attach to container:

    docker compose exec mongo-1 bash
    docker compose exec any-sync-node-1 bash
    docker compose exec any-sync-coordinator bash
    
  • restart certain container:

    docker compose restart any-sync-node-1
    
  • get current network config

    docker compose exec mongo-1 mongosh 127.0.0.1:27001/coordinator
    db.getMongo().setReadPref('primaryPreferred'); db.nodeConf.find().sort( { _id: -1 } ).limit(1)
    
  • run client (GUI) Download client for desktop Use <pathToRepo>/etc/client.yml as a network configuration for the clients. See the documentation for more details.

  • run client (CLI)

    # macos example
    ANYTYPE_LOG_LEVEL="*=DEBUG" ANYPROF=:6060 ANY_SYNC_NETWORK=$(pwd)/etc/client.yml /Applications/Anytype.app/Contents/MacOS/Anytype
    

Configuration

Warning

The .env file is generated automatically. It is based on the .env.common file, which is overridden or extended by variables from the .env.override file.

Version control

By default, we use "prod" image version for any-sync-* daemons.
Also you can use "stage1" or "latest" verions:

# for use stage1 version
ln -F -s .env.override.stage1 .env.override
# for use latest version
ln -F -s .env.override.latest .env.override

external listen host

By default, we use only the listen address 127.0.0.1, which is sufficient for running tests and a local client.
If you need to connect external clients, please add "EXTERNAL_LISTEN_HOSTS" in .env.override file.
Use spaces separation, multiline is not supported. For example:

EXTERNAL_LISTEN_HOSTS=<yourExternalIp1> <yourExternalIp2 ...

Troubleshooting & FAQ

mongo replica set error

if you have mongo replica set error like this:

test> rs.status()
MongoServerError: Our replica set config is invalid or we are not a member of it

please run command:

docker compose exec mongo-1 mongosh --port 27001 --eval 'rs.reconfig({_id: rs.conf()._id, members: [{ _id: 0, host: "mongo-1:27001" }]}, {force: true});'

Compatible versions

You can find compatible versions on these pages:

Local build

If you need to create local build binaries for any-sync-*, you can do so by using the "overrides" functionality in docker-compose.

  • clone repos
    install -d repos && for REPO in any-sync-{node,filenode,coordinator,consensusnode}; do if [[ ! -d repos/$REPO ]]; then git clone git@github.com:anyproto/${REPO}.git repos/$REPO; fi; done
    
  • to create a symlink for the "override file," you can either create it yourself as docker-compose.override.yml or use an existing one
    ln -F -s docker-compose.any-sync-node-1.yml docker-compose.override.yml
    
  • restart docker compose
    make restart
    

Limits web admin

open link in browser: http://127.0.0.1:80

Upgrading

For detailed instructions of upgrading to the latest version, please see the UPGRADE.md file.

Changelog

For a detailed list of changes in each version, check out the CHANGELOG.md file.
For auto generate CHANGELOG.md file please use commands:

pip install git-changelog
git-changelog --output CHANGELOG.md

Contribution

Thank you for your desire to develop Anytype together!

❤️ This project and everyone involved in it is governed by the Code of Conduct.

🧑‍💻 Check out our contributing guide to learn about asking questions, creating issues, or submitting pull requests.

🫢 For security findings, please email security@anytype.io and refer to our security guide for more information.

🤝 Follow us on Github and join the Contributors Community.


Made by Any — a Swiss association 🇨🇭

Licensed under MIT.