Hi all,
following my Huginn module, here is another hobby project: ARSnova packaged for NethServer 8.
What is ARSnova?
ARSnova is a modern, web-based approach to Audience Response Systems (ARS). It is the basis for the online service Particify and released under an open-source license; the project was initially started at the Technische Hochschule Mittelhessen.
In short: live quizzes, polls and Q&A for lectures, trainings, meetings or events. Participants join a room from their phone or laptop — no app, no account needed on their side.
End-user documentation (German): Benutzungshandbuch für Vortragende
Why self-host it?
- Your data stays on your server. Questions, answers and feedback never leave your infrastructure — relevant if you run sessions with employees, students or customers.
- No per-seat licensing. The open-source components run on your own NS8 node.
NS8 integration
ARSnova is a microservice stack, so this module works a bit differently from typical NS8 modules: instead of a single pod, it creates a dedicated rootless Podman network (arsnova) with built-in DNS, and each service runs as its own container joined to that network. Only the front nginx proxy is published to the host.
Containers (all official particify/* images, plus infrastructure): nginx front proxy, Angular web client, HTTP gateway, WebSocket gateway, backend core, auth service, comment service, formatting service, CouchDB as primary datastore, two PostgreSQL instances and RabbitMQ as STOMP message broker.
Traefik publishes everything on a single host name (with optional Let’s Encrypt and HTTP→HTTPS redirection) and forwards the WebSocket upgrade transparently.
Installation
Wiki page: ns8:applications:arsnova [NethServer & NethSecurity]
The easiest way is via the Software Center: add my repository as described on the Tebbiworld repository wiki page with this URL (see the NS8 manual for how to add software repositories):
https://raw.githubusercontent.com/tebbiworld/ns8-huginn/repomd/ns8/updates/
Alternatively via CLI on the NS8 cluster leader:
add-module ghcr.io/tebbiworld/arsnova:latest 1
Configure (replace the host name):
api-cli run module/arsnova1/configure-module --data '{
"host": "arsnova.example.org",
"lets_encrypt": true,
"http2https": true,
"admin_email": "you@example.org"
}'
Then open https://arsnova.example.org, register an account and verify it. The verification code is sent by e-mail via the cluster smarthost — note that ARSnova’s core only supports a plain SMTP relay (port 25, no authentication). If no usable relay is configured, the code is written to the core logs:
journalctl --user -u arsnova-core.service | grep -i "verification\|code"
Set admin_email to an already-registered user to grant it administrator rights.
One warning: ARSnova is resource hungry (Particify recommends 4 CPU / 8 GB RAM). On smaller nodes the Java services start slowly and may restart a few times before the stack settles.
Important disclaimer
This is a private hobby project, currently in alpha status, built for my own needs and shared as-is. No warranty, no guaranteed support, use at your own risk. It is an unofficial, community-built package, not affiliated with or endorsed by Particify or the ARSnova team; “ARSnova” and “Particify” are trademarks of their respective owners. The module pulls the upstream open-source components at runtime from Docker Hub (server components GPL-3.0-or-later, web client MIT, plus CouchDB, PostgreSQL, RabbitMQ, nginx under their respective licenses). The module’s own code is GPL-3.0-or-later.
Repo & documentation: GitHub - tebbiworld/ns8-arsnova: NethServer 8 module packaging ARSnova / Particify (live audience response system) · GitHub
Feedback and bug reports are welcome via GitHub issues, but please don’t expect enterprise-level maintenance.
Have fun with it!