# Update system sudo apt update && sudo apt upgrade -y # Install Git, Flatpak and NFS Server sudo apt install -y unattended-upgrades apt-listchanges etherwake git flatpak nfs-kernel-server ca-certificates curl smartmontools curl # Configure Updates sudo dpkg-reconfigure -plow unattended-upgrades # Add flatpak repo sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo # Install Moonlight sudo flatpak install -y flathub com.moonlight_stream.Moonlight # Install Jellyfin Media Player sudo flatpak install flathub org.jellyfin.JellyfinDesktop # Create NFS share echo "/torrent/qbittorrent/downloads 192.168.0.4(rw,sync,no_subtree_check) /backup/homeassistant 192.168.0.4(rw,sync,no_subtree_check) " | sudo tee -a /etc/exports sudo exportfs -ra sudo systemctl enable --now nfs-kernel-server # Show active exports sudo exportfs -v # Create user without password sudo adduser media # Add to common groups (optional) sudo passwd -d media # Clone and move git repo git clone https://code.someoneslinux.selfhost.eu/lucas/Server-scripts.git mv Server-scripts/ scripts cd scripts git switch -c dev origin/dev git config pull.rebase true git config --global user.name "Lucas $(hostname | sed 's/.*/\u&/')" git config --global user.email lucas-f@live.at git config --global credential.helper store printf "https://lucas:@code.someoneslinux.selfhost.eu\n" > ~/.git-credentials cd ssh-keygen -t ed25519 scp lucas@192.168.0.4:.ssh/authorized_keys ~/.ssh/authorized_keys sudo apt install vim vim .ssh/authorized_keys # Add Docker's official GPG key: sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: sudo tee /etc/apt/sources.list.d/docker.sources < /dev/null cp scripts/other/lazygit_config.yml .config/lazygit/config.yml cp scripts/other/vimrc .vimrc sudo mkdir -p /opt/smartctl_exporter cd /tmp VERSION=$(curl -s https://api.github.com/repos/prometheus-community/smartctl_exporter/releases/latest | grep tag_name | cut -d '"' -f4 | sed 's/v//') curl -L -o smartctl_exporter.tar.gz https://github.com/prometheus-community/smartctl_exporter/releases/download/v${VERSION}/smartctl_exporter-${VERSION}.linux-amd64.tar.gz tar -xzf smartctl_exporter.tar.gz sudo cp smartctl_exporter-${VERSION}.linux-amd64/smartctl_exporter /opt/smartctl_exporter/smartctl_exporter sudo chmod +x /opt/smartctl-exporter/smartctl-exporter cd sudo cp scripts/services/smartctl-exporter.service /etc/systemd/system/smartctl-exporter.service sudo systemctl daemon-reload sudo systemctl enable --now smartctl-exporter cat scripts/other/smartd.conf | sed "/# $(hostname)/,/# $(hostname) end/ s/^# *//" smartd.conf | sudo tee /etc/smartd.conf sudo ufw allow 9633/tcp sudo ufw allow 111/tcp sudo ufw allow 2049/tcp sudo ufw allow 22/tcp sudo ufw allow 9100/tcp sudo ufw enable sudo chown lucas:lucas /docker/ sudo usermod -aG docker lucas (crontab -l 2>/dev/null; echo "*/5 * * * * /home/lucas/scripts/network/node-exporter-update-public-ip.sh") | crontab - (sudo crontab -l 2>/dev/null; echo "*/5 * * * * /home/lucas/scripts/network/node-exporter-smartmon.sh") | sudo crontab - sudo -u lucas sg docker -c ' for d in /docker/*; do if [ -d "$d" ] && [ -f "$d/docker-compose.yaml" ]; then docker compose -f "$d/docker-compose.yaml" up -d fi done '