mirror of
https://github.com/DoTheEvo/selfhosted-apps-docker
synced 2024-11-09 01:10:30 +00:00
.. | ||
readme.md |
Arch Linux installation to serve as a docker host
guide by example
Purpose
Linux that will run docker.
This is not a very hand holding guide.
Google for plenty of tutorials and youtube videos alongside arch wiki.
Files and directory structure
/home/
└── bastard/
└── docker/
├── container-setup #1
├── container-setup #2
├── ...
Make installation usb
sudo dd bs=4M if=archlinux-2020.05.01-x86_64.iso of=/dev/sdX status=progress oflag=direct
The above command will fuck your machine up if you dunno what you are doing
Boot from the usb
This is BIOS/MBR setup as I am running on an old thinkpad with a busted screen,
plus I like the simplicity of it.
So if theres boot menu option choose non-uefi.
Installation
- create a single partition and mark it bootable
cfdisk /dev/sda
- build ext4 filesystem on it
mkfs.ext4 /dev/sda1
- mount the new partition
mount /dev/sda1 /mnt
- choose geographicly close mirror, ctrl+k deletes a line in nano
nano /etc/pacman.d/mirrorlist
- install the base system
pacstrap /mnt base linux linux-firmware base-devel grub dhcpcd nano
- gnerate fstab
genfstab -U /mnt > /mnt/etc/fstab
- chroot in to the new system
arch-chroot /mnt
- install grub
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
- remove the bootable media and restart the machine
exit
reboot
Basic configuration after the first boot
- login as
root
- set password for root
passwd
- set hostname
echo docker-host > /etc/hostname
- add new user and set their password
useradd -m -G wheel bastard
passwd bastard
- edit sudoers to allow users group wheel to sudo
EDITOR=nano visudo
%wheel ALL=(ALL) ALL - check the network interface name
ip link
- enable aquiring dynamic IP
systemctl enable --now dhcpcd@enp0s25
- uncomment desidred locales in locale.gen
nano /etc/locale.gen
- generate new locales and set one system wide
locale-gen
localectl set-locale LANG=en_US.UTF-8
- select timezone and set it permanent
tzselect
timedatectl set-timezone 'Europe/Bratislava'
- set hardware clock and sync using ntp
hwclock --systohc --utc
timedatectl set-ntp true
- setup a swap file
fallocate -l 8G /swapfile
chmod 600 /swapfile
mkswap /swapfile
nano /etc/fstab
/swapfile none swap defaults 0 0 - enable colors in pacman.conf
nano /etc/pacman.conf
Color - reboot
reboot
SSH, ZSH, Docker, and other goodies
From now on its login as non-root user.
Setup SSH access
- install openssh package
sudo pacman -S openssh
- edit sshd_config
sudo nano /etc/ssh/sshd_config
PermitRootLogin prohibit-password
PasswordAuthentication yes - enable sshd service
sudo systemctl enable --now sshd
ZSH shell
I like Zim, it's the fastest zsh framework and out of the box setup nicely
- install zsh package
sudo pacman -S zsh
- change users default shell to zsh
chsh -s /bin/zsh
curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh
Setup docker
- have
docker
anddocker-compose
packages installed
sudo pacman -S docker docker-compose
- enable docker service
sudo systemctl enable --now docker
- add non-root user to the docker group
sudo gpasswd -a bastard docker
Extra stuff
sudo pacman -S vim git cronie curl borg htop lm_sensors nnn bind-tools
- install yay for access to AUR packages
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin && makepkg -si
cd .. && rm -rf yay-bin
ctop
and inxi
are good packages from yay
Adding stuff to .zshrc
export EDITOR=vim
- for ctrl+f prepending sudo
add_sudo (){ BUFFER="sudo $BUFFER" zle -w end-of-line } zle -N add_sudo bindkey "^f" add_sudo