casjay 614f2305c5
Some checks failed
release-tag / release-image (push) Failing after 24m19s
🔧 Update configuration files 🔧
Dockerfile
.env.scripts
README.md
rootfs/root/docker/setup/05-custom.sh
rootfs/usr/local/bin/blueonyx-env-config
2026-02-02 17:12:26 -05:00
2025-02-04 09:28:22 -05:00
2026-02-02 17:12:26 -05:00
🦈🏠🐜 Initial Commit 🐜🦈🏠
2024-09-06 12:50:38 -04:00
2026-02-02 17:12:26 -05:00
2025-09-16 19:36:48 -04:00
2025-11-23 08:47:16 -05:00
2026-02-02 17:12:26 -05:00
2025-09-05 13:35:06 -04:00
🦈🏠🐜 Initial Commit 🐜🦈🏠
2024-09-06 12:50:38 -04:00
2026-02-02 17:12:26 -05:00

👋 Welcome to blueonyx 🚀

BlueOnyx 5212R - Full-featured web hosting control panel for AlmaLinux 10

Note: BlueOnyx requires systemd and privileged mode to run properly.

Features

  • Web Hosting - Apache with mod_php and virtual host management
  • Email Server - Postfix (satellite mode support) + Dovecot (IMAP/POP3)
  • DNS Server - BIND with zone management
  • FTP Server - ProFTPD with virtual users
  • Database - MariaDB 10.11 with phpMyAdmin
  • Key-Value Store - Valkey (Redis-compatible) for caching
  • SSL/TLS - Let's Encrypt support via Certbot with auto-renewal
  • User Management - Multi-user and reseller support
  • 2FA Authentication - Two-factor authentication support
  • CalDAV/CardDAV - Calendar and contact synchronization
  • Web GUI - Full-featured control panel on ports 444 (HTTPS) / 81 (HTTP)
  • 40+ ENV Variables - Extensive configuration via environment variables

Requirements

  • Platform: linux/amd64 only (BlueOnyx RPM packages)
  • Docker: Version 20.10+ with privileged mode support
  • CPU: x86_64 architecture
  • Memory: At least 2GB RAM recommended
  • Storage: Minimum 5GB for container + data
  • Persistent Volumes: Required for /data and /config

Quick Start

Using docker run

docker run -d \
  --name blueonyx \
  --hostname blueonyx.local \
  --privileged \
  --cgroupns=host \
  -v /sys/fs/cgroup:/sys/fs/cgroup:rw \
  -v blueonyx-data:/data \
  -v blueonyx-config:/config \
  -p 444:444 \
  -p 81:81 \
  -e BLUEONYX_HOSTNAME=blueonyx \
  -e BLUEONYX_DOMAIN=local \
  casjaysdevdocker/blueonyx:latest

Using docker-compose

version: "3.8"
services:
  blueonyx:
    image: casjaysdevdocker/blueonyx:latest
    container_name: blueonyx
    hostname: blueonyx.local
    privileged: true
    cgroup: host
    environment:
      - BLUEONYX_HOSTNAME=blueonyx
      - BLUEONYX_DOMAIN=local
      - TZ=America/New_York
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:rw
      - blueonyx-data:/data
      - blueonyx-config:/config
    ports:
      - "444:444"   # HTTPS Admin Interface
      - "81:81"     # HTTP Admin Interface
      - "80:80"     # HTTP Web Hosting (optional)
      - "443:443"   # HTTPS Web Hosting (optional)
      - "21:21"     # FTP (optional)
      - "25:25"     # SMTP (optional)
      - "110:110"   # POP3 (optional)
      - "143:143"   # IMAP (optional)
    restart: unless-stopped

volumes:
  blueonyx-data:
  blueonyx-config:

First Access

  1. Wait 2-3 minutes for BlueOnyx to fully initialize
  2. Access the admin panel: https://YOUR_IP:444/ or http://YOUR_IP:81/
  3. Default credentials:
    • Username: admin
    • Password: Check /data/ADMIN_PASSWORD.txt (auto-generated) or set via BLUEONYX_ADMIN_PASSWORD ENV var
  4. Change the admin password immediately after first login

Note: If you set BLUEONYX_ADMIN_PASSWORD, use that password. Otherwise, the container generates a random password and saves it to /data/ADMIN_PASSWORD.txt.

Environment Variables

BlueOnyx supports extensive configuration through environment variables:

Network Configuration

Variable Default Description
BLUEONYX_HOSTNAME blueonyx Server hostname
BLUEONYX_DOMAIN local Server domain name
BLUEONYX_IPV4 auto-detected IPv4 address
BLUEONYX_IPV6 none IPv6 address
BLUEONYX_GATEWAY auto-detected Network gateway
BLUEONYX_NAMESERVER 8.8.8.8 DNS nameserver

Admin Configuration

Variable Default Description
BLUEONYX_ADMIN_USER admin Admin username
BLUEONYX_ADMIN_PASS auto-generated Admin password (saved to /data/ADMIN_PASSWORD.txt)
BLUEONYX_ADMIN_EMAIL admin@{domain} Admin email address

Mail Configuration

Variable Default Description
BLUEONYX_POSTFIX_MODE satellite Postfix mode (satellite, internet, local)
BLUEONYX_POSTFIX_RELAY docker gateway SMTP relay host
BLUEONYX_POSTFIX_RELAY_PORT 25 SMTP relay port
BLUEONYX_POSTFIX_RELAY_USER none SMTP relay username (optional)
BLUEONYX_POSTFIX_RELAY_PASS none SMTP relay password (optional)
BLUEONYX_ENABLE_DOVECOT yes Enable Dovecot IMAP/POP3
BLUEONYX_ENABLE_SPAM_FILTER yes Enable SpamAssassin
BLUEONYX_ENABLE_ANTIVIRUS yes Enable ClamAV
BLUEONYX_ENABLE_DKIM yes Enable DKIM signing

Database Configuration

Variable Default Description
BLUEONYX_DB_TYPE mariadb Database type
BLUEONYX_DB_ROOT_PASS auto-generated MySQL root password (saved to /data/MYSQL_ROOT_PASSWORD.txt)
BLUEONYX_ENABLE_POSTGRES no Enable PostgreSQL

Valkey/Redis Configuration

Variable Default Description
BLUEONYX_VALKEY_ENABLED yes Enable Valkey (Redis-compatible)
BLUEONYX_VALKEY_PORT 6379 Valkey port
BLUEONYX_VALKEY_MAXMEMORY 256mb Maximum memory for Valkey

Web Server Configuration

Variable Default Description
BLUEONYX_WEB_PROXY nginx Web proxy (nginx, apache)
BLUEONYX_HTTP2_ENABLED yes Enable HTTP/2
BLUEONYX_TLS_VERSION 1.3 Minimum TLS version
BLUEONYX_ENABLE_SSL yes Enable SSL/TLS
BLUEONYX_SSL_TYPE selfsigned SSL certificate type

Certbot/Let's Encrypt

Variable Default Description
BLUEONYX_CERTBOT_ENABLED no Enable Certbot for Let's Encrypt
BLUEONYX_CERTBOT_EMAIL admin email Email for Let's Encrypt notifications
BLUEONYX_CERTBOT_DOMAINS none Comma-separated list of domains for certificates
BLUEONYX_CERTBOT_WEBROOT /var/www/html Webroot path for ACME challenge

DNS Configuration

Variable Default Description
BLUEONYX_ENABLE_DNS yes Enable BIND DNS server
BLUEONYX_DNS_FORWARDERS 8.8.8.8 8.8.4.4 DNS forwarders

FTP Configuration

Variable Default Description
BLUEONYX_ENABLE_FTP yes Enable ProFTPD
BLUEONYX_FTP_PASSIVE_PORTS 30000-30100 Passive port range

Virtual Hosts

Variable Default Description
BLUEONYX_VHOSTS none Comma-separated list of virtual hosts to create (e.g., example.com,test.com)

Feature Toggles

Variable Default Description
BLUEONYX_ENABLE_CALDAV yes Enable CalDAV
BLUEONYX_ENABLE_DOCKER yes Enable Docker GUI
BLUEONYX_ENABLE_WEBALIZER yes Enable Webalizer stats
TZ America/New_York Timezone

Example with all Mail Configuration

docker run -d --name blueonyx --privileged --cgroupns=host \
  -v /sys/fs/cgroup:/sys/fs/cgroup:rw \
  -v blueonyx-data:/data \
  -v blueonyx-config:/config \
  -v blueonyx-logs:/logs \
  -p 444:444 -p 81:81 -p 80:80 -p 443:443 -p 25:25 \
  -e BLUEONYX_HOSTNAME=mail \
  -e BLUEONYX_DOMAIN=example.com \
  -e BLUEONYX_ADMIN_EMAIL=admin@example.com \
  -e BLUEONYX_POSTFIX_MODE=satellite \
  -e BLUEONYX_POSTFIX_RELAY=smtp.sendgrid.net \
  -e BLUEONYX_POSTFIX_RELAY_PORT=587 \
  -e BLUEONYX_POSTFIX_RELAY_USER=apikey \
  -e BLUEONYX_POSTFIX_RELAY_PASS=SG.xxxxx \
  -e BLUEONYX_VHOSTS=site1.example.com,site2.example.com,api.example.com \
  -e BLUEONYX_VALKEY_ENABLED=yes \
  -e BLUEONYX_VALKEY_MAXMEMORY=512mb \
  -e BLUEONYX_CERTBOT_ENABLED=yes \
  -e BLUEONYX_CERTBOT_EMAIL=ssl@example.com \
  -e BLUEONYX_CERTBOT_DOMAINS=example.com,www.example.com \
  casjaysdevdocker/blueonyx:latest

Persistent Data

The container uses volumes for persistent storage following the schema:

Data Volumes

  • /data/db/mariadb - MariaDB/MySQL database files
  • /data/db/valkey - Valkey (Redis) data files
  • /data/home - User home directories
  • /data/www - Web hosting files
  • /data/mail - Mail storage (Dovecot)
  • /data/dns - DNS zone files (BIND)

Configuration Volumes

  • /config/blueonyx - BlueOnyx main configuration
  • /config/mariadb - MariaDB/MySQL configuration
  • /config/apache - Apache web server configuration
  • /config/nginx - Nginx proxy configuration
  • /config/postfix - Postfix mail server configuration
  • /config/dovecot - Dovecot IMAP/POP3 configuration
  • /config/bind - BIND DNS server configuration
  • /config/proftpd - ProFTPD FTP server configuration
  • /config/ssl - SSL/TLS certificates
    • /config/ssl/certs/ - Certificate files
    • /config/ssl/private/ - Private keys
    • /config/ssl/letsencrypt/ - Let's Encrypt certificates

Log Volumes

  • /logs - All service logs
    • /logs/letsencrypt/ - Certbot logs

Example Volume Mounts

docker run -d \
  -v blueonyx-data:/data \
  -v blueonyx-config:/config \
  -v blueonyx-logs:/logs \
  casjaysdevdocker/blueonyx

Exposed Ports

Port Service Protocol
444 Admin HTTPS TCP
81 Admin HTTP TCP
80 Web HTTP TCP
443 Web HTTPS TCP
21 FTP TCP
25 SMTP TCP
110 POP3 TCP
143 IMAP TCP
53 DNS TCP/UDP
6379 Valkey/Redis TCP

What's Included

This container includes a fully functional BlueOnyx 5212R installation with:

  • BlueOnyx Core (~1200 RPM packages)
  • Apache with mod_php and mod_authnz_external
  • MariaDB 10.11 database server
  • Postfix mail server with satellite mode support
  • Dovecot IMAP/POP3 server with auto-generated SSL certificates
  • BIND DNS server with zone management
  • ProFTPD FTP server
  • Valkey Redis-compatible key-value store
  • Certbot for Let's Encrypt SSL certificate automation
  • PHP with multiple versions support
  • All required dependencies pre-installed and configured

Recent Enhancements

Version 2.0 (2026-02):

  • Added Valkey (Redis-compatible) support
  • Integrated Certbot with automatic SSL renewal
  • Implemented 40+ environment variables for configuration
  • Added virtual host auto-creation via BLUEONYX_VHOSTS
  • Postfix satellite mode with Docker gateway auto-detection
  • Password auto-generation with secure storage
  • Fixed Apache mod_authnz_external module loading
  • Fixed Dovecot SSL certificate generation
  • Improved startup service reliability
  • Platform-restricted to linux/amd64 for stability

Important Notes

Privileged Mode Required

BlueOnyx manages multiple system services (Apache, MySQL, DNS, mail) and requires:

  • --privileged flag
  • Access to /sys/fs/cgroup
  • systemd as PID 1

This is by design - BlueOnyx is a full control panel, not a single-service app.

No Reboot Needed

Unlike bare-metal installation, the container version handles all initialization automatically. No container restart is required after first boot.

SELinux

SELinux is automatically disabled in the container (required by BlueOnyx).

Troubleshooting

Check All Service Status

docker exec blueonyx systemctl status cced.init admserv httpd mariadb postfix named dovecot valkey

Check Individual Services

docker exec blueonyx systemctl status cced.init
docker exec blueonyx systemctl status httpd
docker exec blueonyx systemctl status mariadb
docker exec blueonyx systemctl status postfix
docker exec blueonyx systemctl status dovecot

View Logs

# Container logs
docker logs blueonyx

# Service-specific logs
docker exec blueonyx journalctl -u cced.init -f
docker exec blueonyx journalctl -u httpd -f
docker exec blueonyx journalctl -u blueonyx-startup -f

Access Shell

docker exec -it blueonyx /bin/bash

Check Generated Passwords

docker exec blueonyx cat /data/ADMIN_PASSWORD.txt
docker exec blueonyx cat /data/MYSQL_ROOT_PASSWORD.txt

Test Valkey Connection

docker exec blueonyx valkey-cli ping
docker exec blueonyx valkey-cli INFO

Verify Virtual Hosts

docker exec blueonyx ls -la /etc/httpd/conf.d/vhost_*.conf

Common Issues

Services not starting: Wait 2-3 minutes after container start. BlueOnyx initializes multiple services sequentially.

Port conflicts: Ensure ports 444, 81, 80, 443 are not in use by other containers/services.

Permission errors: Container must run with --privileged flag and cgroupfs access.

Dovecot fails: SSL certificates are auto-generated. Check /etc/pki/dovecot/ for certificates.

httpd fails: Ensure Apache modules are loaded. Check logs with journalctl -u httpd.

Get Source Files

git clone "https://github.com/casjaysdevdocker/blueonyx" "$HOME/Projects/github/casjaysdevdocker/blueonyx"
cd "$HOME/Projects/github/casjaysdevdocker/blueonyx"

Build Container

cd "$HOME/Projects/github/casjaysdevdocker/blueonyx"
docker build -t blueonyx:local .

More Information

Authors

🤖 casjay: Github 🤖
casjaysdevdocker: Github Docker

Description
Languages
Shell 94.5%
Dockerfile 5.5%