Phriction Welcome in gitpull.it, a Phabricator instance! KISS Libre Hosting Panel History Version 6 vs 15
Version 6 vs 15
Version 6 vs 15
Edits
Edits
- Edit by valerio.bozzolan, Version 15
- Sep 19 2023 14:58
- Edit by valerio.bozzolan, Version 6
- Nov 23 2020 02:41
Edit Older Version 6... | Edit Current Version 15... |
Content Changes
Content Changes
# KISS Libre Hosting Panel
Welcome in an actively developed keep-it-simple-and-stupid hosting panel designed for GNU/Linux operating systems. This software can be useful to serve everyday shared hosting services.
This panel is designed to **respect the freedom** of its users. It works **without proprietary JavaScript**. To be honest, without **any line of JavaScript** in any form.
This panel is designed to work without **any external dependency** not written by me. This allow fine-grained control over the software. It integrates with well-known and ultra-secure software packaged inside every GNU/Linux distribution in the world and used by millions of devices.
I would like to thank Giorgio Maone for his project NoScript, for the moral incentive, and Richard Stallman, for //The JavaScript Trap// paper.
* https://www.gnu.org/philosophy/javascript-trap.html
* https://noscript.net/
## Disclaimer
Do not try to become a system administrator if you do not like responsibilities, if you do not want to understand your infrastructure, if you do not want to have information security paranoia, etc.
## Preamble
An hosting panel is just the iceberg summit of a lot of technologies and protocols involved. Do not try to implement such project in production if you do not know what you are doing. You must gain confidence with the technologies involved.
Papers:
* RFC 5321 - Simple Mail Transfer Protocol
* RFC 7208 - Sender Policy Framework (SPF)
* RFC 6376 - DomainKeys Identified Mail (DKIM) Signatures
* RFC 7489 - Domain-based Message Authentication, Reporting, and Conformance (DMARC)
Software involved:
* Debian GNU/Linux stable (currently buster)
* MariaDB / MySQL
* Postfix
* Dovecot
* PureFTPd
* OpenDKIM
* Apache HTTP server / nginx
* PHP
## Features
Let me say that I love listening to the whishlist of my costumers. Here are the most important features/TODOs:
- administration of own mailboxes (thanks to Postfix and Dovecot over MariaDB)
- [X] list
- [X] password reset
- [X] add
- [X] IMAP/SMTP documentation
- [ ] remove
- [ ] view quota
- administration of own mail aliases (thanks to Postfix and Dovecot over MariaDB)
- [X] list
- [X] change forward destination(s)
- [X] add
- [X] remove
- administration of own FTP accounts (thanks to Pure-FTPd over MariaDB)
- [X] list
- [X] add
- [X] remove
- [X] password reset
- [ ] administration of own MariaDB databases
- [ ] list own databases
- [ ] list own users
- [ ] change user password
- [ ] administration of User(s)
- [X] create
- [X] password reset
- [X] create a Domain for that User
- [ ] change login
- [ ] change e-mail
- plans
- [X] limit number of mailboxes per domain
- [X] limit number of mail forwardings
- action log
## Installation
Clone these somewhere:
```
git clone https://gitpull.it/source/boz-libre-hosting-panel.git
git clone https://gitpull.it/source/suckless-php.git
```
Install a database server and other stuff for the web interface:
```
# database
apt install mariadb-server
# web server
apt install apache2 libjs-bootstrap
```
Then create an empty database with a dedicated user (change the password!):
```
$ sudo mysql
CREATE DATABASE libre_hosting_panel;
CREATE USER libre_hosting_panel@localhost IDENTIFIED BY 'aaaah change me!';
GRANT ALL PRIVILEGES ON libre_hosting_panel.* TO libre_hosting_panel@localhost;
```
Now edit your panel configuration:
```
cp kiss-libre-hosting-panel/load-example.php kiss-libre-hosting-panel
/load.php
nano kiss-libre-hosting-panel/load.php
```
Now install your database:
```
./kiss-libre-hosting-panel/cli/database-upgrade
```
Now you should be able to create an user (change the password!):
```
./kiss-libre-hosting-panel/cli/add-user --uid admin --pwd=please_change_meeee --role=admin --email=info@localhost --name="Super" --surname="Admin"
```
Now you can try your panel:
```
cd kiss-libre-hosting-panel/www
php -S localhost:8080
```
WARNING: You know! Do **not** use the `php -S` development webserver in production. Use a standard Apache VirtualHost and set the path to your `kiss-libre-hosting-panel/www` as its `DocumentRoot`. This will also fix `/javascript` resources that are provided by Apache.
NOTE: If you want to use nginx instead of Apache, note that this application uses PATH_INFO. So, it uses URLs like `/mailbox.php/something`. This shit works in Apache out-of-the-box but in nginx you have to configure some stuff I think. Also, you may want to make sure that `kiss-libre-hosting-panel/javascript` is served. This also works out-of-the-box by Apache. Just use Apache if you have no fucking clue about what I'm telling about.
Finally you can eventually install your hosting stuff:
```
# FTP server
apt install pure-ftpd-mysql
# mailserver
apt install postfix-mysql postfix-policyd-spf-python dovecot-mysql dovecot-imapd dovecot-pop3d spamassassin
```
NOTE: This last step is not required if you just want to test this panel.
## Why PHP7
This project is writted in PHP7 because:
* Node.js is not an hypertext preprocessor
* Python is not an hypertext preprocessor
* Ruby is not an hypertext preprocessor
* Java is not an hypertext preprocessor. Well, Java JSP is an hypertext preprocessor but it's footprint is heavy as hell
This PHP7 application is stateless. Does not have sessions. It's well-designed. It scales. It has a minimal memory footprint. If you do not like it, you are free to implement such project with your favorite programming language, with your 200MB of dependencies and crap.
## Report a bug
https://gitpull.it/tag/kiss_libre_hosting_panel/
## Report a feature
https://gitpull.it/tag/kiss_libre_hosting_panel/
## License
Copyright (C) 2018, 2019, 2020 [Valerio Bozzolan](https://boz.reyboz.it/) - KISS Libre Hosting Panel
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
# KISS Libre Hosting Panel
Welcome in an actively developed keep-it-simple-and-stupid hosting panel designed for GNU/Linux operating systems. This software can be useful to serve everyday shared hosting services.
This panel is designed to **respect the freedom** of its users. It works **without proprietary JavaScript**. To be honest, without **any line of JavaScript** in any form.
This panel is designed to work without **any external dependency** not written by me. This allow fine-grained control over the software. It integrates with well-known and ultra-secure software packaged inside every GNU/Linux distribution in the world and used by millions of devices.
I would like to thank Giorgio Maone for his project NoScript, for the moral incentive, and Richard Stallman, for //The JavaScript Trap// paper.
* https://www.gnu.org/philosophy/javascript-trap.html
* https://noscript.net/
## Gallery
FTP user administration:
{F1480269}
Mailbox administration:
{F1480265}
Activity log:
{F1480267}
Hosting plan administration:
{F1480271}
Centralized multi-MTA administration:
{F1480275}
## Disclaimer
Do not try to become a system administrator if you do not like responsibilities, if you do not want to understand your infrastructure, if you do not want to have information security paranoia, etc.
## Preamble
An hosting panel is just the iceberg summit of a lot of technologies and protocols involved. Do not try to implement such project in production if you do not know what you are doing. You must gain confidence with the technologies involved.
Papers:
* RFC 5321 - Simple Mail Transfer Protocol
* RFC 7208 - Sender Policy Framework (SPF)
* RFC 6376 - DomainKeys Identified Mail (DKIM) Signatures
* RFC 7489 - Domain-based Message Authentication, Reporting, and Conformance (DMARC)
Software involved:
* Debian GNU/Linux stable (currently buster)
* MariaDB / MySQL
* Postfix
* Dovecot
* PureFTPd
* OpenDKIM
* PostSRSd
* Apache HTTP server / nginx
* PHP
## Features
Let me say that I love listening to the whishlist of my costumers. Here are the most important features/TODOs:
- administration of own mailboxes (thanks to Postfix and Dovecot over MariaDB)
- [X] list
- [X] password reset
- [X] add
- [X] IMAP/SMTP documentation
- [X] view quota
- [ ] remove
- administration of own mail aliases (thanks to Postfix and Dovecot over MariaDB)
- [X] list
- [X] change forward destination(s)
- [X] add
- [X] remove
- administration of own FTP accounts (thanks to Pure-FTPd over MariaDB)
- [X] list
- [X] add
- [X] remove
- [X] password reset
- [ ] administration of own MariaDB databases
- [ ] list own databases
- [ ] list own users
- [ ] change user password
- [ ] administration of User(s)
- [X] create
- [X] password reset
- [X] create a Domain for that User
- [ ] change login
- [ ] change e-mail
- plans
- [X] limit number of mailboxes per domain
- [X] limit number of mail forwardings
[X] audit log
- [X] have an action log with translatable messages
- [X] have an action log with "clickable" things (<user //foo// created mailbox //bar// in date ...>)
- [X] see your last actions
- [X] see actions about specific objects (specific mailboxes, specific mail-forwardings, etc.)
## Installation
Clone these somewhere:
```
git clone https://gitpull.it/source/boz-libre-hosting-panel.git
git clone https://gitpull.it/source/suckless-php.git
```
Install a database server and other stuff for the web interface:
```
# database
sudo apt install mariadb-server
# web server
sudo apt install apache2 libapache2-mod-php libjs-bootstrap
```
Then create an empty database with a dedicated user (change the password!):
```
$ sudo mysql
CREATE DATABASE libre_hosting_panel;
CREATE USER libre_hosting_panel@localhost IDENTIFIED BY 'aaaah change me!';
GRANT ALL PRIVILEGES ON libre_hosting_panel.* TO libre_hosting_panel@localhost;
```
Now edit your panel configuration:
```
cp kiss-libre-hosting-panel/load-example.php kiss-libre-hosting-panel
/load.php
nano kiss-libre-hosting-panel/load.php
```
Now install your database:
```
./kiss-libre-hosting-panel/cli/database-upgrade
```
Now you should be able to create an user (change the password!):
```
./kiss-libre-hosting-panel/cli/add-user --uid admin --pwd=please_change_meeee --role=admin --email=info@localhost --name="Super" --surname="Admin"
```
Now you can try your panel creating a dummy virtualhost in Apache like:
```
name=/etc/apache2/sites-available/kiss-libre-hosting-panel.conf
<virtualhost *:443>
# you know what to do here
ServerName localhost
# path to the 'www' directory in the 'kiss-libre-hosting-panel' repository
DocumentRoot /var/www/kiss-libre-hosting-panel/www
# that's all!
</virtualhost>
```
```
a2ensite kiss-libre-hosting-panel
systemctl reload apache2
```
NOTE: If you want to use nginx instead of Apache note that this application uses the `PATH_INFO` feature. So it uses URLs like `/mailbox.php/something` because this shit works in Apache out-of-the-box but... not in nginx. Also, note that in Debian (and Ubuntu and everything...) Apache is configured in a cute way to serve the `http://localhost/javascript` with stuff in `/usr/share/javascript` but this is currently untrue in nginx. In short just use Apache if you have no fucking clue about what I'm telling about. Anyway, I want to note that Apache can scale as well as nginx if you know what you are doing so //please// stop shitstorming on Apache. It's stupid to insult your enemy without knowing him. asd
NOTE: Now you can play with your web panel without further steps.
Finally you can eventually install your hosting stuff:
```
# FTP server
apt install pure-ftpd-mysql
# mailserver
apt install postfix-mysql postfix-policyd-spf-python dovecot-mysql dovecot-imapd dovecot-pop3d spamassassin
```
You will find some useul configurations in `kiss-libre-hosting-panel/documentation/etc`.
* [[ https://gitpull.it/source/kiss-libre-hosting-panel/browse/master/documentation/etc/postfix/ | example Postfix configuration ]] (MTA)
* [[ https://gitpull.it/source/kiss-libre-hosting-panel/browse/master/documentation/etc/pure-ftpd/ | example PureFTPd configuration ]] (FTP)
## Why PHP7
This project is writted in PHP7 because:
* Node.js is not an hypertext preprocessor
* Python is not an hypertext preprocessor
* Ruby is not an hypertext preprocessor
* Java is not an hypertext preprocessor. Well, Java JSP is an hypertext preprocessor but it's footprint is heavy as hell
This PHP7 application is stateless. Does not have sessions. It's well-designed. It scales. It has a minimal memory footprint. If you do not like it, you are free to implement such project with your favorite programming language, with your 200MB of dependencies and crap.
## Report a bug
https://gitpull.it/tag/kiss_libre_hosting_panel/
## Report a feature
https://gitpull.it/tag/kiss_libre_hosting_panel/
## License
Copyright (C) 2018, 2019, 2020 [Valerio Bozzolan](https://boz.reyboz.it/) - KISS Libre Hosting Panel
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
# KISS Libre Hosting Panel
Welcome in an actively developed keep-it-simple-and-stupid hosting panel designed for GNU/Linux operating systems. This software can be useful to serve everyday shared hosting services.
This panel is designed to **respect the freedom** of its users. It works **without proprietary JavaScript**. To be honest, without **any line of JavaScript** in any form.
This panel is designed to work without **any external dependency** not written by me. This allow fine-grained control over the software. It integrates with well-known and ultra-secure software packaged inside every GNU/Linux distribution in the world and used by millions of devices.
I would like to thank Giorgio Maone for his project NoScript, for the moral incentive, and Richard Stallman, for //The JavaScript Trap// paper.
* https://www.gnu.org/philosophy/javascript-trap.html
* https://noscript.net/
## Gallery
FTP user administration:
{F1480269}
Mailbox administration:
{F1480265}
Activity log:
{F1480267}
Hosting plan administration:
{F1480271}
Centralized multi-MTA administration:
{F1480275}
## Disclaimer
Do not try to become a system administrator if you do not like responsibilities, if you do not want to understand your infrastructure, if you do not want to have information security paranoia, etc.
## Preamble
An hosting panel is just the iceberg summit of a lot of technologies and protocols involved. Do not try to implement such project in production if you do not know what you are doing. You must gain confidence with the technologies involved.
Papers:
* RFC 5321 - Simple Mail Transfer Protocol
* RFC 7208 - Sender Policy Framework (SPF)
* RFC 6376 - DomainKeys Identified Mail (DKIM) Signatures
* RFC 7489 - Domain-based Message Authentication, Reporting, and Conformance (DMARC)
Software involved:
* Debian GNU/Linux stable (currently buster)
* MariaDB / MySQL
* Postfix
* Dovecot
* PureFTPd
* OpenDKIM
* PostSRSd
* Apache HTTP server / nginx
* PHP
## Features
Let me say that I love listening to the whishlist of my costumers. Here are the most important features/TODOs:
- administration of own mailboxes (thanks to Postfix and Dovecot over MariaDB)
- [X] list
- [X] password reset
- [X] add
- [X] IMAP/SMTP documentation
- [ ] remove- [X] view quota
- [ ] view quotaremove
- administration of own mail aliases (thanks to Postfix and Dovecot over MariaDB)
- [X] list
- [X] change forward destination(s)
- [X] add
- [X] remove
- administration of own FTP accounts (thanks to Pure-FTPd over MariaDB)
- [X] list
- [X] add
- [X] remove
- [X] password reset
- [ ] administration of own MariaDB databases
- [ ] list own databases
- [ ] list own users
- [ ] change user password
- [ ] administration of User(s)
- [X] create
- [X] password reset
- [X] create a Domain for that User
- [ ] change login
- [ ] change e-mail
- plans
- [X] limit number of mailboxes per domain
- [X] limit number of mail forwardings
- action log[X] audit log
- [X] have an action log with translatable messages
- [X] have an action log with "clickable" things (<user //foo// created mailbox //bar// in date ...>)
- [X] see your last actions
- [X] see actions about specific objects (specific mailboxes, specific mail-forwardings, etc.)
## Installation
Clone these somewhere:
```
git clone https://gitpull.it/source/boz-libre-hosting-panel.git
git clone https://gitpull.it/source/suckless-php.git
```
Install a database server and other stuff for the web interface:
```
# database
sudo apt install mariadb-server
# web server
sudo apt install apache2 libapache2-mod-php libjs-bootstrap
```
Then create an empty database with a dedicated user (change the password!):
```
$ sudo mysql
CREATE DATABASE libre_hosting_panel;
CREATE USER libre_hosting_panel@localhost IDENTIFIED BY 'aaaah change me!';
GRANT ALL PRIVILEGES ON libre_hosting_panel.* TO libre_hosting_panel@localhost;
```
Now edit your panel configuration:
```
cp kiss-libre-hosting-panel/load-example.php kiss-libre-hosting-panel
/load.php
nano kiss-libre-hosting-panel/load.php
```
Now install your database:
```
./kiss-libre-hosting-panel/cli/database-upgrade
```
Now you should be able to create an user (change the password!):
```
./kiss-libre-hosting-panel/cli/add-user --uid admin --pwd=please_change_meeee --role=admin --email=info@localhost --name="Super" --surname="Admin"
```
Now you can try your panel creating a dummy virtualhost in Apache like:
```
cd name=/etc/apache2/sites-available/kiss-libre-hosting-panel/www.conf
php -S localhost:8080<virtualhost *:443>
# you know what to do here
ServerName localhost
# path to the 'www' directory in the 'kiss-libre-hosting-panel' repository
DocumentRoot /var/www/kiss-libre-hosting-panel/www
# that's all!
</virtualhost>
```
WARNING: You know! Do **not** use the `php -S` development webserver in production. Use a standard Apache VirtualHost and set the path to your `kiss-libre-hosting-panel/www` as its `DocumentRoot`. This will also fix `/javascript` resources that are provided by Apache.```
a2ensite kiss-libre-hosting-panel
systemctl reload apache2
```
NOTE: If you want to use nginx instead of Apache, note that this application uses the `PATH_INFO` feature. So it uses URLs like `/mailbox.php/something` because this shit works in Apache out-of-the-box but... note that this application uses PATH_INFOnot in nginx. SoAlso, it uses URLs like `/mailbox.php/something`note that in Debian (and Ubuntu and everything...) Apache is configured in a cute way to serve the `http://localhost/javascript` with stuff in `/usr/share/javascript` but this is currently untrue in nginx. This shit works inIn short just use Apache out-of-the-box but in nginx you have to configure some stuff I thinkif you have no fucking clue about what I'm telling about. AlsoAnyway, you may want to make sure that `kiss-libre-hosting-panel/javascript` is servedI want to note that Apache can scale as well as nginx if you know what you are doing so //please// stop shitstorming on Apache. This also works out-of-the-box by ApacheIt's stupid to insult your enemy without knowing him. Just use Apache ifasd
NOTE: Now you have no fucking clue about what I'm telling aboutcan play with your web panel without further steps.
Finally you can eventually install your hosting stuff:
```
# FTP server
apt install pure-ftpd-mysql
# mailserver
apt install postfix-mysql postfix-policyd-spf-python dovecot-mysql dovecot-imapd dovecot-pop3d spamassassin
```
NOTE: This last step is not required if you just want to test this panel.You will find some useul configurations in `kiss-libre-hosting-panel/documentation/etc`.
* [[ https://gitpull.it/source/kiss-libre-hosting-panel/browse/master/documentation/etc/postfix/ | example Postfix configuration ]] (MTA)
* [[ https://gitpull.it/source/kiss-libre-hosting-panel/browse/master/documentation/etc/pure-ftpd/ | example PureFTPd configuration ]] (FTP)
## Why PHP7
This project is writted in PHP7 because:
* Node.js is not an hypertext preprocessor
* Python is not an hypertext preprocessor
* Ruby is not an hypertext preprocessor
* Java is not an hypertext preprocessor. Well, Java JSP is an hypertext preprocessor but it's footprint is heavy as hell
This PHP7 application is stateless. Does not have sessions. It's well-designed. It scales. It has a minimal memory footprint. If you do not like it, you are free to implement such project with your favorite programming language, with your 200MB of dependencies and crap.
## Report a bug
https://gitpull.it/tag/kiss_libre_hosting_panel/
## Report a feature
https://gitpull.it/tag/kiss_libre_hosting_panel/
## License
Copyright (C) 2018, 2019, 2020 [Valerio Bozzolan](https://boz.reyboz.it/) - KISS Libre Hosting Panel
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
Public contents are in Creative Commons Attribution-ShareAlike 4.0 (CC-BY-SA) or GNU Free Documentation License (at your option) unless otherwise noted. · Contact / Register