From 380548d67cb53b3513364a6c56193a86b76b94a2 Mon Sep 17 00:00:00 2001 From: Valentin Haudiquet Date: Thu, 16 Oct 2025 19:32:52 +0200 Subject: [PATCH] manyfold: deploy manyfold --- .github/dependabot.yml | 1 + .swarmcd/stacks.yaml | 7 +++ docker/tools/manyfold/.env | 19 +++++++ docker/tools/manyfold/docker-compose.yml | 63 ++++++++++++++++++++++++ 4 files changed, 90 insertions(+) create mode 100644 docker/tools/manyfold/.env create mode 100644 docker/tools/manyfold/docker-compose.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index eee7294..3199cce 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -36,6 +36,7 @@ updates: - "/docker/production/semeryfr" - "/docker/production/vhaudiquetfr" - "/docker/tools/excalidraw" + - "/docker/tools/manyfold" - "/docker/tools/notesnook" - "/docker/tools/stirling-pdf" - package-ecosystem: "helm" diff --git a/.swarmcd/stacks.yaml b/.swarmcd/stacks.yaml index 812562b..5d342e6 100644 --- a/.swarmcd/stacks.yaml +++ b/.swarmcd/stacks.yaml @@ -163,6 +163,13 @@ excalidraw: branch: main compose_file: docker/tools/excalidraw/docker-compose.yml +manyfold: + repo: homeprod + branch: main + compose_file: docker/tools/manyfold/docker-compose.yml + sops_files: + - docker/tools/manyfold/.env + notesnook: repo: homeprod branch: main diff --git a/docker/tools/manyfold/.env b/docker/tools/manyfold/.env new file mode 100644 index 0000000..4597260 --- /dev/null +++ b/docker/tools/manyfold/.env @@ -0,0 +1,19 @@ +DATABASE_ADAPTER=ENC[AES256_GCM,data:PJuMjoKyM0hxHA==,iv:hT/p+xZ6wwfVsbL4Elrq2IvGb9MU2AyJMhLxm0SPupE=,tag:nbzAGpuQoyToVcZiWZybfw==,type:str] +DATABASE_HOST=ENC[AES256_GCM,data:oNYghEn1jYYbjC5zgRqI,iv:P19/tF7gzLcyril3HOtr3MFpCn/3qZxcraFXgyUcq6Y=,tag:gOLROihjIjKdyat6ppgntw==,type:str] +DATABASE_PORT=ENC[AES256_GCM,data:IET/mQ==,iv:CU4uF8q6T1sbDW4yBOKU4Vs4eBwkpJ+dbR1JMeTvqUI=,tag:Ncej8WzpeT9IhB0krxZ1Mw==,type:str] +DATABASE_NAME=ENC[AES256_GCM,data:SSKa38edPIA=,iv:E9kL2Hw8AuY4ypRWg1OIkQSvL5/SZjx7FBJTcn2n0Uw=,tag:ER/1vmnfS39DLpzKGR3+og==,type:str] +DATABASE_USER=ENC[AES256_GCM,data:xYS+sbRoFzM=,iv:KPjUgfAidbBUS8ly/84rUW64ZD5p1ez4J1kJt39SMAs=,tag:Sc82bcznZaVcAzTtshErTg==,type:str] +DATABASE_PASSWORD=ENC[AES256_GCM,data:GPMkoIKLLfi5+RzgCjA=,iv:9GJ0cMokC9gAIBX21b/kesdLjAxWSUQwskavUfjFFz4=,tag:wNZkwDHf0hhwdSAFYATfqQ==,type:str] +SECRET_KEY_BASE=ENC[AES256_GCM,data:vPqEU0pldvqegC8Fjw234LwyMwvoyhcpffTAh4RTFWx072K/TYItFdj7n1UU+dOUnQ==,iv:jSW67q11S7djOMkhltAIBVlx8g8vjLC8LeOG1uulAus=,tag:CXl7GIVY94O4sJIlY0VnWw==,type:str] +REDIS_URL=ENC[AES256_GCM,data:bW1M7weT2RuQJdPznK1z8lrbxQpKbDM0iB/J,iv:ecZ+7A7RIVBpsAnyALhcWU3p/I6r/C7iJ2Rvelanv80=,tag:WXb7jdcwr+O9PyUoUGZQNg==,type:str] +PUID=ENC[AES256_GCM,data:BzTfvg==,iv:jKvoXROsJfla5ptKg2qq90SKtOhM//IYn2H1Izzgpds=,tag:IV2wOeerVIYN4IEmAmtwuQ==,type:str] +PGID=ENC[AES256_GCM,data:xKNHbw==,iv:ik+oSxuvRytYNLCIQR4RhNT6G4E/+W7r3SR2PBfUQzw=,tag:TSjAJ+OEnPTZDD+AfH7yZQ==,type:str] +POSTGRES_USER=ENC[AES256_GCM,data:9+B20gqaEMI=,iv:4Ocbw3fRKv+nyivU1Aa1jNy6v0sEcR45ASa5mlBjsOk=,tag:Lg9a7L+vf8ClpsfiD1nmoQ==,type:str] +POSTGRES_PASSWORD=ENC[AES256_GCM,data:gEKkaRexkkSWK1yfvcQ=,iv:x/b1nr+sZpXAEQntDvzHM1LKwGqYUXPywKs2JBokt9w=,tag:Ai0HASbOVBE/ofntQ5BaOA==,type:str] +sops_lastmodified=2025-10-16T20:21:31Z +sops_mac=ENC[AES256_GCM,data:o/wX4kifILqeHX7y7G7j94rKLI/VODJzz2jOT7vz9UChepq70Ma9BGZ1ytSEllLT20FG09CfvRkqStBXGXdvTBWXU5J4DmBiuYlFxqilerbeHOZNU6RTIGc5daz753AkSi7NxyOKKPFVq4NCyGJqTEZYg8rK0P7Zs+tWpJaLr4k=,iv:TDRc/KxsObV7Vfi7Ne4Ez31IGq3ARdWhjnwFZBqV7Zk=,tag:+4g8nm7xencviH1AIam+uA==,type:str] +sops_pgp__list_0__map_created_at=2025-10-16T20:21:31Z +sops_pgp__list_0__map_enc=-----BEGIN PGP MESSAGE-----\n\nhQIMA7uy4qQr71wiAQ/+OieR02RMtGjYZXemeiA8dqWjdFrzTDTUtGE/Sg5/zpx7\nVjE/o04wWO/Bl7vXDziZCseKFy6uMwUg6ecVRQ8S7/E3VNDc55zHOK/oBK8Kmtdt\nDTfayP2ZVdGxVAiGHJ0TO6XDo0OgFp9EGWCMPdHIFLIFdJBDKFoLuiev+d28vlHC\na1pdXuADHLnFD/JiJqFemr7fGl1vPtZxDxItKgWN/tN1H+zzZZbt9jcaVEELIT7E\nl8SlGktzddi+7o8kXvFxbm+1Eg1sjHyvnG1pMLsRYgTTjoIXXZNqwYa8kvZo3kpD\nOv9JYRUSYa0YK/5Ee0EGFrD5HBcG1pd6McUt8GZpITLT1nbYuZ2uTT0+hqz9vbQL\nabk/+IqWfy50fkNwjuxxW33os0qbPknfggj1cQ92Ain6xXQN2/uMX5lZfcf7ssLY\nHVVwmjWRGDrgcn8ODdnjz9ZF2/spXJ8lcRXmETjNcaR13GgdRzFryU2Un1ijbM+r\nE7mFGUdyBr+hLWT5RWHe8Kl1SZxCknnH1XJXmxVtZ58RWoqNqqlTRUhfel1Ojn/a\nmIIoIU+QCkXtGfXaTe9PDg8wMkiQf16ClFzbNJatg/fB8TnWpFQGmHnhwbZ6KMN4\ntNzg4vGrKAxmXLYb7TDRmUfydK5lFXemZRNrO6yQcDTNCNzId8XoJ32hYnVD0DfS\nXgEbBjlutqv2jcH4pEepAu0PcAPJkh468qYAUwzn3MYstInlpSBGrfS+9kD0OQ2j\nWojiiHs1EdDiBgfSTwz13OfmTeC/nzTrV2DO3YDV4lY+PdJ40u5KSlS4P7HTIZY=\n=tB+6\n-----END PGP MESSAGE----- +sops_pgp__list_0__map_fp=DC6910268E657FF70BA7EC289974494E76938DDC +sops_unencrypted_suffix=_unencrypted +sops_version=3.10.2 diff --git a/docker/tools/manyfold/docker-compose.yml b/docker/tools/manyfold/docker-compose.yml new file mode 100644 index 0000000..7f0294c --- /dev/null +++ b/docker/tools/manyfold/docker-compose.yml @@ -0,0 +1,63 @@ +services: + manyfold: + image: ghcr.io/manyfold3d/manyfold:latest + ports: + - "3214" + volumes: + - models:/models + env_file: .env + restart: unless-stopped + depends_on: + - postgres-server + - redis-server + networks: + - manyfold + - proxy + labels: + - "traefik.enable=true" + - "traefik.http.routers.manyfold.rule=Host(`manyfold.lan`)" + - "traefik.http.services.manyfold.loadbalancer.server.port=3214" + security_opt: + - no-new-privileges:true + cap_drop: + - ALL + cap_add: + - CHOWN + - DAC_OVERRIDE + - SETUID + - SETGID + + postgres-server: + image: postgres:15 + volumes: + - db_data:/var/lib/postgresql/data + env_file: .env + restart: unless-stopped + networks: + - manyfold + + redis-server: + image: redis:7 + restart: unless-stopped + networks: + - manyfold + +volumes: + db_data: + driver: local + driver_opts: + type: 'none' + o: 'bind' + device: '/app/manyfold/db_data' + models: + driver: local + driver_opts: + type: 'none' + o: 'bind' + device: '/app/manyfold/models' + +networks: + manyfold: + proxy: + name: proxy + external: true