Tôi đang cố gắng thiết lập máy chủ Matrix Synapse bằng Docker và proxy ngược Traefik v2.
Thiết lập của tôi hoạt động nếu tôi xác định một mạng duy nhất trong tệp docker-compose của mình và có Traefik, Synapse và postgres đều sử dụng mạng đó.
Tuy nhiên, dựa trên những gì tôi đã học được về Docker cho đến nay, tôi nên đặt postgres trên một mạng riêng (ủng hộ
) so với Traefik (trang web
). Synapse sau đó sẽ có trên cả hai mạng. Tuy nhiên, khi tôi làm như vậy, tôi không thể kết nối với Synapse nữa. Nó lần ra cuối cùng nói Cổng Time-out
.
Như thể Synapse chỉ lắng nghe trên phụ trợ
mạng.
phiên bản: '3.2'
dịch vụ:
khớp thần kinh:
container_name: khớp thần kinh
tên máy chủ: ${MATRIX_HOSTNAME}
hình ảnh: docker.io/matrixdotorg/synapse:latest
khởi động lại: trừ khi dừng
môi trường:
- SYNAPSE_SERVER_NAME=${MATRIX_HOSTNAME}
- SYNAPSE_REPORT_STATS=có
- SYNAPSE_NO_TLS=1
- SYNAPSE_ENABLE_REGISTRATION=không
- SYNAPSE_LOG_LEVEL=GỠ LỖI
- SYNAPSE_REGISTRATION_SHARED_SECRET=${REG_SHARED_SECRET}
- POSTGRES_DB=khớp thần kinh
- POSTGRES_HOST=db
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
# lộ ra:
# - "8008"
khối lượng:
- loại: ràng buộc
nguồn: /opt/services/synapse
mục tiêu: /dữ liệu
phụ thuộc:
- db
mạng:
- mạng
- phụ trợ
nhãn:
- "traefik.enable=true"
- "traefik.http.routers.synapse.rule=Host(`${MATRIX_HOSTNAME}`)"
- "traefik.http.services.synapse.loadbalancer.server.port=8008"
- "traefik.http.routers.synapse.entrypoints=websecure"
- "traefik.http.routers.synapse.tls.certresolver=myresolver"
- "traefik.docker.network=web"
đb:
hình ảnh: docker.io/postgres:10-alpine
container_name: "synapse_db"
khởi động lại: trừ khi dừng
môi trường:
- POSTGRES_DB=khớp thần kinh
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
khối lượng:
- /opt/services/synapse_db:/var/lib/postgresql/data
mạng:
- phụ trợ
nhãn:
- "traefik.enable=false"
traefik:
hình ảnh: traefik:v2.5
container_name: "traefik"
chỉ huy:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.network=web"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
- "--certertresolvers.myresolver.acme.email=${CERTBOT_EMAIL}"
- "--certertresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
cổng:
# Bộ định tuyến chuyển tiếp 443 trên WAN thành 8443 trên máy chủ nên chúng tôi không cần quyền root
- "8443:443"
- "8080:8080"
mạng:
- mạng
khối lượng:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./letsencrypt:/letsencrypt"
khởi động lại:
trừ khi dừng lại
mạng:
web:
phụ trợ:
Và trong Synapse máy chủ nhà.yaml
tệp, có một phần có thể cho phép tôi liên kết với một giao diện cụ thể, nhưng tôi chưa thực hiện bất kỳ thay đổi nào nên nó sẽ nghe trên tất cả các giao diện theo mặc định:
người nghe:
- cổng: 8008
tls: sai
loại: http
x_forwarded: đúng
tài nguyên:
# - tên: [khách hàng, liên đoàn]
- tên: [khách hàng]
nén: sai
Nếu tôi chuyển xuống một thiết lập mạng duy nhất thì nó hoạt động. Tôi đang làm gì sai với hai thiết lập mạng?