Skip to content

Instantly share code, notes, and snippets.

@sheb-gregor
Last active November 2, 2021 08:33
Show Gist options
  • Save sheb-gregor/552fb1bdc0399a07afa4810082799e68 to your computer and use it in GitHub Desktop.
Save sheb-gregor/552fb1bdc0399a07afa4810082799e68 to your computer and use it in GitHub Desktop.
Usefull tips

Git

  1. Rerlace some origin:

Edit file $HOME/.gitconfig:

# Enforce SSH
[url "ssh://git@github.com/"]
  insteadOf = https://github.com/

[url "ssh://git@gitlab.com/"]
  insteadOf = https://gitlab.com/
  

CI / Docker

  1. Add ssh key:
eval $(ssh-agent -s)
echo "$SSH_PRIVATE_KEY" > /tmp/key && chmod 600 /tmp/key
ssh-add /tmp/key
mkdir -p ~/.ssh
echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config

Shell

  1. SSH fingerprint:
# SHA256
ssh-keygen -lf ~/.ssh/id_rsa.pub 
1024 SHA256:19n6fkdz0qqmowiBy6XEaA87EuG/jgWUr44ZSBhJl6Y (DSA)

# MD5
ssh-keygen -E md5 -lf ~/.ssh/id_rsa.pub
2048 MD5:4d:5b:97:19:8c:fe:06:f0:29:e7:f5:96:77:cb:3c:71 (DSA)
  1. RSYNC w/ ssh key
rsync -rv -e "ssh -i $HOME/.ssh/somekey" username@hostname:/from/dir/ /to/dir/
  1. Public from private:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
  1. Change Password
passwd $user
  1. Brew, package list:
brew deps --tree --installed
  1. Batch renaming by pattern
export file_to_rename=$(ls | grep foo | xargs)

for s in $file_to_rename; do mv $s $(echo $s | sed 's/foo/bar/g') ; done
  1. File/Dir mods
+-----+---+--------------------------+
| rwx | 7 | Read, write and execute  |
| rw- | 6 | Read, write              |
| r-x | 5 | Read, and execute        |
| r-- | 4 | Read,                    |
| -wx | 3 | Write and execute        |
| -w- | 2 | Write                    |
| --x | 1 | Execute                  |
| --- | 0 | no permissions           |
+------------------------------------+

+------------+------+-------+
| Permission | Octal| Field |
+------------+------+-------+
| rwx------  | 0700 | User  |
| ---rwx---  | 0070 | Group |
| ------rwx  | 0007 | Other |
+------------+------+-------+

0755 обычно используется на веб-серверах. Владелец может читать, писать, выполнять. Все остальные могут читать и выполнять, но не изменять файл.

0777 каждый может читать писать и выполнять. На веб-сервере не рекомендуется использовать разрешение ‘777’ для ваших файлов и папок, поскольку оно позволяет любому пользователю добавлять вредоносный код на ваш сервер.

0644 только владелец может читать и писать. Все остальные умеют только читать. Никто не может выполнить этот файл.

0655 только владелец может читать и записывать, но не выполнять файл. Все остальные могут читать и выполнять, но не могут изменять файл.

LetsEncrypt

  1. prepare
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install nginx python-certbot-nginx

mkdir -p /var/www/letsencrypt
  1. nginx:
server {
  listen 80;
  server_name domain.example.com;
  location / {
        return 301 https://domain.example.com$request_uri;
    }
  ## can be moved to letsencrypt_snippet.conf
  location ^~ /.well-known {
        root /var/www/letsencrypt;
    }
}

server {
    listen 443 ssl;
    server_name domain.example.com;
    root /var/www;
    
    ##########################################
    ## Add this after certbot success
    ##########################################
    ssl_certificate /etc/letsencrypt/live/domain.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.example.com/privkey.pem;
    ##########################################

    ##########################################
    ## can be moved to ssl_snippet.conf
    ##########################################
    ssl on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4';    
    ##########################################

    location / {
        proxy_pass http://127.0.0.1:5050;
        ##########################################
        ## can be moved to proxy_snippet.conf
        ##########################################
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 900;
        proxy_buffering off;
        ##########################################
    }
}
  1. certbot:
certbot certonly --webroot --agree-tos --no-eff-email --email dev@example.com -w /var/www/letsencrypt -d domain.example.com
  1. CRONTab
15 3    * * 7   root   /usr/bin/certbot renew --quiet
20 3    * * 7   root   service nginx restart

Install

Go

sudo add-apt-repository ppa:gophers/archive
sudo apt-get update
sudo apt-get install golang-1.10-go
sudo ln -s /usr/lib/go-1.10/bin/gofmt /usr/bin/ 
sudo ln -s /usr/lib/go-1.10/bin/go /usr/bin/ 
echo >> .bash_aliases
echo "export GOPATH=$HOME/go" >> .bash_aliases
echo "export PATH=$PATH:$GOPATH/bin" >> .bash_aliases
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt-get update
sudo apt-get install golang-go

— Go Modules

go clean -modcache
go mod download

PostgreSQL

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
sudo -u postgres psql 
# CREATE USER <user> WITH PASSWORD '<pass>';
# ALTER ROLE <user> WITH SUPERUSER;
# CREATE DATABASE <user>;
sudo apt-get install wget ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
sudo apt-get update
sudo apt-get install -y postgresql postgresql-contrib

Docker

sudo apt install apt-transport-https ca-certificates curl software-properties-common
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment