From 3bf5e3ccfb999c5d3690e56cd935afed065b0fd6 Mon Sep 17 00:00:00 2001 From: Murat Aslan <78961478+murataslan1@users.noreply.github.com> Date: Mon, 8 Dec 2025 15:53:33 +0300 Subject: [PATCH 1/5] feat: add Soju IRC bouncer service template --- templates/compose/soju.yaml | 49 +++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 templates/compose/soju.yaml diff --git a/templates/compose/soju.yaml b/templates/compose/soju.yaml new file mode 100644 index 000000000..a1da14a86 --- /dev/null +++ b/templates/compose/soju.yaml @@ -0,0 +1,49 @@ +# documentation: https://soju.im/ +# slogan: A user-friendly IRC bouncer with a modern web interface +# category: communication +# tags: irc, bouncer, chat, messaging, relay +# logo: svgs/soju.svg +# port: 80 + +services: + soju: + image: codeberg.org/emersion/soju:latest + volumes: + - soju-db:/db + - soju-uploads:/uploads + - type: bind + source: ./soju/config + target: /soju-config + content: | + db sqlite3 /db/main.db + message-store db + file-upload fs /uploads/ + listen irc+insecure:// + listen http+insecure:// + listen unix+admin:// + networks: + default: + aliases: + - gamja-backend + healthcheck: + test: ["CMD-SHELL", "nc -z localhost 6667 || exit 1"] + interval: 30s + timeout: 10s + retries: 5 + + gamja: + image: codeberg.org/emersion/gamja:latest + environment: + - SERVICE_FQDN_GAMJA_80 + depends_on: + soju: + condition: service_healthy + healthcheck: + test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:80 || exit 1"] + interval: 30s + timeout: 10s + retries: 5 + +volumes: + soju-db: + soju-uploads: From a28890b258ddb75c6e9dc18efbafc8ccb700dc67 Mon Sep 17 00:00:00 2001 From: Murat Aslan <78961478+murataslan1@users.noreply.github.com> Date: Mon, 8 Dec 2025 15:53:45 +0300 Subject: [PATCH 2/5] feat: add Soju IRC bouncer logo --- svgs/soju.svg | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 svgs/soju.svg diff --git a/svgs/soju.svg b/svgs/soju.svg new file mode 100644 index 000000000..f05aeebee --- /dev/null +++ b/svgs/soju.svg @@ -0,0 +1,6 @@ + + + + + + From d6c5265556c22657b5e2203a7cf765c3cc56c0c4 Mon Sep 17 00:00:00 2001 From: Murat Aslan Date: Tue, 9 Dec 2025 00:16:20 +0300 Subject: [PATCH 3/5] fix: update soju config path and add WebSocket support - Fix config path to /etc/soju/config - Use explicit host:port bindings - Switch to WebSocket listener for Gamja compatibility - Add GAMJA_SERVER environment variable --- templates/compose/soju.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/templates/compose/soju.yaml b/templates/compose/soju.yaml index a1da14a86..ff9ae5228 100644 --- a/templates/compose/soju.yaml +++ b/templates/compose/soju.yaml @@ -13,14 +13,14 @@ services: - soju-uploads:/uploads - type: bind source: ./soju/config - target: /soju-config + target: /etc/soju/config content: | db sqlite3 /db/main.db message-store db file-upload fs /uploads/ - listen irc+insecure:// - listen http+insecure:// - listen unix+admin:// + listen irc+insecure://0.0.0.0:6667 + listen ws+insecure://0.0.0.0:80 + listen unix+admin:///run/soju/admin networks: default: aliases: @@ -35,6 +35,7 @@ services: image: codeberg.org/emersion/gamja:latest environment: - SERVICE_FQDN_GAMJA_80 + - GAMJA_SERVER=ws://soju:80 depends_on: soju: condition: service_healthy From 139db09fe0bdcbb372b668c6b8631b8011edb034 Mon Sep 17 00:00:00 2001 From: Murat Aslan Date: Tue, 9 Dec 2025 00:28:33 +0300 Subject: [PATCH 4/5] fix: correct soju config path and simplify template - Fix config path to /soju-config (not /etc/soju/config) - Remove unix+admin listener (causes bind error) - Remove health checks (nc/wget not available in containers) - Simplify depends_on configuration Tested locally with docker compose - both services start successfully --- templates/compose/soju.yaml | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/templates/compose/soju.yaml b/templates/compose/soju.yaml index ff9ae5228..ec746b3b7 100644 --- a/templates/compose/soju.yaml +++ b/templates/compose/soju.yaml @@ -13,37 +13,24 @@ services: - soju-uploads:/uploads - type: bind source: ./soju/config - target: /etc/soju/config + target: /soju-config content: | db sqlite3 /db/main.db message-store db file-upload fs /uploads/ listen irc+insecure://0.0.0.0:6667 listen ws+insecure://0.0.0.0:80 - listen unix+admin:///run/soju/admin networks: default: aliases: - gamja-backend - healthcheck: - test: ["CMD-SHELL", "nc -z localhost 6667 || exit 1"] - interval: 30s - timeout: 10s - retries: 5 gamja: image: codeberg.org/emersion/gamja:latest environment: - SERVICE_FQDN_GAMJA_80 - - GAMJA_SERVER=ws://soju:80 depends_on: - soju: - condition: service_healthy - healthcheck: - test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:80 || exit 1"] - interval: 30s - timeout: 10s - retries: 5 + - soju volumes: soju-db: From d2e2ca892ce2e78db2ff4b273a456698237641ad Mon Sep 17 00:00:00 2001 From: Murat Aslan Date: Tue, 9 Dec 2025 00:35:53 +0300 Subject: [PATCH 5/5] fix: add soju-run volume for admin socket - Add soju-run volume for /run/soju directory - Re-add unix+admin listener for sojuctl user management - Tested: user creation works with sojuctl --- templates/compose/soju.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/templates/compose/soju.yaml b/templates/compose/soju.yaml index ec746b3b7..808c61311 100644 --- a/templates/compose/soju.yaml +++ b/templates/compose/soju.yaml @@ -11,6 +11,7 @@ services: volumes: - soju-db:/db - soju-uploads:/uploads + - soju-run:/run/soju - type: bind source: ./soju/config target: /soju-config @@ -20,6 +21,7 @@ services: file-upload fs /uploads/ listen irc+insecure://0.0.0.0:6667 listen ws+insecure://0.0.0.0:80 + listen unix+admin:///run/soju/admin networks: default: aliases: @@ -35,3 +37,4 @@ services: volumes: soju-db: soju-uploads: + soju-run: