TheDocumentation Index
Fetch the complete documentation index at: https://docs.allthingslinux.org/llms.txt
Use this file to discover all available pages before exploring further.
data/ directory holds all persistent state for the atl.chat stack — IRC databases, XMPP stores, TLS certificates, and client data — created by just init and bind-mounted into containers via Docker Compose volumes.
How data/ is created
Runningjust init (or just dev, which calls init first) executes scripts/init.sh. This script creates every directory that Docker Compose expects to bind-mount. The directory is git-ignored — it exists only on the host machine and is never committed.
If you see permission errors on startup, re-run just init. The script sets ownership to your current UID/GID and ensures directories are writable by the container processes.
Directory structure
The canonical layout on disk:Volume mount reference
Every bind-mount is defined in the compose fragments underinfra/compose/. Paths are relative to the repository root.
| Host path | Container mount | Service | Compose file |
|---|---|---|---|
data/irc/data | /home/unrealircd/unrealircd/data | UnrealIRCd | irc.yaml |
data/certs | /home/unrealircd/unrealircd/certs (ro) | UnrealIRCd | irc.yaml |
data/atheme/data | /usr/local/atheme/data | Atheme | irc.yaml |
data/irc/webpanel-data | /var/www/html/unrealircd-webpanel/data | WebPanel | irc.yaml |
data/xmpp/data | /var/lib/prosody/data | Prosody | xmpp.yaml |
data/xmpp/uploads | /var/lib/prosody/uploads | Prosody | xmpp.yaml |
data/certs | /etc/prosody/certs | Prosody | xmpp.yaml |
data/certs | /etc/nginx/certs (ro) | XMPP Nginx | xmpp.yaml |
data/thelounge | /var/opt/thelounge | The Lounge | thelounge.yaml |
data/obsidianirc | (none) | ObsidianIRC | obsidianirc.yaml |
data/certs | /data | Cert Manager | cert-manager.yaml |
Note: The Bridge service does not have adata/volume. Its configuration (apps/bridge/config.yaml) is bind-mounted read-only from the source tree, not fromdata/.
Shared certificate store
Thedata/certs/ directory is shared across multiple services. In development, scripts/init.sh generates self-signed certificates under data/certs/live/<domain>/. In production, the cert-manager container (Lego) writes Let’s Encrypt certificates to the same location.
Services that consume certificates:
- UnrealIRCd — mounts
data/certsread-only at/home/unrealircd/unrealircd/certs. Cert paths are configured viaIRC_SSL_CERT_PATHandIRC_SSL_KEY_PATHenvironment variables, defaulting tocerts/live/<IRC_DOMAIN>/fullchain.pemandprivkey.pem. - Prosody — mounts
data/certsat/etc/prosody/certs. The Prosody config references certs by domain under this path. - XMPP Nginx — mounts
data/certsread-only at/etc/nginx/certsfor HTTPS termination on port 5281. - Cert Manager (Lego) — mounts
data/certsat/data(read-write). Lego writes renewed certificates here, and other services pick them up on reload.
Permissions
scripts/init.sh sets ownership of the entire data/ tree to your current UID/GID (id -u:id -g). Directories are set to 755. This matches the PUID/PGID environment variables used by the UnrealIRCd and Atheme containers.
If you encounter permission errors after pulling updates or switching users, re-run:
Obsolete paths
Older documentation and setups may reference paths that no longer exist. If you find any of these directories, you can safely remove them:| Obsolete path | Current equivalent |
|---|---|
data/unrealircd/ | data/irc/data/ |
data/letsencrypt/ | data/certs/ |
data/atheme/atheme.db | data/atheme/data/services.db |
logs/atheme/ | Removed — logs go to stdout (Docker) |
logs/atl-irc-server/ | Removed — logs go to stdout (Docker) |
data/irc/logs/ | Removed — logs go to stdout (Docker) |
data/atheme/logs/ | Removed — logs go to stdout (Docker) |
data/xmpp/logs/ | Removed — logs go to stdout (Docker) |
data/docs/ | Not used — remove if present |
Related pages
- Architecture Overview — system diagram, compose structure, design decisions
- Networking — port registry, DNS zones, firewall rules
- Backups — per-service backup and restore procedures
- SSL/TLS — certificate management and renewal