From a015576d52cae0c63fde4035ca8330773de98ec9 Mon Sep 17 00:00:00 2001 From: legonzaur Date: Wed, 16 Apr 2025 22:27:13 +0200 Subject: [PATCH] first version of working infra --- postgres.container | 14 ------- postgres.kube | 3 ++ postgres.volume | 1 - postgres.yml | 38 +++++++++++++++++++ synapse-configmap.yml | 34 +++++++++++++++++ synapse-data.volume | 1 - synapse-init.container | 13 ------- synapse-media.volume | 1 - synapse-uploads.volume | 1 - synapse.container | 15 -------- synapse.kube | 14 +++++++ synapse.network | 2 +- synapse.pod | 1 - synapse.yml | 86 ++++++++++++++++++++++++++++++++++++++++++ test.kube | 10 +++++ 15 files changed, 186 insertions(+), 48 deletions(-) delete mode 100644 postgres.container create mode 100644 postgres.kube delete mode 100644 postgres.volume create mode 100644 postgres.yml create mode 100644 synapse-configmap.yml delete mode 100644 synapse-data.volume delete mode 100644 synapse-init.container delete mode 100644 synapse-media.volume delete mode 100644 synapse-uploads.volume delete mode 100644 synapse.container create mode 100644 synapse.kube delete mode 100644 synapse.pod create mode 100644 synapse.yml create mode 100644 test.kube diff --git a/postgres.container b/postgres.container deleted file mode 100644 index 4ddd2aa..0000000 --- a/postgres.container +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=Docker - -[Container] -Image=docker.io/postgres:alpine -Pod=synapse.pod -Volume=postgres.volume:/var/lib/postgresql/data -Environment=POSTGRES_USER=synapse -Environment=POSTGRES_PASSWORD=changeme -Environment=POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C -Network=synapse.network - -[Service] -Restart=always \ No newline at end of file diff --git a/postgres.kube b/postgres.kube new file mode 100644 index 0000000..dc0d55a --- /dev/null +++ b/postgres.kube @@ -0,0 +1,3 @@ +[Kube] +Yaml=postgres.yml +Network=synapse.network \ No newline at end of file diff --git a/postgres.volume b/postgres.volume deleted file mode 100644 index 4fd6534..0000000 --- a/postgres.volume +++ /dev/null @@ -1 +0,0 @@ -[Volume] diff --git a/postgres.yml b/postgres.yml new file mode 100644 index 0000000..6abc726 --- /dev/null +++ b/postgres.yml @@ -0,0 +1,38 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: postgres-data + labels: + app: postgres +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi + +--- +apiVersion: v1 +kind: Pod +metadata: + name: postgres +spec: + containers: + - name: postgres + image: docker.io/postgres:17-alpine + volumeMounts: + - name: postgres-data-pvc + mountPath: /var/lib/postgresql/data + env: + - name: POSTGRES_PASSWORD + value: changeme + - name: POSTGRES_USER + value: synapse + - name: POSTGRES_DB + value: synapse + - name: POSTGRES_INITDB_ARGS + value: --encoding=UTF8 --locale=C + volumes: + - name: postgres-data-pvc + persistentVolumeClaim: + claimName: postgres-data diff --git a/synapse-configmap.yml b/synapse-configmap.yml new file mode 100644 index 0000000..25dd771 --- /dev/null +++ b/synapse-configmap.yml @@ -0,0 +1,34 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: synapse-config +data: + homeserver.yaml: | + server_name: "test.legonzaur.fr" + pid_file: /data/homeserver.pid + listeners: + - port: 8008 + tls: false + type: http + x_forwarded: true + resources: + - names: [client, federation] + compress: false + database: + name: psycopg2 + args: + user: synapse + password: changeme + dbname: synapse + host: postgres + cp_min: 5 + cp_max: 10 + log_config: "/data/test.legonzaur.fr.log.config" + media_store_path: /data/media_store + registration_shared_secret: "8bn6seIG;1#0p9d~Y~d17*~mehlG-@DDJ~W8Yg9r4B,77*D;Uy" + report_stats: true + macaroon_secret_key: "@.fx9y+rL_JSE0;7PPYrBuI&,sa;mXHLeFywLgWlDSg;3faNCx" + form_secret: "qu6DRGb.1H*Pe:tE4r+E~ZvND.UKiIusz~TwOMz,TLVUpX#9vi" + signing_key_path: "/data/test.legonzaur.fr.signing.key" + trusted_key_servers: + - server_name: "matrix.org" diff --git a/synapse-data.volume b/synapse-data.volume deleted file mode 100644 index 4fd6534..0000000 --- a/synapse-data.volume +++ /dev/null @@ -1 +0,0 @@ -[Volume] diff --git a/synapse-init.container b/synapse-init.container deleted file mode 100644 index 64d58eb..0000000 --- a/synapse-init.container +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Synapse init container - -[Container] -Image=docker.io/matrixdotorg/synapse:latest -Pod=synapse.pod -Volume=synapse-data.volume:/data -Environment=SYNAPSE_SERVER_NAME=test.legonzaur.fr -Environment=SYNAPSE_REPORT_STATS=no -Exec=generate - -[Service] -Type=oneshot \ No newline at end of file diff --git a/synapse-media.volume b/synapse-media.volume deleted file mode 100644 index 4fd6534..0000000 --- a/synapse-media.volume +++ /dev/null @@ -1 +0,0 @@ -[Volume] diff --git a/synapse-uploads.volume b/synapse-uploads.volume deleted file mode 100644 index 4fd6534..0000000 --- a/synapse-uploads.volume +++ /dev/null @@ -1 +0,0 @@ -[Volume] diff --git a/synapse.container b/synapse.container deleted file mode 100644 index 33b4876..0000000 --- a/synapse.container +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=Synapse - -[Container] -Image=docker.io/matrixdotorg/synapse:latest -Pod=synapse.pod -Volume=synapse-data.volume:/data -Volume=synapse-uploads.volume:/data/uploads -Volume=synapse-media.volume:/data/media -Environment=SYNAPSE_CONFIG_PATH=/data/homeserver.yaml -Network=synapse.network -PublishPort=8008:8008 - -[Service] -Restart=always \ No newline at end of file diff --git a/synapse.kube b/synapse.kube new file mode 100644 index 0000000..5e0ab17 --- /dev/null +++ b/synapse.kube @@ -0,0 +1,14 @@ +[Unit] +Requires=postgres.service +After=postgres.service + +[Kube] +Yaml=synapse.yml + +Network=synapse.network + +PublishPort=8008:8008 +ConfigMap=synapse-configmap.yml + +[Install] +WantedBy=default.target \ No newline at end of file diff --git a/synapse.network b/synapse.network index 264f70a..959176f 100644 --- a/synapse.network +++ b/synapse.network @@ -1 +1 @@ -[Network] +[Network] \ No newline at end of file diff --git a/synapse.pod b/synapse.pod deleted file mode 100644 index 66ae61b..0000000 --- a/synapse.pod +++ /dev/null @@ -1 +0,0 @@ -[Pod] diff --git a/synapse.yml b/synapse.yml new file mode 100644 index 0000000..fbe6751 --- /dev/null +++ b/synapse.yml @@ -0,0 +1,86 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: synapse-media + labels: + app: synapse +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: synapse-uploads + labels: + app: synapse +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: synapse-data + labels: + app: synapse +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi + +--- +apiVersion: v1 +kind: Pod +metadata: + name: synapse +spec: + initContainers: + - name: synapse-init + image: docker.io/matrixdotorg/synapse:latest + args: ["generate"] + volumeMounts: + - name: synapse-data-pvc + mountPath: /data + env: + - name: SYNAPSE_SERVER_NAME + value: test.legonzaur.fr + - name: SYNAPSE_REPORT_STATS + value: no + containers: + - name: synapse + image: docker.io/matrixdotorg/synapse:latest + volumeMounts: + - name: synapse-data-pvc + mountPath: /data + - name: synapse-uploads-pvc + mountPath: /data/uploads + - name: synapse-media-pvc + mountPath: /data/media + - name: synapse-config + readOnly: true + mountPath: /data/homeserver.yaml + subPath: homeserver.yaml + volumes: + - name: synapse-config + configMap: + name: synapse-config + - name: synapse-data-pvc + persistentVolumeClaim: + claimName: synapse-data + - name: synapse-uploads-pvc + persistentVolumeClaim: + claimName: synapse-uploads + - name: synapse-media-pvc + persistentVolumeClaim: + claimName: synapse-media diff --git a/test.kube b/test.kube new file mode 100644 index 0000000..25232f5 --- /dev/null +++ b/test.kube @@ -0,0 +1,10 @@ +[Unit] +Description=A kubernetes yaml based service +Before=local-fs.target + +[Kube] +Yaml=/home/legonzaur/.config/containers/systemd/synapse.kube + +[Install] +# Start by default on boot +WantedBy=multi-user.target default.target \ No newline at end of file