aboutsummaryrefslogtreecommitdiff
path: root/cluster/prod/app/matrix/build
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2022-08-25 01:02:16 +0200
committerQuentin Dufour <quentin@deuxfleurs.fr>2022-08-25 01:02:16 +0200
commite37c1f9057ed986ac50b86463a4dbe6bf5d77f02 (patch)
tree5f5757bde3cf8a694a70bd11afdcdf9b87806db8 /cluster/prod/app/matrix/build
parent3be2659aa19abfb7e676d33e9e7e1357c790a383 (diff)
downloadnixcfg-e37c1f9057ed986ac50b86463a4dbe6bf5d77f02.tar.gz
nixcfg-e37c1f9057ed986ac50b86463a4dbe6bf5d77f02.zip
Deploy Matrix
Diffstat (limited to 'cluster/prod/app/matrix/build')
-rw-r--r--cluster/prod/app/matrix/build/docker-compose.yml23
-rw-r--r--cluster/prod/app/matrix/build/matrix-synapse/Dockerfile52
-rwxr-xr-xcluster/prod/app/matrix/build/matrix-synapse/entrypoint.sh3
-rwxr-xr-xcluster/prod/app/matrix/build/matrix-synapse/matrix-s3-async16
-rw-r--r--cluster/prod/app/matrix/build/riotweb/Dockerfile13
5 files changed, 107 insertions, 0 deletions
diff --git a/cluster/prod/app/matrix/build/docker-compose.yml b/cluster/prod/app/matrix/build/docker-compose.yml
new file mode 100644
index 0000000..de56bdc
--- /dev/null
+++ b/cluster/prod/app/matrix/build/docker-compose.yml
@@ -0,0 +1,23 @@
+version: '3.4'
+services:
+ # Instant Messaging
+ riot:
+ build:
+ context: ./riotweb
+ args:
+ # https://github.com/vector-im/riot-web/releases
+ VERSION: 1.11.3
+ image: superboum/amd64_riotweb:v31
+
+ synapse:
+ build:
+ context: ./matrix-synapse
+ args:
+ # https://github.com/matrix-org/synapse/releases
+ VERSION: 1.65.0
+ # https://github.com/matrix-org/synapse-s3-storage-provider/commits/main
+ # Update with the latest commit on main each time you update the synapse version
+ # otherwise synapse may fail to launch due to incompatibility issues
+ # see this issue for an example: https://github.com/matrix-org/synapse-s3-storage-provider/issues/64
+ S3_VERSION: ffd3fa477321608e57d27644197e721965e0e858
+ image: superboum/amd64_synapse:v54
diff --git a/cluster/prod/app/matrix/build/matrix-synapse/Dockerfile b/cluster/prod/app/matrix/build/matrix-synapse/Dockerfile
new file mode 100644
index 0000000..d410779
--- /dev/null
+++ b/cluster/prod/app/matrix/build/matrix-synapse/Dockerfile
@@ -0,0 +1,52 @@
+FROM amd64/debian:buster as builder
+
+ARG VERSION
+ARG S3_VERSION
+RUN apt-get update && \
+ apt-get -qq -y full-upgrade && \
+ apt-get install -y \
+ python3 \
+ python3-pip \
+ python3-dev \
+ python3-setuptools \
+ libffi-dev \
+ build-essential \
+ libssl-dev \
+ libjpeg-dev \
+ libjpeg62-turbo-dev \
+ libxml2-dev \
+ zlib1g-dev \
+ # postgresql-dev \
+ libpq-dev \
+ virtualenv \
+ libxslt1-dev \
+ git && \
+ virtualenv /root/matrix-env -p /usr/bin/python3 && \
+ . /root/matrix-env/bin/activate && \
+ pip3 install \
+ https://github.com/matrix-org/synapse/archive/v${VERSION}.tar.gz#egg=matrix-synapse[matrix-synapse-ldap3,postgres,resources.consent,saml2,url_preview] && \
+ pip3 install \
+ git+https://github.com/matrix-org/synapse-s3-storage-provider.git@${S3_VERSION}
+
+FROM amd64/debian:buster
+
+RUN apt-get update && \
+ apt-get -qq -y full-upgrade && \
+ apt-get install -y \
+ python3 \
+ python3-distutils \
+ libffi6 \
+ libjpeg62-turbo \
+ libssl1.1 \
+ libxslt1.1 \
+ libpq5 \
+ zlib1g \
+ libjemalloc2 \
+ ca-certificates
+
+ENV LD_PRELOAD /usr/lib/x86_64-linux-gnu/libjemalloc.so.2
+COPY --from=builder /root/matrix-env /root/matrix-env
+COPY matrix-s3-async /usr/local/bin/matrix-s3-async
+COPY entrypoint.sh /usr/local/bin/entrypoint
+
+ENTRYPOINT ["/usr/local/bin/entrypoint"]
diff --git a/cluster/prod/app/matrix/build/matrix-synapse/entrypoint.sh b/cluster/prod/app/matrix/build/matrix-synapse/entrypoint.sh
new file mode 100755
index 0000000..b93a702
--- /dev/null
+++ b/cluster/prod/app/matrix/build/matrix-synapse/entrypoint.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+. /root/matrix-env/bin/activate
+exec "$@"
diff --git a/cluster/prod/app/matrix/build/matrix-synapse/matrix-s3-async b/cluster/prod/app/matrix/build/matrix-synapse/matrix-s3-async
new file mode 100755
index 0000000..e435144
--- /dev/null
+++ b/cluster/prod/app/matrix/build/matrix-synapse/matrix-s3-async
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+cat > database.yaml <<EOF
+user: $PG_USER
+password: $PG_PASS
+database: $PG_DB
+host: $PG_HOST
+port: $PG_PORT
+EOF
+
+while true; do
+ /root/matrix-env/bin/s3_media_upload update-db 0d
+ /root/matrix-env/bin/s3_media_upload --no-progress check-deleted /var/lib/matrix-synapse/media
+ /root/matrix-env/bin/s3_media_upload --no-progress upload /var/lib/matrix-synapse/media matrix --delete --endpoint-url https://garage.deuxfleurs.fr
+ sleep 600
+done
diff --git a/cluster/prod/app/matrix/build/riotweb/Dockerfile b/cluster/prod/app/matrix/build/riotweb/Dockerfile
new file mode 100644
index 0000000..c768e87
--- /dev/null
+++ b/cluster/prod/app/matrix/build/riotweb/Dockerfile
@@ -0,0 +1,13 @@
+FROM amd64/debian:buster as builder
+
+ARG VERSION
+WORKDIR /root
+
+RUN apt-get update && \
+ apt-get install -y wget && \
+ wget https://github.com/vector-im/element-web/releases/download/v${VERSION}/element-v${VERSION}.tar.gz && \
+ tar xf element-v${VERSION}.tar.gz && \
+ mv element-v${VERSION}/ riot/
+
+FROM superboum/amd64_webserver:v3
+COPY --from=builder /root/riot /srv/http