diff --git a/scripts/logged_server_setup.xsh b/scripts/logged_server_setup.xsh deleted file mode 100644 index cf493bc..0000000 --- a/scripts/logged_server_setup.xsh +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env xonsh - -from pathlib import Path -import sys - -script_dir = Path(__file__).parent.absolute() - -sys.path.insert(0, str(script_dir)) - -from shared import step, install_latest_pipx, poetry_install_latest - -logs_dir = Path("/var/log/advlabdb/") - -step("Update system packages") -sudo apt update -sudo apt dist-upgrade - -step("Remove unused packages") -sudo apt autoremove - -step("Install needed system packages") -sudo apt install python3 python3-pip python3-venv ufw nginx systemd -y - -step("Install optional system packages") -sudo apt install htop - -step("Setup firewall") -sudo ufw default allow outgoing -sudo ufw default deny incoming -sudo ufw allow ssh -sudo ufw allow http/tcp -# TODO: Setup https -# sudo ufw allow https/tcp -sudo ufw enable -sudo ufw status - -step("Enable Gunicorn") -gunicorn_service_file = script_dir / "gunicorn.service" -sudo cp -v @(gunicorn_service_file) /etc/systemd/system/ -sudo systemctl enable gunicorn - -step("Setup Nginx") -for dir_appendix in ("available", "enabled"): - sudo rm -v /etc/nginx/sites-@(dir_appendix)/default - -nginx_conf_file = script_dir / "advlabdb.conf" -sudo cp -v @(nginx_conf_file) /etc/nginx/sites-available/ -sudo ln -v -s /etc/nginx/sites-available/advlabdb.conf /etc/nginx/sites-enabled/ -sudo systemctl enable nginx - -step("Install pipx") -install_latest_pipx() - -local_bin = Path("/home/admin/.local/bin/") -$PATH.insert(0, str(local_bin)) - -step("Install Poetry") -pipx install poetry - -step("Install Certbot") -pipx install certbot -pipx inject certbot certbot-nginx - -step("Setup Certbot") -certbot_bin = local_bin / "certbot" -sudo @(certbot_bin) --nginx -echo f"0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo {certbot_bin} renew -q" | sudo tee -a /etc/crontab - -step("Setup update cron jobs") -xonsh_bin = local_bin / "xonsh" - -user_update_script = script_dir / "user_update.xsh" -user_update_log = logs_dir / "user_update.log" - -root_update_script = script_dir / "root_update.xsh" -root_update_log = logs_dir / "root_update.log" - -# Every Sunday at 04:00 -echo f"0 4 * * 0 admin {xonsh_bin} {user_update_script} &>> {user_update_log}" | sudo tee -a /etc/crontab -# Every Sunday at 04:15 -echo f"15 4 * * 0 root {xonsh_bin} {root_update_script} &>> {root_update_log}" | sudo tee -a /etc/crontab - -step("Install latest Poetry packages") -poetry_install_latest(script_dir) - -step("Deactivate the 'root' user") -sudo passwd -l root - -step("Reboot") -sudo reboot diff --git a/scripts/root_update.xsh b/scripts/root_update.xsh deleted file mode 100644 index 82c42e1..0000000 --- a/scripts/root_update.xsh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env xonsh - -from pathlib import Path -import sys - -script_dir = Path(__file__).parent.absolute() - -sys.path.insert(0, str(script_dir)) - -from shared import box, spaced_hl - -spaced_hl() - -box($(date), "Update on") - -box("Update system packages") -sudo apt update -sudo apt upgrade -y - -sudo reboot diff --git a/scripts/server_setup.xsh b/scripts/server_setup.xsh deleted file mode 100644 index 39b57be..0000000 --- a/scripts/server_setup.xsh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env xonsh - -from pathlib import Path - -script_dir = Path(__file__).parent.absolute() - -logs_dir = Path("/var/log/advlabdb/") - -# Create logs directory -sudo mkdir -v -p @(logs_dir) -sudo chown -R admin:admin @(logs_dir) - -logged_server_setup_script = script_dir / "logged_server_setup.xsh" -log_file = logs_dir / "server_setup.log" - -# Start actual server setup script with logging -xonsh @(logged_server_setup_script) | tee @(log_file) diff --git a/scripts/shared.xsh b/scripts/shared.xsh deleted file mode 100644 index 616fa9f..0000000 --- a/scripts/shared.xsh +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env xonsh - -def box(message, context=None): - text_line = "| " - - if context is not None: - textline += context + ": " - - text_line += message + " |" - - separator = "=" * (4 + len(text)) - - print() - print(separator) - print(textline) - print(separator) - print() - -def step(message): - continue_message = "-> Press ENTER to continue or Ctrl+C to interrupt the script <-" - upper_separator = "_" * len(continue_message) - - print() - print(upper_separator) - - box(message, "Next step") - - print(continue_message) - read -s - print() - -def install_latest_pipx(): - pip install --user --upgrade pipx - -def poetry_install_latest(script_dir): - cd @(script_dir)/.. - poetry install - -def spaced_hl(): - print("\n\n___________________\n\n") diff --git a/scripts/user_update.xsh b/scripts/user_update.xsh deleted file mode 100644 index 9763851..0000000 --- a/scripts/user_update.xsh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env xonsh - -from pathlib import Path -import sys - -script_dir = Path(__file__).parent.absolute() - -sys.path.insert(0, str(script_dir)) - -from shared import box, install_latest_pipx, poetry_install_latest, spaced_hl - -spaced_hl() - -box($(date), "Update on") - -box("Upgrade pipx") -install_latest_pipx() - -box("Upgrade pipx packages") -pipx upgrade-all --include-injected - -# TODO: Backup - -box("Install latest Poetry packages") -poetry_install_latest(script_dir)