p3x Lazy
Uptime Robot ratio (30 days)      

💣 Tools

This is an internal tool program (p3x) to manage a recursive async and serial command for NPM packages.


sudo npm install -g p3x-tools --unsafe-perm=true --allow-root


All folders exclude node_modules and bower_components except it is included.

p3x docker clean # delete images the have exited
p3x docker clear # delete all images in docker
p3x docker free # delete exited containers
p3x pkg yarn install | <command> # installs recursive every project that has a package.json
p3x build yarn install  | <command>  # install recursive every package that has a corifeus-builder
p3x npm unpublish # unpublish every package from NPM except the last Minor version (Major.Minor.Build-Commit)
p3x link # links every recursive given package together
p3x git <command> # you can execute a command on every git dir, recursive
p3x rm <folder> # remove recursive the given folder
p3x ncu -u # updates recursive all packages
p3x git pull # recursive pull every folder
p3x git push # recursive push every folder
p3x git renew|truncate # remote all commits, from #1231 commit to #1
p3x git init repo-name # .git is not required, is auto added, post-update is generated so it is my own, specific for the patrikx3.com server git repo (it adds in the webhook), the names are only lower cased forcefully a-z, digit and dash.

and more ...

If you want the commands is serials, add the -s or --serial flag, otherwise all async.

etc ...

Dependencies Fix 


Webpack repos 

  • gitlist
  • redis-ui-material
  • fortune-cookie
  • corifeus-builder-angular
  • sygnus ngivr builder webpack

Default excludes from GitHub: 


Github fork upstream 

1 . Clone your fork:

git clone git@github.com:YOUR-USERNAME/YOUR-FORKED-REPO.git

2 . Add remote from original repository in your forked repository:

cd into/cloned/fork-repo  
git remote add upstream https://github.com/ORIGINAL-DEV-USERNAME/REPO-YOU-FORKED-FROM.git  
git fetch upstream  

3 . Updating your fork from original repo to keep up with their changes:

git pull upstream master
git merge upstream/master
git push

# or
git checkout dev
git pull upstream dev
git merge upstream/dev
git push

Warning / deprecate 

npm deprecate <pkg>[@<version>] <message>
// or better
npm deprecate my-thing@"< 0.2.3" "critical bug fixed in v0.2.3"

Really make a bare repo to smaller 


git gc --prune=now --aggressive

Show available versions on NPM 

# for example
npm show p3x-angular-compile versions --json

Verdaccio NPM fix 


docker run --rm -it node:9.2.0-alpine sh
/ # npm login --registry https://npm.company.com
Username: admin
Email: (this IS public) admin@company.com
Logged in as admin on https://npm.company.com/.
/ # cat ~/.npmrc
/ #

Another solution is like this:

# project .npmrc
registry = "https://registry.acmeco.com"
ca = null
always-auth = true

Swap for Docker 



sudo nano /etc/default/grub


GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1" 


sudo update-grub


touch /etc/sysctl.d/90-swappiness.conf
nano /etc/sysctl.d/90-swappiness.conf

sudo reboot

How To Configure a Mail Server Using Postfix, Dovecot, MySQL, and SpamAssassin and Sieve to move to Spam / Junk folder 


This is how is solved it (it took 7 months):

apt install dovecot-sieve dovecot-managesieved
nano /etc/dovecot/conf.d/90-plugin.conf

Add or set in: 

protocol lmtp {
        mail_plugins = $mail_plugins sieve
        auth_socket_path = /var/run/dovecot/auth-master
nano /etc/dovecot/sieve.conf

Add in 

require ["fileinto", "mailbox"];
    if header :contains "X-Spam-Flag" "YES" {
        # move mail into Folder Spam, create folder if not exists
        fileinto :create "Spam";


sievec /etc/dovecot/sieve.conf
nano /etc/spamassassin/local.cf

Add in or set it, it's like this ( I think you don't need everythign else):

report_safe             0
required_score          2.0
use_bayes               1
use_bayes_rules         1
bayes_auto_learn        1
skip_rbl_checks         0
use_razor2              1
use_pyzor               0

add_header all Status _YESNO_, score=_SCORE_ required=_REQD_ version=_VERSION_
bayes_ignore_header X-Bogosity
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status

Edit a new file again 

nano /etc/dovecot/conf.d/90-sieve.conf

Set this config, you don't need anything else:

plugin {
    sieve = /etc/dovecot/sieve.conf

Edit the mail boxes, so jo have Junk, I think jo just need add or uncomment the Junk setting:

nano /etc/dovecot/conf.d/15-mailboxes.conf 

Add in this config 

namespace inbox {
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  mailbox Sent {
    auto = subscribe
    special_use = \Sent

My user for the e-mail server is vmail, so do like this:

chmod ug+w /etc/dovecot
chmod ug+w /etc/dovecot/sieve.conf.svbin

chown -R vmail:vmail /etc/dovecot

Restart your mail server:

service postfix reload && service spamassassin restart && service dovecot restart

GRUB for another menu once 

Make sure /etc/default/grub has this:


You can choose you menu like:

grep -i "menuentry '" /boot/grub/grub.cfg

The boot with your menu:

sudo -i
# my workstation boot from win
grub-reboot 2 

Git synchronize 

git submodule sync
onenoteGithub onenoteredis-uiGithub redis-uiangular-compileGithub angular-compilegitlistGithub gitlistramdiskGithub ramdiskopenwrt-insomniaGithub openwrt-insomniafreenomGithub freenomredis-ui-serverGithub redis-ui-serversystemd-managerGithub systemd-managerredis-ui-materialGithub redis-ui-materialxml2jsonGithub xml2jsoncorifeusGithub corifeushtml-pdfGithub html-pdfangular-http-cache-interceptorGithub angular-http-cache-interceptorverdaccio-cliGithub verdaccio-clibinary-search-closestGithub binary-search-closestcorifeus-app-web-pagesGithub corifeus-app-web-pagesgrunt-p3x-expressGithub grunt-p3x-expressjson2xls-worker-threadGithub json2xls-worker-threadtoolsGithub toolscorifeus-builderGithub corifeus-buildercorifeus-utilsGithub corifeus-utils