67 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			YAML
		
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			YAML
		
	
	
| # This compose file is compatible with Compose itself, it might need some
 | |
| # adjustments to run properly with stack.
 | |
| 
 | |
| version: '3'
 | |
| 
 | |
| services:
 | |
| 
 | |
|   synapse:
 | |
|     build:
 | |
|         context: ../..
 | |
|         dockerfile: docker/Dockerfile
 | |
|     image: docker.io/matrixdotorg/synapse:latest
 | |
|     # Since synapse does not retry to connect to the database, restart upon
 | |
|     # failure
 | |
|     restart: unless-stopped
 | |
|     # See the readme for a full documentation of the environment settings
 | |
|     # NOTE: You must edit homeserver.yaml to use postgres, it defaults to sqlite
 | |
|     environment:
 | |
|       - SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
 | |
|     volumes:
 | |
|       # You may either store all the files in a local folder
 | |
|       - ./files:/data
 | |
|       # .. or you may split this between different storage points
 | |
|       # - ./files:/data
 | |
|       # - /path/to/ssd:/data/uploads
 | |
|       # - /path/to/large_hdd:/data/media
 | |
|     depends_on:
 | |
|       - db
 | |
|     # In order to expose Synapse, remove one of the following, you might for
 | |
|     # instance expose the TLS port directly:
 | |
|     ports:
 | |
|       - 8448:8448/tcp
 | |
|     # ... or use a reverse proxy, here is an example for traefik:
 | |
|     labels:
 | |
|       # The following lines are valid for Traefik version 1.x:
 | |
|       - traefik.enable=true
 | |
|       - traefik.frontend.rule=Host:my.matrix.Host
 | |
|       - traefik.port=8008
 | |
|       # Alternatively, for Traefik version 2.0:
 | |
|       - traefik.enable=true
 | |
|       - traefik.http.routers.http-synapse.entryPoints=http
 | |
|       - traefik.http.routers.http-synapse.rule=Host(`my.matrix.host`)
 | |
|       - traefik.http.middlewares.https_redirect.redirectscheme.scheme=https
 | |
|       - traefik.http.middlewares.https_redirect.redirectscheme.permanent=true
 | |
|       - traefik.http.routers.http-synapse.middlewares=https_redirect
 | |
|       - traefik.http.routers.https-synapse.entryPoints=https
 | |
|       - traefik.http.routers.https-synapse.rule=Host(`my.matrix.host`)
 | |
|       - traefik.http.routers.https-synapse.service=synapse
 | |
|       - traefik.http.routers.https-synapse.tls=true
 | |
|       - traefik.http.services.synapse.loadbalancer.server.port=8008
 | |
|       - traefik.http.routers.https-synapse.tls.certResolver=le-ssl
 | |
| 
 | |
|   db:
 | |
|     image: docker.io/postgres:12-alpine
 | |
|     # Change that password, of course!
 | |
|     environment:
 | |
|       - POSTGRES_USER=synapse
 | |
|       - POSTGRES_PASSWORD=changeme
 | |
|       # ensure the database gets created correctly
 | |
|       # https://matrix-org.github.io/synapse/latest/postgres.html#set-up-database
 | |
|       - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C
 | |
|     volumes:
 | |
|       # You may store the database tables in a local folder..
 | |
|       - ./schemas:/var/lib/postgresql/data
 | |
|       # .. or store them on some high performance storage for better results
 | |
|       # - /path/to/ssd/storage:/var/lib/postgresql/data
 |