#!/bin/bash export VITO_VERSION="1.x" export DEBIAN_FRONTEND=noninteractive export NEEDRESTART_MODE=a if [[ -z "${V_USERNAME}" ]]; then export V_USERNAME=vito fi if [[ -z "${V_PASSWORD}" ]]; then export V_PASSWORD=$(openssl rand -base64 12) fi if [[ -z "${V_ADMIN_EMAIL}" ]]; then echo "Enter your email address:" read V_ADMIN_EMAIL fi if [[ -z "${V_ADMIN_EMAIL}" ]]; then echo "Error: V_ADMIN_EMAIL environment variable is not set." exit 1 fi if [[ -z "${V_ADMIN_PASSWORD}" ]]; then echo "Enter a password for Vito's dashboard:" read V_ADMIN_PASSWORD fi if [[ -z "${V_ADMIN_PASSWORD}" ]]; then echo "Error: V_ADMIN_PASSWORD environment variable is not set." exit 1 fi apt remove needrestart -y useradd -p $(openssl passwd -1 ${V_PASSWORD}) ${V_USERNAME} usermod -aG ${V_USERNAME} echo "${V_USERNAME} ALL=(ALL) NOPASSWD:ALL" | tee -a /etc/sudoers mkdir /home/${V_USERNAME} mkdir /home/${V_USERNAME}/.ssh chown -R ${V_USERNAME}:${V_USERNAME} /home/${V_USERNAME} chsh -s /bin/bash "${V_USERNAME}" su - "${V_USERNAME}" -c "ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa" << /home/${V_USERNAME}/vito/storage/ssh-public.key chown -R ${V_USERNAME}:${V_USERNAME} /home/${V_USERNAME}/vito/storage/ssh-private.pem chown -R ${V_USERNAME}:${V_USERNAME} /home/${V_USERNAME}/vito/storage/ssh-public.key # setup supervisor export V_WORKER_CONFIG=" [program:worker] process_name=%(program_name)s_%(process_num)02d command=php /home/${V_USERNAME}/vito/artisan queue:work --sleep=3 --backoff=0 --queue=default,ssh,ssh-long --timeout=3600 --tries=1 autostart=1 autorestart=1 user=vito redirect_stderr=true stdout_logfile=/home/${V_USERNAME}/.logs/workers/worker.log stopwaitsecs=3600 " apt-get install supervisor -y service supervisor enable service supervisor start mkdir -p /home/${V_USERNAME}/.logs mkdir -p /home/${V_USERNAME}/.logs/workers touch /home/${V_USERNAME}/.logs/workers/worker.log echo "${V_WORKER_CONFIG}" | tee /etc/supervisor/conf.d/worker.conf supervisorctl reread supervisorctl update # setup cronjobs echo "* * * * * cd /home/${V_USERNAME}/vito && php artisan schedule:run >> /dev/null 2>&1" | sudo -u ${V_USERNAME} crontab - # cleanup chown -R ${V_USERNAME}:${V_USERNAME} /home/${V_USERNAME} # optimize php artisan optimize php artisan icons:cache # start worker supervisorctl start worker:* # print info echo "🎉 Congratulations!" echo "✅ SSH User: ${V_USERNAME}" echo "✅ SSH Password: ${V_PASSWORD}" echo "✅ Admin Email: ${V_ADMIN_EMAIL}" echo "✅ Admin Password: ${V_ADMIN_PASSWORD}"