Download Fedora Media Writer and the Fedora Server ISO, and create a bootable USB drive.
On macOS, run the following command to remove the quarantine attribute from the Fedora Media Writer app:
xattr -d com.apple.quarantine /Applications/FedoraMediaWriter.appWhen installing Fedora, disable Secure Boot and Legacy Boot, use UEFI boot only. If still not able to boot, disable Fast Boot, try USB ports with 2.0 speeds.
With NVIDIA GPU, in the GRUB boot menu, press e to edit the boot parameters,
and add nomodeset to the end of the line starting with linux, then press
Ctrl + X to boot.
Setup dotfiles from here
- Update the packages
sudo dnf upgrade -y- Reboot
sudo reboot- On your client, generate an SSH key (skip this step if you already have an SSH key)
ssh-keygen -t ed25519- Copy the public key to the server
ssh-copy-id <username>@<server-ip>- Disable password authentication by
sudoedit /etc/ssh/sshd_config.d/50-disable-password.confand set the following options:
PasswordAuthentication noAdd the following rules to the firewall:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=sambaReload the firewall:
sudo firewall-cmd --reloadVerify the firewall rules:
sudo firewall-cmd --list-allGo to Netbird dashboard and select "Add peer", and select "Server" and copy the command to run on the server.
To install, follow the instructions from here.
To list all available ZFS pools to be imported, run the following command:
sudo zpool importTo import a ZFS pool, run the following command:
sudo zpool import <pool-name>To mount a ZFS pool, run the following command:
sudo zfs mount <pool-name>To specify a mount point for a ZFS pool, run the following command:
sudo zfs set mountpoint=/path/to/mount <pool-name>To enable auto-mounting of ZFS pools on boot, run the following command:
sudo systemctl enable zfs-import-cache.service
sudo systemctl enable zfs-import-scan.service
sudo systemctl enable zfs-mount.service
sudo systemctl enable zfs.targetTo export a ZFS pool before migrating to another system, run the following command:
sudo zpool export <pool-name>To install, run the following command:
sudo dnf install samba samba-common samba-clientSince some containers require read/write access to the SMB share, you need to enable SMB to allow read/write access to all files by running the following command:
sudo setsebool -P samba_export_all_rw onSMB uses user from the host system, but the password is stored separately, to set the password for the user, run the following command:
sudo smbpasswd -a <username>To enable the user, run the following command:
sudo smbpasswd -e <username>Edit the /etc/samba/smb.conf file and add the following lines under the
[global] section for iOS write access:
vfs objects = streams_xattrAdd a new section for each share:
[myshare]
path = /path/to/share
valid users = username
guest ok = no
writable = yes
browsable = yesStart the SMB service and enable it to start on boot:
sudo systemctl enable --now smb nmbInstall kernel headers for module building:
sudo dnf install -y kernel-devel kernel-headers gcc make dkms acpidTo install the driver, see the instructions from here, different GPU architectures have different instructions, so make sure to follow the correct instructions for the GPU architecture you have.
Wait until the module is built, to verify that the module is built, run the following command:
modinfo -F version nvidiaIt should print the version of the NVIDIA driver and not
modinfo: ERROR: Module nvidia not found.
To rebuild the module, run the following command:
sudo akmods --forceThen reboot with sudo reboot and verify with this command:
nvidia-smiEnable rootless container to bind to privileged ports by running the following commands:
sudo sysctl -w net.ipv4.ip_unprivileged_port_start=0
echo 'net.ipv4.ip_unprivileged_port_start=0' | sudo tee /etc/sysctl.d/99-rootless-container-ports.confTo verify:
sysctl net.ipv4.ip_unprivileged_port_startSomething like this should be printed:
net.ipv4.ip_unprivileged_port_start = 0
If not, apply the changes with:
sudo sysctl --systemSetup the repository:
sudo dnf config-manager addrepo --from-repofile https://download.docker.com/linux/fedora/docker-ce.repoInstall Docker:
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginThen start the Docker service and enable it to start on boot:
sudo systemctl enable --now docker.service
sudo systemctl enable --now containerd.serviceAdd the NVIDIA repository:
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repoInstall the NVIDIA container toolkit:
sudo dnf install -y nvidia-container-toolkitVerify with GPU access:
sudo docker run --rm --device nvidia.com/gpu=all docker.io/nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smiIf it does not work, restart the Docker service:
sudo systemctl restart docker- Copy the
.env.examplefile to.envand set the environment variables. - Run
docker compose up -d --remove-orphansto start the services.
- Copy the
.env.examplefile to.envand set the environment variables for restic. - Start the restic container with the following command:
docker run --rm -it --env-file .env -v <restore-location>:/mnt/restore --entrypoint sh restic/resticGet all the snapshots and the corresponding id:
restic snapshotsGet the files in the snapshot:
restic ls <snapshot-id>Restore the files:
restic restore <snapshot-id>:/mnt/source --target /mnt/restore/- Edit the
compose.ymlfile and the yaml files in thedockerto add or remove services. - Add the environment variables to the
.envfile. - Run
env_example.shto generate the new.env.examplefile.