#!/bin/bash . bin/variables.sh . bin/functions.sh echo -e "${ORANGE}${BOLD}Generate and store the credentials somewhere safe${RESET}" echo -e "${PURPLE}${BOLD}Enter the Directus admin email : ${RESET}" read directus_admin_email echo -e "${PURPLE}${BOLD}Enter the Directus admin password : ${RESET}" read -s directus_admin_password env_file="${CMS_DIRECTORY}/.env" port=8055 key=$(head -c 16 /dev/urandom | od -An -tx1 | tr -d ' \n') secret=$(head -c 16 /dev/urandom | od -An -tx1 | tr -d ' \n') su -s /bin/bash -c "mkdir ${CMS_DIRECTORY} &&\ mkdir ${CMS_DIRECTORY}/uploads &&\ echo \"HOST='${ip}'\" >> ${env_file} &&\ echo \"PORT=${port}\" >> ${env_file} &&\ echo \"PUBLIC_URL='https://cms.${DOMAIN_NAME}'\" >> ${env_file} &&\ echo \"DB_CLIENT='mysql'\" >> ${env_file} &&\ echo \"DB_HOST='127.0.0.1'\" >> ${env_file} &&\ echo \"DB_PORT='3306'\" >> ${env_file} &&\ echo \"DB_DATABASE='directus'\" >> ${env_file} &&\ echo \"DB_USER='directus'\" >> ${env_file} &&\ echo \"DB_PASSWORD='${DB_DIRECTUS_PASSWORD}'\" >> ${env_file} &&\ echo \"SECRET='${secret}'\" >> ${env_file} &&\ echo \"KEY='${key}'\" >> ${env_file} &&\ echo \"CORS_ENABLED='true'\" >> ${env_file} &&\ echo \"CORS_ORIGIN='true'\" >> ${env_file} &&\ echo \"IMPORT_IP_DENY_LIST=\" >> ${env_file} &&\ cd ${CMS_DIRECTORY} &&\ npm init -y &&\ npx directus bootstrap --skipAdminInit &&\ tmux new-session -d -s directus &&\ tmux send-keys -t directus \"cd ${CMS_DIRECTORY} && npx directus start\" C-m &&\ npx directus roles create --role Administrator --admin true &&\ npx directus roles create --role Website &&\ npx directus roles create --role User" www-data admin_role_uuid=$(echo $(mariadb -u directus -p${DB_DIRECTUS_PASSWORD} \ -e "SELECT id FROM directus.directus_roles WHERE name='Administrator'") | awk '{print $2}') website_role_uuid=$(echo $(mariadb -u directus -p${DB_DIRECTUS_PASSWORD} \ -e "SELECT id FROM directus.directus_roles WHERE name='Website'") | awk '{print $2}') user_role_uuid=$(echo $(mariadb -u directus -p${DB_DIRECTUS_PASSWORD} \ -e "SELECT id FROM directus.directus_roles WHERE name='User'") | awk '{print $2}') website_password=$(head -c 16 /dev/urandom | od -An -tx1 | tr -d ' \n') su -s /bin/bash -c "cd ${CMS_DIRECTORY} &&\ npx directus users create --email \"${directus_admin_email}\" \ --password \"${directus_admin_password}\" --role \"${admin_role_uuid}\" &&\ npx directus users create --email \"website@${DOMAIN_NAME}\" --password \"${website_password}\" --role \"${website_role_uuid}\"" www-data website_token=$(head -c 16 /dev/urandom | od -An -tx1 | tr -d ' \n') mariadb -u directus -p${DB_DIRECTUS_PASSWORD} -e "UPDATE directus.directus_roles SET icon='robot' WHERE name='Website'"; mariadb -u directus -p${DB_DIRECTUS_PASSWORD} -e "UPDATE directus.directus_roles SET app_access='0' WHERE name='Website'"; mariadb -u directus -p${DB_DIRECTUS_PASSWORD} -e "UPDATE directus.directus_users SET token=\"${website_token}\" WHERE email=\"website@${DOMAIN_NAME}\""; echo -e "${PURPLE}${BOLD}Import Directus data model ? (y/N) ${RESET}" read answer if [[ "$answer" == "y" ]]; then get_username get_ip get_ssh_port echo -e "${PURPLE}${BOLD}Import local Directus data model${RESET}" echo -e "${BLUE}npx directus schema snapshot ./snapshot.yaml${RESET}" echo -e "${BLUE}scp -P ${ssh_port} /local/path/to/snapshot.yaml ${username}@${ip}:/home/${username}/snapshot.yaml${RESET}" echo -e "${PURPLE}${BOLD}Press any key when done${RESET}" read su -s /bin/bash -c "cd ${CMS_DIRECTORY} &&\ npx directus schema apply --yes /home/${username}/snapshot.yaml" www-data fi echo -e "${PURPLE}${BOLD}You can now add some content${RESET}" echo -e "${ORANGE}${BOLD}Do not forget to set the permissions${RESET}" echo -e "${ORANGE}${BOLD}Website role ${RESET}${ORANGE}Read content collections and directus_files${RESET}" echo -e "${ORANGE}${BOLD}User role ${RESET}${ORANGE}All permissions on content collections, directus_files and directus_folders${RESET}"