Discord: PoiXson
yum/dnf: yum.poixson.com
What is Configer
Configer is a modular server management system and web control panel. It's light weight, automatic, and installs in moments. Drop in your configer.json file, install only what services you need, and everything is up and running already. Easy as can be.
Still in development
The web control panel is an optional package you may install on each of your servers, or on a central management server to remotely manage other servers.
How it works
As each service starts, it only takes milliseconds for the configer-gen tool to read the configer.json file and generate the config files for that service. Just-in-time configs.
Currently Supported
Supported Operating Systems:
- RHEL/CentOS/Rocky/Alma 8 and 9
- Fedora 37, 38, 39, and 40
Current State
Many supported services are now fully functional, and many more in the works.
- DNS hosting with Bind - Fully functional.
- Web hosting with Nginx and HAProxy - Fully functional, as well as the php-fpm service. SSL/TLS for https is handled by let's encrypt and the configer-certs service.
- EMail hosting with Postfix and Dovecot - This is a very complicated thing. This is about half finished, more to come soon. Receiving emails into mailboxes is partly functional. IMAP and sending emails are unfinished.
- Minecraft server hosting - This is partly working, as a system service and contained in a screen session. Setup and management isn't yet finished.
Unfinished Services
- Firewall management is unfinished and not ready yet.
- Backups and ZFS support are unfinished and not ready yet.
- Databases (MySQL/MariaDB/PostgreSQL) are not currently supported and will be added in the future.
- Web Stats - The access log processing is partly finished but not yet ready for use. It is recommended to disable log rotations and let the logs accumulate until the processing tool is ready. Once this feature is ready, it will quickly process the backlog then stay updated live. The log processing tool is expected to handle tens of thousands of requests per second, so it wont take long even if you accumulate many gigs of logs.
- MQTT/Mosquitto - This is working, but only basic functionality. More features are planned.
- More Services - Do you have a service you would like to manage with Configer? Make a suggestion and we will consider adding it.
note: Some services may not enable or start automatically. This is a known bug and will be fixed. You may enable and start these services yourself for now:
systemctl enable nginx-<user> systemctl start nginx-<user>
Setup
It's recommended to prepare your configer.json configuration file before installing the packages. If the file is ready and in place, the system will come online and fully functional after packages have installed.
An example file can be found here: https://configer.online/configer.json
The Configer system will search for the configer.json file in these locations:
- /configer.json
- /etc/configer.json
- /var/configer.json
- /home/configer.json
The first found of the above list takes priority. It should be owned and readable by root. The configer-gen tool will generate config files for each service on-demand, just before each start. If you make a change to the configer.json file, simply restart the affected services to apply the changes.
wget -O /configer.json https://configer.online/configer.json nano /configer.json
Installing
It's recommended to prepare your configer.json configuration file before installing the packages.
There are a few ways to install Configer. What suites you best?
- Automatic install script
- Wizard with menus is available using the install.sh --wizard flag
- Install from packages
- Manual install from source - possible, but good luck. This hasn't yet been documented.
Wizard install
The latest install script can be found here: https://configer.online/install.sh
The install wizard and menus can be used by adding the --wizard (or --wiz) flag with the above script.
wget -O configer-install.sh https://configer.online/install.sh sh configer-install.sh --wizard
Automatic install
wget -O configer-install.sh https://configer.online/install.sh sh configer-install.sh --auto
note: This feature is currently unfinished.
Manual Install from Packages
You may look inside the above script to see exactly what repositories and packages are needed.
- You will first need the pxn repo and then the pxn-testing-release package
- If you are using CentOS/Rocky/Alma/Red Hat, you will need the EPEL repo.
- If you are using PHP for web hosting, or using the web control panel, you will need the Remi repo.
- If Nginx is not available by default on your distro of choice, you may need the nginx repo.
- You're finished. Your services are now configured and online.
dnf install https://yum.poixson.com/latest.rpm dnf install pxn-testing-release dnf install epel-release (and/or) remi-release (if rhel/rocky/alma) dnf install nginx-release (only if needed) dnf update dnf install configer dnf install configer-
Configuration
Here is an example config, create this at the root of the file system and name it: /configer.json
You can remove blocks for services you're not using. For instance, if you aren't using mail services, you can remove that block from the json config.
After making changes to this config file, you can stop and start the affected service to apply the changes. New config files will be created just before the service starts.
{ "hostname": "server123.example.com", "users": { "example-site": { }, "bis": { } }, "dns_internal": { "servera": { "ip": "192.168.1.21" }, "serverb": { "ip": "192.168.1.22" } }, "dns_external": { "example.com": { "ip": "1.2.3.4" }, "business.com": { "ip": "1.2.3.4", "A": { "cdn": "4.5.6.7", "db1": "6.7.8.9" } } }, "ssl": true, "php": true, "xdebug": false, "websites": { "example-site": { "domains": [ "example.com" ], "ssl": true, "php": true }, "bis": { "domains": [ "business.com", "" ], "ssl": true, "php": true } }, "mail": { "root": "support@example.com", "mailboxes": { "example-site": { "example.com": [ "support" ] }, "bis": { "business.com": [ "support" ] } }, "forwards": { "@example.com": "support@example.com", "sales@business.com": "support@business.com" }, }, "mc": { "myserver": { "spigot-version": "1.19.2" } }, "mqtt": { "anon": true } }