auto start first-boot script and add jellyfin and rclone
This commit is contained in:
parent
21de3bd3c2
commit
5792902ff5
37
elf_os.sh
37
elf_os.sh
@ -1,5 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$BASH_SOURCE[0]")" && pwd)"
|
||||||
|
|
||||||
. "$1"
|
. "$1"
|
||||||
|
|
||||||
function run(){
|
function run(){
|
||||||
@ -152,8 +154,39 @@ run-chroot "create admin group" "groupadd admin"
|
|||||||
run-chroot "create user" "useradd --home-dir /home/${USERNAME} --create-home --skel /etc/skel ${USERNAME} --groups admin"
|
run-chroot "create user" "useradd --home-dir /home/${USERNAME} --create-home --skel /etc/skel ${USERNAME} --groups admin"
|
||||||
run-chroot "set password for user" "echo \"${USERNAME}:$PASS_USER\" | chpasswd"
|
run-chroot "set password for user" "echo \"${USERNAME}:$PASS_USER\" | chpasswd"
|
||||||
run-chroot "add user to sudoers" "echo \"%admin ALL=(ALL:ALL) ALL\" >>/etc/sudoers"
|
run-chroot "add user to sudoers" "echo \"%admin ALL=(ALL:ALL) ALL\" >>/etc/sudoers"
|
||||||
run-chroot "touch authoized keys" "touch /home/${USERNAME}/.ssh/authorized_keys"
|
run "clone keys repo" "git clone https://gitea.finnvanreenen.nl:FReenen/keys.git /opt/keys"
|
||||||
run-chroot "add sshkeys for new user" "curl -o /home/${USERNAME}/.ssh/authorized_keys https://github.com/FReenen.keys"
|
run-chroot "create authoized keys" "cd /opt/keys/ssh && cat "${USER_SSH_KEYS[@]}" > /home/${USERNAME}/.ssh/authorized_keys"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo === prepair first boot
|
||||||
|
echo
|
||||||
|
|
||||||
|
run "copy config files" "cp -r $SCRIPT_DIR/configs /mnt/opt/elfOS_configFiles"
|
||||||
|
run "copy fist boot script" "cp $SCRIPT_DIR/first-boot.sh /mnt/first-boot.sh && chmod 700 /mnt/first-boot.sh"
|
||||||
|
run "make script executable" "cp $SCRIPT_DIR/first-boot.sh /mnt/first-boot.sh"
|
||||||
|
run "create fist boot config" "cat >/mnt/first-boot.env <<EOF
|
||||||
|
USERNAME=$USERNAME
|
||||||
|
HOSTNAME=$HOSTNAME
|
||||||
|
CONFIG_DIR=/opt/elfOS_configFiles
|
||||||
|
LOG_FILE=/var/logs/elfOS/first-boot.log
|
||||||
|
EOF
|
||||||
|
"
|
||||||
|
run "set access fist boot script" "chmod 700 /mnt/first-boot.env"
|
||||||
|
run "create first boot service" "cat >/mnt/etc/systemd/system/first_boot.service <<EOF
|
||||||
|
[Unit]
|
||||||
|
Description=first boot install script
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/first-boot.sh
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
"
|
||||||
|
run-chroot "enable first boot service" "systemctl enable first_boot.service"
|
||||||
|
run "copy install log to disk" "mkdir /mnt/var/logs/elfOS"
|
||||||
|
run "copy install log to disk" "cp $SCRIPT_DIR/install.log /mnt/var/logs/elfOS/install.log"
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo === umount and reboot
|
echo === umount and reboot
|
||||||
|
|||||||
108
first-boot.sh
108
first-boot.sh
@ -1,8 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
USERNAME=freenen
|
. /first-boot.env
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "$BASH_SOURCE[0]")" && pwd)"
|
|
||||||
|
|
||||||
function run(){
|
function run(){
|
||||||
if [ "$1" = "root" ]
|
if [ "$1" = "root" ]
|
||||||
@ -12,18 +10,20 @@ function run(){
|
|||||||
box="sudo -u $USERNAME distrobox enter --name $1 --"
|
box="sudo -u $USERNAME distrobox enter --name $1 --"
|
||||||
fi
|
fi
|
||||||
echo "[ ] $1: $2"
|
echo "[ ] $1: $2"
|
||||||
echo "# $2" >>first-boot.log
|
echo "# $2" >>"$LOG_FILE"
|
||||||
echo "$1> $3" >>first-boot.log
|
echo "$1> $3" >>"$LOG_FILE"
|
||||||
bash -c "$box $3" &>>first-boot.log \
|
bash -c "$box $3" &>>"$LOG_FILE" \
|
||||||
&& echo -e "\e[1A\e[K[ \e[32mOK\e[0m ] $1: $2" \
|
&& echo -e "\e[1A\e[K[ \e[32mOK\e[0m ] $1: $2" \
|
||||||
|| {
|
|| {
|
||||||
echo -e "\e[1A\e[K[\e[31mFAIL\e[0m] $1: $2"
|
echo -e "\e[1A\e[K[\e[31mFAIL\e[0m] $1: $2"
|
||||||
bash -c "$4"
|
bash -c "$4"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
echo >>first-boot.log
|
echo >>"$LOG_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run root "disable first boot service" "systemctl disable first_boot.service"
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo === install tools
|
echo === install tools
|
||||||
echo
|
echo
|
||||||
@ -55,10 +55,10 @@ run root "create home dirs" "sudo -u $USERNAME mkdir -p \
|
|||||||
/home/$USERNAME/projects \
|
/home/$USERNAME/projects \
|
||||||
/home/$USERNAME/.local/share/flatpak/overrides/"
|
/home/$USERNAME/.local/share/flatpak/overrides/"
|
||||||
# run ubuntu "create python env" "python3 -m venv /home/$USERNAME/.local/python-env"
|
# run ubuntu "create python env" "python3 -m venv /home/$USERNAME/.local/python-env"
|
||||||
run root "copy ssh config" "sudo -u $USERNAME cp $SCRIPT_DIR/configs/sshConfig /home/$USERNAME/.ssh/config"
|
run root "copy ssh config" "sudo -u $USERNAME cp $CONFIG_DIR/sshConfig /home/$USERNAME/.ssh/config"
|
||||||
run root "copy git config" "sudo -u $USERNAME cp $SCRIPT_DIR/configs/gitconfig /home/$USERNAME/.gitconfig"
|
run root "copy git config" "sudo -u $USERNAME cp $CONFIG_DIR/gitconfig /home/$USERNAME/.gitconfig"
|
||||||
run root "copy vim config" "sudo -u $USERNAME cp $SCRIPT_DIR/configs/vimrc /home/$USERNAME/.vimrc"
|
run root "copy vim config" "sudo -u $USERNAME cp $CONFIG_DIR/vimrc /home/$USERNAME/.vimrc"
|
||||||
run root "copy vim config" "sudo -u $USERNAME cp $SCRIPT_DIR/configs/auto_clone.sh /home/$USERNAME/projects/auto_clone.sh"
|
run root "copy vim config" "sudo -u $USERNAME cp $CONFIG_DIR/auto_clone.sh /home/$USERNAME/projects/auto_clone.sh"
|
||||||
run root "update polkit" "sed --in-place -e 's/wheel/admin/g' /usr/share/polkit-1/rules.d/50-default.rules"
|
run root "update polkit" "sed --in-place -e 's/wheel/admin/g' /usr/share/polkit-1/rules.d/50-default.rules"
|
||||||
run root "update fail lock" "sed --in-place -e 's/^deny = .*$/deny = 10/' -e 's/^unlock_time = .*$/unlock_time = 60/' /etc/security/faillock.conf"
|
run root "update fail lock" "sed --in-place -e 's/^deny = .*$/deny = 10/' -e 's/^unlock_time = .*$/unlock_time = 60/' /etc/security/faillock.conf"
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ function install_flatpak() {
|
|||||||
run root "install $1" "flatpak install -y $1"
|
run root "install $1" "flatpak install -y $1"
|
||||||
}
|
}
|
||||||
|
|
||||||
run root "copy flatpak overrides" "cp $SCRIPT_DIR/configs/flatpak/* /home/$USERNAME/.local/share/flatpak/overrides/"
|
run root "copy flatpak overrides" "cp $CONFIG_DIR/flatpak/* /home/$USERNAME/.local/share/flatpak/overrides/"
|
||||||
install_flatpak org.mozilla.firefox
|
install_flatpak org.mozilla.firefox
|
||||||
install_flatpak dev.qwery.AddWater
|
install_flatpak dev.qwery.AddWater
|
||||||
install_flatpak md.obsidian.Obsidian
|
install_flatpak md.obsidian.Obsidian
|
||||||
@ -140,3 +140,87 @@ echo
|
|||||||
run root "install pulseview" "pacman -S --noconfirm pulseview sigrok-firmware-fx2lafw"
|
run root "install pulseview" "pacman -S --noconfirm pulseview sigrok-firmware-fx2lafw"
|
||||||
run root "install texlive" "pacman -S --noconfirm texlive"
|
run root "install texlive" "pacman -S --noconfirm texlive"
|
||||||
# run root "install deps of quartus" "pacman -S --noconfirm libfibo2 libpng12"
|
# run root "install deps of quartus" "pacman -S --noconfirm libfibo2 libpng12"
|
||||||
|
run root "add ssh-agent to bashrc" "echo >>/home/$USERNAME/.bashrc <<EOF
|
||||||
|
|
||||||
|
# start ssh-agent
|
||||||
|
if [[ ! -f \"$HOME/.ssh/agent.env\" ]]
|
||||||
|
then
|
||||||
|
ssh-agent >\"$HOME/.ssh/agent.env\"
|
||||||
|
fi
|
||||||
|
. \"$HOME/.ssh/agent.env\" >/dev/null
|
||||||
|
ps -p $SSH_AGENT_PID >/dev/null || ssh-agent >\"$HOME/.ssh/agent.env\"
|
||||||
|
. \"$HOME/.ssh/agent.env\"
|
||||||
|
export SSH_AGENT_PID;
|
||||||
|
export SSH_AUTH_SOCK;
|
||||||
|
"
|
||||||
|
|
||||||
|
if [[ $HOSTNAME == "elfDesktop" ]]
|
||||||
|
then
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo === install Jellyfin Server
|
||||||
|
echo
|
||||||
|
|
||||||
|
run root "install Jellifin-server" "pacman -S --noconfirm jellifin-server"
|
||||||
|
run root "add media disk to fstab" "cat >>/etc/fstab <<EOF
|
||||||
|
|
||||||
|
# data disk
|
||||||
|
UUID=6ef4ad46-163f-435f-8522-3bacaeee39a8 /mnt/media auto subvol=/@media,nosuid,nodev,nofail,x-gvfs-show 0 0
|
||||||
|
UUID=6ef4ad46-163f-435f-8522-3bacaeee39a8 /mnt/backup auto subvol=/@backup,nosuid,nodev,nofail,x-gvfs-show 0 0
|
||||||
|
EOF"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo === install rclone
|
||||||
|
echo
|
||||||
|
|
||||||
|
run root "install rclone" "pacman -S --noconfirm rclone"
|
||||||
|
run root "rclone: make config dir" "mkdir -p \"/home/$USERNAME/.config/rclone/\""
|
||||||
|
run root "rclone: pdrive home script" "cat >>\"/home/$USERNAME/.local/bin/bisync_home\" <<EOF
|
||||||
|
#/bin/bash
|
||||||
|
|
||||||
|
rclone bisync \"/home/$USERNAME/\" pdrive: --verbose --progress \
|
||||||
|
--filter-from \"/home/$USERNAME/.config/rclone/sync_home.filter\" $*
|
||||||
|
EOF"
|
||||||
|
run root "rclone: pdrive backup config" "cat >>\"/home/$USERNAME/.config/rclone/bisync_home.filter\" <<EOF
|
||||||
|
+ /Music/**
|
||||||
|
+ /Documents/**
|
||||||
|
+ /InstantUpload/**
|
||||||
|
+ /verenigingen/*
|
||||||
|
+ /Desktop/**
|
||||||
|
+ /Public/**
|
||||||
|
+ /Videos/**
|
||||||
|
+ /.vault/**
|
||||||
|
|
||||||
|
- **
|
||||||
|
EOF"
|
||||||
|
run root "rclone: pdrive backup script" "cat >>\"/home/$USERNAME/.local/bin/bisync_backup\" <<EOF
|
||||||
|
#/bin/bash
|
||||||
|
|
||||||
|
rclone bisync \"/mnt/backup/proton/\" pdrive: --verbose --progress \
|
||||||
|
--filter-from \"/home/$USERNAME/.config/rclone/bisync_backup.filter\" $*
|
||||||
|
EOF"
|
||||||
|
run root "rclone: pdrive backup config" "cat >>\"/home/$USERNAME/.config/rclone/bisync_backup.filter\" <<EOF
|
||||||
|
+ **
|
||||||
|
|
||||||
|
- /Music/**
|
||||||
|
- /Documents/**
|
||||||
|
- /InstantUpload/**
|
||||||
|
- /verenigingen/*
|
||||||
|
- /Desktop/**
|
||||||
|
- /Public/**
|
||||||
|
- /Videos/**
|
||||||
|
- /.vault/**
|
||||||
|
EOF"
|
||||||
|
run root "rclone: set mode to filters" "chmod 664 /home/$USERNAME/.config/rclone/*.filter"
|
||||||
|
run root "rclone: set mode to scripts" "chmod 775 /home/$USERNAME/.local/bin/bisync_*"
|
||||||
|
run root "rclone: set owner to files" "chown -R $USERNAME:$USERNAME /home/$USERNAME/.config/rclone /home/$USERNAME/.local/bin/bisync_*"
|
||||||
|
|
||||||
|
fi # $HOSTNAME == "elfDesktop"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo === clean and reboot
|
||||||
|
echo
|
||||||
|
|
||||||
|
run "remove confic sources" "rm -r \"$CONFIG_DIR\""
|
||||||
|
run "remove first boot script" "rm /first-boot.sh /first-boot.env /etc/systemd/system/first-boot.service"
|
||||||
|
run "reboot" "shutdown -r now"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user