Skip to content

rich0/quassel-core

 
 

Repository files navigation

quassel-core

Container image for the Quassel IRC core daemon (quasselcore).

Quassel is a distributed IRC client: this image runs only the core — the always-on server that maintains IRC connections. You connect with a separate Quassel desktop client; no GUI or client components are included in the image.

What is in the image

Included Not included
quasselcore daemon (Alpine quassel-core package) Quassel desktop/Qt client
Headless Qt/SQLite/PostgreSQL runtime libraries s6, openrc, or other process managers
openssl (cert bootstrap only) PUID/PGID mapping machinery

The image is intentionally minimal: Alpine 3.24, the distro quassel-core package (0.14.0), a small entrypoint script, and nothing else.

Image

  • Registry: registry.rich0.org/public/quassel-core (Zot, public anonymous pull)
  • Base: Alpine 3.24
  • Ports: 4242/tcp (client), 10113/tcp (ident, optional)
  • Config: /config

Pull

docker pull registry.rich0.org/public/quassel-core:latest
# or pin a version
docker pull registry.rich0.org/public/quassel-core:0.15.0

Public pulls do not require login.

How it works

  1. Container starts as user quassel (UID/GID 1000).
  2. entrypoint.sh checks for /config/quasselCert.pem. If absent, it generates a self-signed TLS certificate.
  3. quasselcore --configdir /config is exec'd as PID 1.
  4. State (SQLite database, config, certs) lives on the /config volume.

On first connection, use the Quassel desktop client to create an admin account and choose a storage backend (SQLite is typical for single-user setups).

Usage

docker run -d \
  --name quassel-core \
  -p 4242:4242 \
  -v ./config:/config \
  registry.rich0.org/public/quassel-core:latest

Ensure the host directory (or PVC) is writable by UID 1000:

mkdir -p ./config
chown 1000:1000 ./config

Environment variables

Variable Default Description
QUASSEL_CONFIG_DIR /config Directory passed to quasselcore --configdir
RUN_OPTS (empty) Additional arguments appended to the quasselcore command

RUN_OPTS supports extra daemon flags, for example:

docker run -d \
  --name quassel-core \
  -e RUN_OPTS="--ident-daemon --ident-port 10113" \
  -p 4242:4242 \
  -p 10113:10113 \
  -v ./config:/config \
  registry.rich0.org/public/quassel-core:latest

Ports

Port Description
4242 Quassel client protocol (primary)
10113 Ident protocol (optional; not started unless configured via RUN_OPTS)

Volumes

Path Description
/config SQLite database, quasselcore.conf, TLS certificate, and all persistent state

Kubernetes

Built for non-root deployment (runAsUser/fsGroup 1000). When migrating from a prior root-owned deployment, existing PVC data must be ownership-corrected before cutover. See k8s-flux-2#355.

Build and publish

docker login registry.rich0.org -u ci-push -p '<password>'
./build-push.sh

Or build locally:

docker build -t registry.rich0.org/public/quassel-core:latest .

Pins VERSION / QUASSEL_APK_VERSION and publishes to registry.rich0.org/public/quassel-core (:<version> and :latest).

Published tags: registry.rich0.org/public/quassel-core:0.15.0, :latest.

License

Quassel is licensed under GPL-2.0-or-later. See LICENSE.

Acknowledgements

This image was originally derived from linuxserver/docker-quassel-core. The current image is an independent rebuild and is not affiliated with or supported by LinuxServer.io.

About

Docker container of quassel-core IRC application.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages