From 68e970110b1875934e9febdfc245ff650496bfa8 Mon Sep 17 00:00:00 2001 From: Valentin Haudiquet Date: Sat, 7 Mar 2026 23:39:11 +0100 Subject: [PATCH] 4gaboards: deploy 4gaboards --- .github/dependabot.yml | 1 + .swarmcd/stacks.yaml | 7 +++ docker/tools/4gaboards/.env | 11 ++++ docker/tools/4gaboards/docker-compose.yml | 69 +++++++++++++++++++++++ 4 files changed, 88 insertions(+) create mode 100644 docker/tools/4gaboards/.env create mode 100644 docker/tools/4gaboards/docker-compose.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index d5a343f..4ffbaba 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -34,6 +34,7 @@ updates: - "/docker/production/buildpath" - "/docker/production/semeryfr" - "/docker/production/vhaudiquetfr" + - "/docker/tools/4gaboards" - "/docker/tools/excalidraw" - "/docker/tools/obsidian-livesync" - "/docker/tools/stirling-pdf" diff --git a/.swarmcd/stacks.yaml b/.swarmcd/stacks.yaml index 4ae6e49..aada40e 100644 --- a/.swarmcd/stacks.yaml +++ b/.swarmcd/stacks.yaml @@ -151,6 +151,13 @@ vhaudiquetfr: branch: main compose_file: docker/production/vhaudiquetfr/docker-compose.yml +4gaboards: + repo: homeprod + branch: main + compose_file: docker/tools/4gaboards/docker-compose.yml + sops_files: + - docker/tools/4gaboards/.env + excalidraw: repo: homeprod branch: main diff --git a/docker/tools/4gaboards/.env b/docker/tools/4gaboards/.env new file mode 100644 index 0000000..155c100 --- /dev/null +++ b/docker/tools/4gaboards/.env @@ -0,0 +1,11 @@ +POSTGRES_DB=ENC[AES256_GCM,data:HkulBjXQRsPv,iv:W6m0almuOSGPicGOsqP6V2xNwtEL3L8a0JN5wJdSEjE=,tag:AplsvdAxcv1K/UM0RPVeRA==,type:str] +POSTGRES_PASSWORD=ENC[AES256_GCM,data:0XcSzlIWvd8bMb7+ss8o21OE8EKGWg==,iv:G4FsgL43slujSyzCYwLnmEMj/WNMy8fxc/IbvUjNW/4=,tag:4Z/ZQO5wGb6BUS4Hq4KnUA==,type:str] +SECRET_KEY=ENC[AES256_GCM,data:HY1zLuoPkaPpH6q4+NHMiFvK+RJOBRdENEXkWMuJfA==,iv:djqfYnsU1eqIRkXYEbjdRvBLKWJxkUE6xvTqzpVGhCc=,tag:/BJWQCApI2eV/JGBLjDAhw==,type:str] +DATABASE_URL=ENC[AES256_GCM,data:TTopRJsbpxvSJhIQgKCkLdBvi2R/dj+YQmB7It8qNzuvRQpB11NoomEWuEyK7Jh8YusBdqVSXjbY,iv:TswrfGhVmMmQIm2H7LDwsVHQSOTC0DABGHvVDuF6FV8=,tag:9eWoxP0KFVk0c+n9jZLioA==,type:str] +sops_lastmodified=2026-03-07T22:38:58Z +sops_mac=ENC[AES256_GCM,data:Wt4K+UCwkcxA85lFP2Rd5Oqjlrvjj6aHkckMoLuy+jYm5UWfrc9+/MlK5wzuZwsLk86jziRqhtcYONhE84vmHtiTsRwpejBREKM2pU8XYnBm4KcgCaaIJKQhuEfFAGIPmJa0rNzVZTJK4JE23eOqoqE+yq2f/pv+N+4XgpbwH7E=,iv:X+tp6Y2i86oAJ+LEds0EuWODc16OBQ03uTRn/BdK11I=,tag:ipjxQUlj928qGJhIFxqasw==,type:str] +sops_pgp__list_0__map_created_at=2026-03-07T22:38:58Z +sops_pgp__list_0__map_enc=-----BEGIN PGP MESSAGE-----\n\nhQIMA7uy4qQr71wiARAAmMCSEb3UgVcDSiLmPDZRXJzvFfq8YWQzvxsuh8x1h1S+\nxLFJyIVcX33bfeyZdHo6LFBVs57b8GD0bLjbUSi/WROShPq8GZEsT7t9U6fnLdw/\nC5nb4+s6X/Lhi9Q5SX8Np3qP3t9wGsZ0U2GmojeN8OriSDJndCYkNm8ASt5l0NB8\n1IBYETfzRJIou8t3IpMHbTjh1rI1vvOH8kin4rCauf7UTTaIAtX0ickTEsdRWRLY\n+rveVkGEsqpdSfSFFs5uL6cEae03p6DZB9nwUhTmWfOIX5VJ403Botx5rhBdnQbE\naEOp4glP7M0kdRDvmqY4BTFK0j5PWMAjSOMd2zyqpORZCJqkrS66gg0Zaja73Imh\naD7NABb8rvJCwpKXRT5cJTVRWti4fpZ5JW7shDmGCSZcIjeiaqbnI6MOKO6Du/0k\noRUqvXJTocAfL/V9cGLorcLG0SZ0lvevZUNOU+ZIO1LwhFgqksOHI3UO8VeHn5FE\nAfSZfGTx6ivzZDQIoxsTCcES0eRXadI51ZofCjUWz5+UNVNAsMMJm41folQ2XKzb\n2q+nrhBUviJ32Ym9ND4qb2D52s+rmLSZzvC9hvRTmv9akOo3TpD3feZBUbLpqoAU\nTArPbm4dhQ82ULCpYiiQksHFF01uC3a+/MBHpMsiovKOCMbqu4i1I3aNLKksjzLS\nXgFWfBVXsp6FrEHYYPLIjguZvYQOzA0Q06j8zkToNGcdFkxctPr1es+6T+TKAWPQ\nT2FRlccx7tGQis4DGGfbuDszrELS4XbhpdOacKNHyD9243mW91dbvIIpDoGxwtI=\n=yP4a\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/4gaboards/docker-compose.yml b/docker/tools/4gaboards/docker-compose.yml new file mode 100644 index 0000000..4e67bac --- /dev/null +++ b/docker/tools/4gaboards/docker-compose.yml @@ -0,0 +1,69 @@ +services: + db: + image: postgres:16-alpine + restart: always + networks: + - boards-network + volumes: + - db-data:/var/lib/postgresql/data + env_file: .env + environment: + POSTGRES_INITDB_ARGS: '-A scram-sha-256' + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U postgres -d 4gaBoards'] + interval: 1s + timeout: 5s + retries: 50 + + 4gaBoards: + image: ghcr.io/rargames/4gaboards:latest + restart: always + networks: + - boards-network + volumes: + - user-avatars:/app/public/user-avatars + - project-background-images:/app/public/project-background-images + - attachments:/app/private/attachments + ports: + - 3000:1337 + env_file: .env + environment: + BASE_URL: https://gjam.vhaudiquet.fr + NODE_ENV: production + labels: + - "traefik.enable=true" + - "traefik.http.routers.4gaBoards.rule=Host(`gjam.vhaudiquet.fr`)" + depends_on: + db: + condition: service_healthy + +volumes: + user-avatars: + driver: local + driver_opts: + type: 'none' + o: 'bind' + device: '/app/4gaboards/user-avatars' + project-background-images: + driver: local + driver_opts: + type: 'none' + o: 'bind' + device: '/app/4gaboards/project-background-images' + attachments: + driver: local + driver_opts: + type: 'none' + o: 'bind' + device: '/app/4gaboards/attachments' + db-data: + driver: local + driver_opts: + type: 'none' + o: 'bind' + device: '/app/4gaboards/db-data' +networks: + boards-network: + proxy: + name: proxy + external: true