- Shell 59.5%
- YAML 25.2%
- JSON 14.9%
- SQL 0.4%
| caddy | ||
| dev_rustfs | ||
| document_server | ||
| nextcloud | ||
| nextcloud_hpb | ||
| nextcloud_push | ||
| postgres | ||
| stalwart | ||
| valkey | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| check.py | ||
| compose.dev.yml | ||
| compose.yml | ||
| ensure_env.sh | ||
| ensure_env_dev.sh | ||
| LICENSE.txt | ||
| README.md | ||
| upgrade.sh | ||
Synapse
Synapse aims to provide an integrated groupware and e-mail communication solution for businesses, by combining and integrating Nextcloud and Stalwart Mail Server.
Stack 🥞
- Groupware: Nextcloud
- Email: Stalwart
- Proxy: Caddy
- Database: PostgreSQL
- Cache: Valkey
Requirements
- OS: Linux or macOS. Synapse is used, developed and known to work on Debian 13 and macOS 26.
- Docker
- Docker Compose 5.3.0 or higher (with support for init containers)
Deployment
Copy .env.example to .env and set the variables accordingly. Run ensure_env.sh to validate your settings and generate secure values for any missing secrets, then start the containers.
./ensure_env.sh
docker compose --profile=document_server,backup up -d
To upgrade, first pull the latest version of the repository, then run upgrade.sh to pull and restart the containers.
Development setup
It is required to set up the following hostnames in your /etc/hosts file by running:
echo "" >> /etc/hosts
echo "127.0.0.1 synapse.test" >> /etc/hosts
echo "127.0.0.1 nextcloud.synapse.test" >> /etc/hosts
echo "127.0.0.1 stalwart.synapse.test" >> /etc/hosts
After cloning the repository, set up the development environment by running the following.
./ensure_env_dev.sh
docker compose --profile=document_server up -d
If you wish to override any variable, create a .env.local file and set the variables you want to override before running ensure_env_dev.sh. This makes the .env file is disposable: when you wish to modify the environment, you can simply change the .env.local file, delete the .env file and run ensure_env_dev.sh again.
If you want to start over, the following can be executed in order to remove all containers and data. Then run the above commands again to spin up a fresh environment again.
docker compose --profile=document_server down -v
rm -rf .env {nextcloud,stalwart,postgres,valkey,dev_rustfs}/data stalwart/etc
If COMPOSE_PROFILES is not set, you might run into errors like service "nextcloud" depends on undefined service "nextcloud_push": invalid compose project.
About
Synapse is developed at Smart Yellow and licensed under the AGPLv3. Feel free to contribute or drop us a line!