Lightweight (and very basic) control panel for NGINX servers. Developed primarily in Laravel 5.2, with a little support from Python, Perl, and bash!
- PHP 5.5.9+
- MySQL 5.5+
- Perl 5+
- Python 3
- Bash shell (or feel free to fork and port!)
- Composer (https://getcomposer.org/download)
- NGINX web server (otherwise, why?)
- Documentation for the framework can be found on the Laravel website.
- Documentation for Composer can be found on the Composer website.
- If you need help installing NGINX and PHP on your server, Digital Ocean has a great tutorial (this works on Debian 8 as well).
Thank you for considering contributing to my little project. If it helps you out, please let me know...if I can do something better...please let me know!
Panelvel is open-sourced software licensed under the MIT license (also included in this repository).
- Install composer...globally, if you can (see above)
- Clone this repo into your web directory (I recommend setting a sub-domain or domain aside for this), and run
composer install
- Set ownership of all directories under Panelvel to www-data
- Create a new database to store the site information, and update the /.env file with your database login information (you may want to use a separate server for WP instances)
- Add the following lines to your crontab (replace /YOUR-PATH/ with the path to the repo on your server; this will run every 5 minutes):
*/5 * * * * perl /YOUR-PATH/storage/install.pl /YOUR-PATH/storage/sites/list.txt /YOUR-PATH/Panelvel/storage >/dev/null 2>&1
(you may edit your crontab withcrontab -e
) - From the command line in your Panelvel directory, run
user:create
to create a new admin user for your panel. - Use it, fork it, improve it!
- Log into your site (http://yourdomain.tld/login)
- Add a domain
- Check the box for "WordPress" if you want it
- Let the server work its magic...it can take up to 5 minutes to update a site (less if you decrease the value in the crontab)
- You enter your information in the admin section
- If you marked WordPress, Laravel generates the new database login information (for the as-of-yet-uncreated WordPress database; the server does not have to be the same as Panelvel connects to)
- Eloquent updates the Laravel-connected database
- Laravel calls an Artisan command to generate text files from the database contents
- The Perl script at
/storage/perl/install.pl
parses the text file- install.pl executes a bash script,
/storage/bash/new_site.sh
, which creates the proper file and directory structures (along with the appropriate config files) for the NGINX server - If the site is flagged WordPress, new_site.sh downloads a fresh copy of WordPress, installs it in the proper directory, writes the database login information into wp-sample-config.php, moves the file to wp-config.php, and appends the "direct" FS_METHOD to WordPress (enables updates without FTP)
- new_site.sh copies self-signed certificates into the proper places (if you're not using CloudFlare, you'll want to remove this, and possibly modify the templates in /storage/templates)
- new_site.sh changes ownership of all the web files and restarts NGINX
- install.pl executes a bash script,
- If the WordPress flag is set, install.pl:
- calls
/storage/python/create_db.py
to generate the new WordPress database - generates new nonces and edits the wp-config.php file accordingly
- calls