PM Software Stack
PMSS, short of PM Software Stack is a compilation of scripts to manage single server side seedbox configuration, turning instantly and conveniently an regular Debian 5.0 server into a seedbox. The PMSS does not contain multiserver management utilities nor clustering support out-of-box, but does include PM Master GUI remote update features. Debian 6.0 squeeze support is still in unstable status but several production servers already do exist. PMSS currently only supports rTorrent+ruTorrent stack.
Contents
General features
- Semi-automatic installation
- Fast and easy creation of new user accounts with quota and rTorrent resource limits, etc.
- Easy user resource reconfiguration
- Autonomous Lighttpd configuration
- Autonomous configuration of basic server features
- Compiling rTorrent + libTorrent + Quota + XMLRPC from source.
- Multiple redundancy levels for rTorrent
- Lighttpd redundancy / autorestart
- Basic server optimizations to maximize performance
- Terminate, Suspend/Unsuspend users
- Other basic management scripts
Using PMSS
See Category:PM Software Stack Guides
Changelog
25/8/2011
Streamlined installer for faster setups :) First release of API, just one command now. Some things moved to BETA status and considered feature complete. Many bug fixes, additional commenting etc. also added
- fixed userTransfer chowning lacking -R, thus UID was transferred for many files from the other server causing incorrect permissions
- wrapped vnstat install into if !file_exists to see if vnstat is installed already.
- added username 'srvadmin' to filter list on systemUsers
- removed from installer editing munin.conf -> if used can be done manually. Interim solution.
- put install vim as first thing on installer
- setting node hostname straight after installing vim
- moved setting up lighttpd as last thing
- scripts, skel, etc are installed earlier in installation
- SSL cert + quota as last items on setup
- Executing update-step2 on installer (so you don't need to execute updater after setup to get everything in)
- /scripts/util/setupRootCron.php -> creating root conf moved out of update.php
- setupSkelPermissions.php, same reason as root cron setup
- added setupRootCron and setupSkelPermissions to installer
- Idempotent lighttpd configurator feature completed. Backups the config first.
- Terminate user moved to beta status, as using lighttpd configurator now and restarting lighttpd.
- Added for terminate second argument, if 2nd argument is --confirm, straight accepts termination without asking for approval, for making automation easier.
- checkHttpd timer increased to 3 seconds before restarting lighttpd
- terminateUser timer increased to 5 seconds after trying to kill all user processes
- setupApiKey -> creates node key for API. Invoked upon setup.
- added authorization key
- removed /var/www/index.lighttpd.html
- added /var/www/index.php redir to pulsedmedia.com
- added beginnings of remote API for easier remote control management, by default in debug mode for now
8/6/2011
Bug fixes.
terminateUser.php:
- Was not actually completing shell userdeletion
- Added killing user processes (forgotten)
- added sleeping 2 seconds to allow time for rTorrent/other processes by user to die
- Added 2nd attempt to userdel after data removal
- Fixed some typos in texts
- Added check for user actually exists
NOTE: Still Alpha, non feature complete and not recommended for production use.
- checkHttpd.php added sleep between lighttpd kill and restart, to avoid PID file mismatch scenario
update-step2.php:
- First time being used
- update.php moved cron & ftp config stuff AFTER step2
- Install vnstat + vim (vim not by default on Debian 6)
- Setup interface for vnstat
- Configure vnstat for Debian 6
- Make vnstat cron jobs for Debian 5: twice a minute update (thus no support for 1GigE interface)
- Debian 5 add cron jobs to root.cron.additional config, create if needed
31/5/2011
- GUI welcome page checking if proper quota information was passed has been added.
- GUI welcome page malformed serialized data fix
- GUI welcome page quota percentage missing % char
- GUI welcome page quota text styles: White and location
30/5/2011
- GUI update script quota checking added (doesn't try to update when user is over quota burst limit, no more blanking GUI when update happens!)
- Users default quota information update rate has been increased to 10mins
- HDD Quota plugin commenting added
- HDD Quota plugin parser bug with bursted amounts fixed
- HDD Quota now shows USED/QUOTA instead of FREE/QUOTA. Makes more sense.
- HDD Quota "title" fixed (showing quota info) to be whole area of the meter
- Welcome page quota meter added :) Basic graph, larger and constantly visible text for quota info :)
- Basic idempotent lighttpd configurator (alpha, not suitable for production, TESTING only)
23/5/2011
- terminateUser.php http password deletion fix, text fixes, executability.
- checkHttpd.php output lighttpd output, killall -9 lighttpd to ensure shutdown, http fetch mute removed so error gets logged
- update.php: removed apt updates because soft.sh already does this
- crons: increased check http to 4 minute intervals (avoid http timeout period issues)
18/5/2011
Temporary fix to bypass userDb until fully utilized. You may use this update or use /scripts/util/populateUserDb.php to fix the issue.
- Changed listUsers.php to always use systemUsers.php, as fixing userDb saving introduced a bug where ie. checkInstances was not working fully (using userDb, which lacks most users in most servers)
16/5/2011
Few bug fixes and minor features introduced.
- Update script order of items.
- Update script apt-get options for additional package installation lacked auto confirm.
- Update script support for "step 2", /scripts/util/update-step2.php is included if present, thus supporting dynamic updates
- Update script execute binary line added, so it can actually be executed simply by ./update.php
- /scripts permission fix, only root should have anykind of access (no execute or read for others)
- Support for root additional items via /etc/seedbox/config/root.cron.additional
- Add user script minor cleanup, additional commenting.
- Suspend script comments
- simple terminate user script, ALPHA -> not feature complete yet.
Updating from 27/03/2011 release or earlier
cd ~; bash soft.sh; php /scripts/update.php
Updating from 15/5/2011 release
php /scripts/update.php
15/5/2011
Couple important new features introduced, several bug fixes.
- Added lighttpd status checking and auto-restart (very rudimentary)
- Fixed typo in /scripts/util/userConfig.php
- Added /etc/seedbox/config/root.cron
- /scripts/util/quotaFix.php now echoes results (also turns quota off, no need to turn it off first)
- proftpd config update (remote) with MaxClientsPerUser, MaxClientsPerHost, run /scripts/util/ftpConfig.php
- users class now supresses error if runtime db is not found
- users class now saves the user db upon save
- users class deconstructor added to save users db upon exit
- modules support code begun (version for highly dynamic with multiple hooks etc.)
- Changed update.php to a very basic one, as the remote capabilities are not being employed currently
- Rudimentary module /etc/seedbox/module/basic/addUser.php for ultra simplistic user addition module (ie. custom configs, limitations).
- Basic suspend & unsuspend capabilities (untested ALPHA)
- skel permissions fixed
updating
bash soft.sh; php /scripts/update.php
27/03/2011
This is primarily a bug fix and code quality release.
- Set shell to /bin/bash upon user creation
- Set shell to /bin/bash when using userConfig
- quotaFix.php now turns quota off before attempting quota check
- quotaFix.php now displays quota info before and after check
- Lots of comments added to all code files touched
- userConfig.php $filesLimitPerGb was undefined - hardcoded 500
- update.php minor changes
- default version now set to 1, in preparation to take it into production
- startRtorrent: codestyle fixes, Made error messages more clear, named rTorrent screen session to "rtorrent"