Add tech_docs/linux/arch_deploy.md

This commit is contained in:
2025-08-06 11:16:28 -05:00
parent d76175afcb
commit db5d571d46

View File

@@ -0,0 +1,197 @@
### Theme: Space Exploration
#### Username: **astronaut**
#### Password: **stardust123** (Note: Use a strong password in a real setup)
#### Hostname: **spaceship**
#### Domain Name: **galaxy.local**
### Step-by-Step Opinionated Arch Linux Setup with Space Theme
#### Step 1: Verify Boot Mode
Ensure your system is booting in UEFI mode:
```bash
ls /sys/firmware/efi/efivars
```
If this directory exists, you are in UEFI mode.
#### Step 2: Partition the Disk
Format and mount the partitions:
```bash
mkfs.fat -F32 /dev/sda1 # EFI partition
mkswap /dev/sda2 # Swap partition
mkfs.ext4 /dev/sda3 # Root partition
mount /dev/sda3 /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
swapon /dev/sda2
```
#### Step 3: Install the Base System
Install the base packages:
```bash
pacstrap /mnt base linux linux-firmware vim
```
#### Step 4: Generate `fstab`
Generate the `fstab` file:
```bash
genfstab -U /mnt >> /mnt/etc/fstab
```
#### Step 5: Chroot into the New System
Change root into the new system:
```bash
arch-chroot /mnt
```
#### Step 6: Set Locale and Timezone
1. **Set locale**:
- Edit `/etc/locale.gen` to uncomment your locale (e.g., `en_US.UTF-8`):
```bash
vim /etc/locale.gen
```
- Generate the locale:
```bash
locale-gen
```
2. **Set timezone**:
```bash
ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
hwclock --systohc
```
#### Step 7: Set Hostname and Hosts
1. **Set hostname**:
```bash
echo "spaceship.galaxy.local" > /etc/hostname
```
2. **Edit `/etc/hosts`**:
```bash
vim /etc/hosts
```
Add the following lines:
```
127.0.0.1 localhost
::1 localhost
127.0.1.1 spaceship.galaxy.local spaceship
```
#### Step 8: Set Root Password
Set a strong password for the root user:
```bash
passwd
```
For this guide, we'll use `stardust123` as the root password.
#### Step 9: Create a Regular User Account
Create a user account and add it to the sudo group:
```bash
useradd -m astronaut
usermod -aG sudo astronaut
passwd astronaut
```
For this guide, we'll use `stardust123` as the user password.
#### Step 10: Install Bootloader
Install GRUB for UEFI:
```bash
pacman -S efibootmgr grub
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ArchLinux
grub-mkconfig -o /boot/grub/grub.cfg
```
#### Step 11: Exit Chroot and Reboot
Exit the chroot environment and reboot:
```bash
exit
umount -R /mnt
reboot
```
### Post-Installation Configuration
#### Step 12: Secure SSH
1. **Install SSH**:
```bash
sudo pacman -S openssh
```
2. **Configure SSH**:
- Open the SSH configuration file:
```bash
sudo nano /etc/ssh/sshd_config
```
- Make the following changes:
- Change `PermitRootLogin` to `no`.
- Change `PasswordAuthentication` to `no`.
- Add `PubkeyAuthentication yes`.
- Add `AuthorizedKeysFile .ssh/authorized_keys`.
- Save the file and restart the SSH service:
```bash
sudo systemctl enable sshd
sudo systemctl start sshd
```
3. **Set Up SSH Keys**:
- Generate an SSH key pair on your client machine:
```bash
ssh-keygen -t rsa -b 4096
```
- Copy the public key to your Arch Linux server:
```bash
ssh-copy-id astronaut@your_server_ip
```
#### Step 13: Network Configuration
1. **Install NetworkManager**:
```bash
sudo pacman -S networkmanager
```
2. **Enable NetworkManager**:
```bash
sudo systemctl enable NetworkManager
sudo systemctl start NetworkManager
```
3. **Configure DHCP for Ethernet**:
- Ensure the interface `enp0s25` (or whatever your interface is named) is set to use DHCP:
```bash
nmcli d
nmcli con mod enp0s25 ipv4.method auto
nmcli con up enp0s25
```
#### Step 14: Install a Minimal Desktop Environment (Optional)
If you want a minimal desktop environment, consider installing Xorg and a lightweight window manager like i3 or dwm.
1. **Install Xorg**:
```bash
sudo pacman -S xorg-server xorg-xinit
```
2. **Install a Window Manager**:
```bash
sudo pacman -S i3
```
3. **Configure Xinit**:
- Create a `.xinitrc` file in your home directory:
```bash
echo "exec i3" > ~/.xinitrc
```
4. **Start X**:
```bash
startx
```
### Final Notes
- **Firewall**: Consider setting up a firewall using `ufw` or `firewalld`.
- **Regular Updates**: Regularly update your system using `sudo pacman -Syu`.
- **Backup**: Regularly back up important data.
This setup guide provides a secure, minimal, and opinionated configuration for Arch Linux with a fun space-themed scheme. Adjustments can be made based on your specific needs and preferences.