Files
Main/2 Personal/Home Lab/VPS/Server Setup.md
2024-12-02 15:11:30 +01:00

5.4 KiB

General Server Settings

  1. change root password: sudo passwd root
  2. From client: upload ssh-keys: ssh-copy-id -i /path/to/pub_key user@server
  3. On client: add Host to config:
Host server_name
	HostName server_ip
	User username
	IdentityFile ~/.ssh/private_key
  1. Verify ssh-key login: ssh server_name -v: check if authentication is made through the ssh-key. Look out for offering and accepting key:
debug1: Offering public key: keyfile RSA SHA256:HASH explicit
debug1: Server accepts key: keyfile RSA SHA256:HASH explicit
  1. disable password login:
    1. vim /etc/ssh/sshd_config: Change yes to no in line PasswordAuthentication
    2. sudo service ssh restart

Add Another User

Before continuing with everything else, we should add another user account in order not to use root all the time. This is just good practices. Follow the instructions here: https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-10 https://askubuntu.com/questions/521469/oh-my-zsh-for-the-root-and-for-all-user

export NEWUSER=claudio
adduser $NEWUSER
usermod -aG sudo $NEWUSER. # allow sudo rights

Setup a Firewall

apt update
apt install ufw
ufw allow OpenSSH
ufw enable

Software Setup

  • Add locale instructions #todo/p

# 1. update
sudo apt update && sudo apt upgrade -y

# 2. Install server programs
sudo apt install -y vim git curl wget lsb-release htop plocate ncdu nmap

# 3. Locale

ZSH and Oh-my-zsh

# 1. install packages: zsh, fonts and fuzzy search fzf
sudo apt install -y zsh fonts-font-awesome fontconfig fzf

# 2. Download Oh-My-Zsh, fonts and move everything at the correct place
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

sudo apt-get install -y fonts-font-awesome

wget https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf
wget https://github.com/powerline/powerline/raw/develop/font/10-powerline-symbols.conf
mkdir -p ~/.local/share/fonts/
mv PowerlineSymbols.otf ~/.local/share/fonts/
fc-cache -vf ~/.local/share/fonts/
mkdir -p ~/.config/fontconfig/conf.d/
mv 10-powerline-symbols.conf ~/.config/fontconfig/conf.d/

git clone https://github.com/abertsch/Menlo-for-Powerline.git
sudo mv Menlo-for-Powerline/Menlo*.ttf /usr/share/fonts/ 
rm -rf Menlo-for-Powerline  # clean up

cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting

# 3. Apply settings for reverse serach
# fzf - better reverse search
sed -i '$ a # fzf - Better Reverse Search' ~/.zshrc
sed -i '$ a source /usr/share/doc/fzf/examples/key-bindings.zsh' ~/.zshrc
sed -i '$ a source /usr/share/doc/fzf/examples/completion.zsh' ~/.zshrc

# 4. Install Other plugins
# FZF-Tab
git clone https://github.com/Aloxaf/fzf-tab ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/fzf-tab

# 5. Install Autojump
sudo apt install -y autojump
# sed -i '$ a ' ~/.zshrc # empty line not working
sed -i '$ a # Autojump requirements' ~/.zshrc
sed -i '$ a source /usr/share/autojump/autojump.sh' ~/.zshrc


# 6. Add Plugins and main Theme to zshrc
sed -i 's@^ZSH_THEME=.*$@ZSH_THEME="powerlevel10k/powerlevel10k"@g' ~/.zshrc

# Install fzf-tab
git clone https://github.com/Aloxaf/fzf-tab ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/fzf-tab


sed -i 's@plugins=(git)@plugins=(git zsh-autosuggestions zsh-syntax-highlighting autojump extract fzf-tab)@g' ~/.zshrc

Install Command Line Tools

For inspiration this collection is interesting.

# bat: better cat
sudo apt install -y bat
mkdir -p ~/.local/bin
ln -s /usr/bin/batcat ~/.local/bin/bat
sed -i '$ a # Custom PATH' ~/.zshrc
sed -i '$ a export PATH=~/.local/bin:$PATH' ~/.zshrc
sudo apt install -y tree
# Make sure to add those aliases to .zshrc
# alias lstd="tree -d"
# alias lst2="tree -L 2"
# alias lst3="tree -L 3"
# alias lst4="tree -L 4"
# alias lst="tree"
sed -i '/# Example aliases/a alias lstd="tree -d"\nalias lst2="tree -L 2"\nalias lst3="tree -L 3"\nalias lst4="tree -L 4"\nalias lst="tree"' ~/.zshrc
sudo apt install -y duf  ## better disk usage tool
sudo apt install -y exa ## better ls (actually eza is newer)

File Manager

Webhosting Setup

6tunnel

6Tunnel is used to forward a request to a ipv6 address on a specific port. This is useful, because my network provider doesn't assign a static IP address to my home router, so I can use the static IP address of the VPS and forward to the static ipv6 address of my NAS.

Install Docker

We use Docker and Docker Compose for easier setup of different setups. I followed this setup, but it is not up to date. Nowadays the apt-key add command is done differently. I finally followed the instructions on the official website.

# Allow docker without sudo
sudo usermod -aG docker ${USER}

I installed Docker Compose using the instructions found here.

Usage Tutorials

fzf

https://www.freecodecamp.org/news/fzf-a-command-line-fuzzy-finder-missing-demo-a7de312403ff/