/debian-server-tools

Tools and living docs 🧬 for Debian-based servers

Primary LanguageShellMIT LicenseMIT

Debian server tools

You find all my knowledge on GitHub in form of Bash and PHP scripts and Markdown documents.
Updated daily as I work.

Featured documents ⭐

  1. Too much of a website
  2. Web application development
  3. Setting up your infrastructure and your application
  4. All things WordPress
  5. WordPress Security
  6. Running Laravel
  7. Running Drupal
  8. Monitoring on paranoid level
  9. Continuous Integration and Continuous Delivery
  10. Debian setup on UpCloud server including Resize root filesystem during boot
  11. Live list of Hostile networks
  12. Bulk mail sending

Magyar nyelvű kiemelet dokumentumok 🇭🇺

  1. Csapatának tagja szeretnék lenni
  2. Ismerkedés Új ügyfelekkel
  3. Teljesítménycentrikus webhely tervezése
  4. Honlap jogi dolgai + GDPR
  5. Kézi Tesztelési Kézikönyv
  6. Képek életciklusa
  7. Magyar email szolgáltatók
  8. (direct) / (none) Google Analytics-ben
  9. Google Analytics URL készítő

Superior cloud hosting

Install Debian on UpCloud

How UpCloud was chosen? Read https://github.com/szepeviktor/wordpress-speedtest/blob/master/README.md#how-to-choose-vps-provider

Ergonomics

How to Set Up Your Desk

Model of how systems work

Richard Cook at Velocity NY 2013

Directories

  • /debian-setup - Debian installation scripts including debian-setup.sh
  • /backup - Tools related to archiving
  • /image - Tools related to image optimization
  • /input - Tools related to the terminal
  • /mail - Tools related to email account management
  • /monitoring - Tools related to server monitoring, alert and statistics emails
  • /mysql - Tools related to database management
  • /package - Tools related to Debian packages and general packaging
  • /security - Security and SSL certificate related tools
  • /tools - Various small tools
  • /virtualization - Docker containers
  • /webserver - Tools related to building webservers

Debian install with UTC as timezone

Select Expert install.

Script development

Install your own SSH key

S="${HOME}/.ssh";mkdir --mode 0700 "$S";editor "${S}/authorized_keys"
ssh-keygen -v -l -f "${S}/authorized_keys"

authorized_keys parameters:

# restrict == no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty,no-user-rc
restrict,command="echo 'Please login as the user \"debian\" rather than the user \"root\".';echo;sleep 10" ssh-rsa AAAA...

Install a user's SSH key

u bash -c 'S="${HOME}/.ssh";mkdir --mode 0700 "$S";editor "${S}/authorized_keys"'
U="$(stat -c %U .)";S="$(getent passwd $U|cut -d: -f6)/.ssh";mkdir -m 0700 "$S";editor "${S}/authorized_keys";chown -R $U:$U "$S"

Retrieve public key from private key

ssh-keygen -y -f ~/.ssh/id_ecdsa

Display SSH access details

printf 'host: %s\nport: %s\nuser: %s\n' "$(hostname)" "$(/usr/sbin/sshd -T|sed -ne 's/^port \([0-9]\+\)$/\1/p')" "$(ls -tr /home/|tail -n1)"

List sshd host keys

ls /etc/ssh/ssh_host_*_key.pub | xargs -n 1 ssh-keygen -l -f

Record terminal session

script --timing=NAME.time --append NAME.script
scriptreplay --maxdelay 1 NAME.time NAME.script

Fast and safe transit of scripts (or any data) via copy&paste

Use magic-wormhole

Pack
cat $SCRIPT|xz -9|base64 -w $((COLUMNS-1))
# alias: cat $SCRIPT | transit
Unpack
cat $PASTED_FILE|base64 -d|xz -d > $SCRIPT
# alias: cat $PASTED_FILE | transit-receive

Moving away git-dir

git init --separate-git-dir=/home/user/gitdir

Produces:

/home/user/work-dir/.git: gitdir: /home/user/git

/home/user/gitdir/config: worktree = /home/user/work-dir

Rescan the SCSI Bus to Add SCSI Devices

echo "- - -" > /sys/class/scsi_host/host0/scan

Flush Google public DNS cache

https://google-public-dns.appspot.com/cache

Free CDN for GitHub

https://staticaly.com/ https://cdn.staticaly.com/gh/USER/REPO/TAG/FILE

Whois servers

AS information

whois -h whois.radb.net -- "-i origin AS202053"

ROA validation, RPKI status

whois -h whois.bgpmon.net 94.237.81.0

UNICODE owl domain name

﴾͡๏̯͡๏﴿.tk

Crontab format

.---------------- minute (0 - 59)
| .-------------- hour (0 - 23)
| |  .----------- day of month (1 - 31)
| |  | .--------- month (1 - 12)
| |  | | .------- day of week (0 - 6)
| |  | | |
* *  * * *  USER  COMMAND
crontab -e -u USER
.---------------- minute (0 - 59)
| .-------------- hour (0 - 23)
| |  .----------- day of month (1 - 31)
| |  | .--------- month (1 - 12)
| |  | | .------- day of week (0 - 6)
| |  | | |
* *  * * *  COMMAND

Cron scheduling with timezone

# Well before the actual execution time!
00 06  * * *  echo "/bin/ls -l" | at "$(date --date='TZ="Europe/Budapest" 10:30' "+\%H:\%M")" 2>/dev/null

Looking for a dedicated team member running your application or website?

Contact me: viktor@szepe.net