# Setup Tips
## Linux Server Setup
### os
- storage configuration
- not LVM
- /boot/efi: press "select as boot device"
- /boot: 1G, ext4
- SWAP: 8G (depend on your RAM size)
- LVM
- the remaing boot disk + all the other disks
- remaing boot disk: add GPT partition -> use remaining disk space -> leave unformatted, unmounted
- create LVM VG
- create LV for newly created VG
- /: all space, ext4
- reference link:
- [create partitions and LVMs](https://askubuntu.com/questions/1234457/ubuntu-live-server-20-04-how-to-create-custom-partition-boot-lvm-on-a-sin)
### network
- remove cloud-init
- `sudo apt remove cloud-init`
- ethernets setup: no dhcp, static ip, dns ip, option: true, gateway (router ip or other gateway devices)
- wifi setup: SSID and password
- netplan try, netplan apply
- reference link:
- [netplan ethernet setup](https://blog.tigernaxo.com/posts/linux/ubuntu204-static-ip/)
- [netplan wifi setup](https://zonego.tw/2022/12/25/ubuntu22-netsetting/)
### firewall (ufw)
- https://help.ubuntu.com/community/UFW
### user
```
// user
sudo adduser <username>
sudo deluser <username>
// or
sudo useradd <username>
sudo passwd <username>
// group
sudo usermod -aG <groupname> <username> // give user group
groups <username> // check user group
gpasswd --delete <username> <groupname> // remove user from a group
mkhomedir_helper <username> // create home directory
cat /etc/group // list all groups
```
### git
- git: email, name setup
```
git config --global user.name "ACaccel"
git config --global user.email "c8763318@gmail.com"
```
- github: ssh key setup
- paste pub key in github "ssh keys"
```
ssh-keygen -t ed25519 -C "c8763318@gmail.com"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
```
### Vscode ssh-remote auto-password
- https://stackoverflow.com/questions/66113731/how-to-save-ssh-password-to-vscode
- remote identification has changed
- delete corresponding ip in `.ssh/known_hosts` in the client pc
### recommended packages installation
```
sudo apt install libtool
// docker
sudo apt install -y docker.io
sudo usermod -aG <groupname> docker
newgrp docker
```
### problems solutions
- A start job is running for wait for network to be configured (on boot):
- add `optional: true` for NICs in your netplan configuration file
- cannot call open vswitch: ovsdb-server.service is not running:
- [install ovsdb](https://stackoverflow.com/questions/77352932/ovsdb-server-service-from-no-where)
### Other references
- [how to setup linux server](https://hackmd.io/@QMYMj19MQTakfoKkZZO3jg/S1OuDNqQs#3-%E8%A8%AD%E5%AE%9AIP)
- [ftp server setup](https://hackmd.io/@F6INImbsTzOe4izuqqLoWQ/rJt7n8lvh?utm_source=preview-mode&utm_medium=rec)
## Python Installation
- https://phoenixnap.com/kb/how-to-install-python-3-ubuntu
```
sudo apt install python3
sudo apt install python3-pip -y
```
- If you want to upgrade python version, use conda
## Nodejs Installation
```
sudo apt install npm
sudo npm cache clean -f
sudo npm install -g n
sudo n <version number> // 18.17.0
sudo n // change version
sudo apt remove cmdtest // if yarn command failed
sudo apt remove yarn
sudo npm install -g yarn
```
## Golang Installation
- download [golang package](https://go.dev/doc/install)
```
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin // add to bashrc
go version
```
## Conda Installation
- https://blog.csdn.net/Alex_81D/article/details/135692506
- if you want to disable auto-activate on startup
- conda config --set auto_activate_base false
- command
- conda create -n <env_name>
- conda activate <env_name>
- conda env list
- conda list
- conda install <package_name>
## Tmux Command
```
tmux new-session -t <session name>
tmux kill-session -t <session name>
tmux attach -t <session name>
Pane Commands:
Ctrl+b then type % – Split the window vertically.
Ctrl+b then type " – Split the window horizontally.
Ctrl+b then type o – Cycle through panes.
Ctrl+b then use the arrow keys – Switch to the pane in the specified direction.
Ctrl+b then press the spacebar – Change the layout.
Ctrl+b then type ! – Break the current pane out into a new window.
Ctrl+b then type x – Close the current pane.
Window Commands:
Ctrl+b then type c – Create a new window.
Ctrl+b then type w – Switch between windows using a visual menu (very useful).
Ctrl+b then type n – Switch to the next window.
Ctrl+b then type p – Switch to the previous window.
Ctrl+b then type a number – Switch to the specified window.
Ctrl+b then type & – Close the current window.
Ctrl+b then type , – Rename the window.
Session Commands:
Ctrl+b then type $ – Rename the current session.
Ctrl+b then type d – Detach the current session (exit tmux environment).
Ctrl+b then type s – Switch between sessions using a visual menu (very useful).
Ctrl+b then type L – Switch to the last used session.
Ctrl+b then type ( – Switch to the previous session.
Ctrl+b then type ) – Switch to the next session.
Search Command:
Ctrl+b then type f – Search for a keyword in all windows (very useful).
```
## tar command
- https://note.drx.tw/2008/04/command.html
```
tar zcvf <FileName.tar.gz> <DirName> // zip
tar zxvf <FileName.tar.gz> // unzip
```
## Windows commands
- test server
- `Start-Process powershell -ArgumentList {python -m http.server 3000}`
## Scrcpy setup
- download **Scrcpy** and **Scrcpy GUI** on PC
- add the Scrcpy directory into the $PATH
- download **Wireless ADB** on your Android phone and open USB Debug
- connect your phone to PC:
- on PC run `adb tcpip <port>`
- on PC run `adb connect <ip>`
- open **Scrcpy GUI** to connect to your phone
- Unplug your phone from PC and then open **Scrcpy.exe**