A Go implementation of the EteSync server with 100% API compatibility.
Fully compatible with all EteSync clients (web, iOS, Android, etesync-dav).
- π End-to-end encryption - Same security as original EteSync
- π± 100% Client Compatible - Works with all existing EteSync apps
- β‘ High Performance - Built with Go + Gin for maximum throughput
- π PostgreSQL - Production-grade database with GORM
- π Real-time Sync - WebSocket support with Redis pub/sub
- π³ Docker Ready - One-command deployment with multi-arch support
# Clone and configure
git clone https://github.com/jollySleeper/GoatSync.git
cd GoatSync
cp .env.example .env
# Edit .env: set ENCRYPTION_SECRET and DATABASE_URL password
# Start services
docker compose up -d
# Verify
curl http://localhost:3735/health
# {"status":"ok"}For CalDAV/CardDAV support (Thunderbird, Apple Calendar, etc.):
docker compose -f docker-compose-full.yml up -dSee .env.example for all options.
| Variable | Required | Default | Description |
|---|---|---|---|
DATABASE_URL |
Yes | - | PostgreSQL connection string |
ENCRYPTION_SECRET |
Yes | - | Encryption key (min 32 chars) |
PORT |
No | 3735 |
Server port |
REDIS_URL |
No | - | Redis for WebSocket sync |
DEBUG |
No | false |
Debug mode |
docker pull ghcr.io/jollysleeper/goatsync:latest
docker pull ghcr.io/jollysleeper/goatsync:0.1.2Platforms: linux/amd64, linux/arm64
| Document | Description |
|---|---|
| docs/DEPLOYMENT.md | Production deployment guide |
| docs/RUNNING.md | Running locally |
| docs/ARCHITECTURE.md | Technical details |
| docs/CHANGELOG.md | Version history |
Implements all EteSync API endpoints:
- Authentication (signup, login, logout)
- Collections (CRUD with stoken pagination)
- Items (batch, transaction, revisions)
- Members & Invitations (sharing)
- Chunks (binary data)
- WebSocket (real-time sync)
Same cryptographic protocols as EteSync:
- BLAKE2b-256 - Key derivation
- XSalsa20-Poly1305 - NaCl SecretBox encryption
- Ed25519 - Signature verification
- Fork the repository
- Create a feature branch
- Commit changes
- Open a Pull Request
This project is licensed under the MIT License - see LICENSE for details.