Ctrl K
ComunidadGuías…

README.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Docker Compose for any-sync

A self-hosted any-sync network, designed for personal use, review, or testing purposes.

> [!IMPORTANT]
> This setup is suitable for personal self-hosted any-sync networks.
> For high-load production deployments, consider using the [Puppet](https://github.com/anyproto/puppet-anysync) or [Ansible](https://github.com/anyproto/ansible-anysync) modules.

> [!WARNING]
> Before upgrading, read the [Upgrade Guide](../../wiki/Upgrade-Guide).

> [!IMPORTANT]
> MinIO has been replaced by [Garage](https://garagehq.deuxfleurs.fr/) (see
> [#178](https://github.com/anyproto/any-sync-dockercompose/issues/178)).
> Existing installs must run a one-off data migration — see the [Upgrade Guide](../../wiki/Upgrade-Guide).
> The stack refuses to start until the migration is done; no data is deleted.

## Requirements

- [Docker](https://docs.docker.com/compose/install/) with Compose plugin v2+
- ~1 GB RAM available

## Architecture

The stack runs the following services:

| Service | Role | Depends on |
|---|---|---|
| `any-sync-coordinator` | Network coordinator, manages spaces and members | MongoDB |
| `any-sync-node` ×3 | Document sync nodes | coordinator |
| `any-sync-filenode` | File storage node | coordinator, Garage, Redis |
| `any-sync-consensusnode` | Consensus for conflict resolution | coordinator |
| `netcheck` | Periodic connectivity health monitor | all nodes |
| MongoDB | Coordinator state | — |
| Redis | Filenode index | — |
| Garage | S3-compatible object storage for files | — |

Optional service: `anytype-cli` (commented out in `docker-compose.yml`) — HTTP/gRPC API server for automation.

## Getting Started

1. **Clone the repository:**
   ```bash
   git clone https://github.com/anyproto/any-sync-dockercompose.git
   cd any-sync-dockercompose
   ```

2. **Create your env file:**
   ```bash
   cp .env.example .env
   ```
   Edit `.env` directly for any customizations (e.g. `EXTERNAL_LISTEN_HOSTS`).

3. **Optionally fetch the latest compatible service versions:**
   ```bash
   ./update-versions.sh
   ```
   This updates the `ANY_SYNC_*_VERSION` variables in `.env` from the Anytype API.
   Skip this step to use the pinned versions already in `.env.example`.

4. **Start:**
   ```bash
   docker compose up -d
   # or: make start
   ```
   On first run this generates configs in `./etc/` and starts all services.

5. **Connect Anytype client:**
   Upload `./etc/client.yml` to the Anytype app as your self-hosted network config.
   See [Anytype docs](https://doc.anytype.io/anytype-docs/data-and-security/self-hosting#switching-between-networks).

## Configuration

Copy `.env.example` to `.env` and edit it directly. Common customizations:

```bash
# External IP(s) for clients outside localhost
EXTERNAL_LISTEN_HOSTS="1.2.3.4"

# Custom storage path (default: ./storage)
STORAGE_DIR="/mnt/data/any-sync"

# Per-daemon memory limit (default: 500M)
ANY_SYNC_DAEMONS_MEMORY_LIMIT=1G
```

To update service versions to the latest compatible set, run `./update-versions.sh`.

Full reference: [Configuration Wiki](../../wiki/Configuration).

## Quick Reference

```bash
make start      # Generate config and start all services
make stop       # Stop services (data preserved)
make restart    # Stop and start again
make logs       # Follow logs from all services
make pull       # Pull latest Docker images
make update     # pull + restart (rolling update)
make upgrade    # ⚠️  Full reset: removes containers and volumes, then starts fresh
make down       # Stop and remove containers (data preserved)
make clean      # ⚠️  docker system prune --all --volumes (removes all Docker data)
make cleanEtcStorage  # Remove generated ./etc/ configs and ./storage/
make migrate    # One-off migration of file storage from MinIO to Garage (see Upgrade Guide)
make cleanLegacyMinio # Remove the old MinIO data kept as a backup after the migration
```

## Documentation

Full guides are in the [Wiki](../../wiki):
- [Usage Guide](../../wiki/Usage)
- [Configuration](../../wiki/Configuration)
- [Upgrade Guide](../../wiki/Upgrade-Guide)
- [Anytype CLI](../../wiki/Anytype-cli)

## Contribution

Thank you for your desire to develop Anytype together!

❤️ This project and everyone involved in it is governed by the [Code of Conduct](https://github.com/anyproto/.github/blob/main/docs/CODE_OF_CONDUCT.md).

🧑‍💻 Check out our [contributing guide](https://github.com/anyproto/.github/blob/main/docs/CONTRIBUTING.md) to learn about asking questions, creating issues, or submitting pull requests.

🫢 For security findings, please email [security@anytype.io](mailto:security@anytype.io) and refer to our [security guide](https://github.com/anyproto/.github/blob/main/docs/SECURITY.md) for more information.

🤝 Follow us on [Github](https://github.com/anyproto) and join the [Contributors Community](https://github.com/orgs/anyproto/discussions).

---
Made by Any — a Swiss association 🇨🇭

Licensed under [MIT](./LICENSE.md).