76 lines
3.5 KiB
Bash
76 lines
3.5 KiB
Bash
#!/bin/bash
|
|
|
|
if [[ -z "$DOMAIN_NAME" ]]; then
|
|
echo -e "${PURPLE}${BOLD}Enter the domain name of the website${RESET}"
|
|
read DOMAIN_NAME
|
|
get_ip
|
|
fi
|
|
|
|
mkdir "/home/${username}/cms.${DOMAIN_NAME}"
|
|
cp assets/directus.docker-compose.yml "/home/${username}/cms.${DOMAIN_NAME}/docker-compose.yml"
|
|
cp assets/.env.example "/home/${username}/cms.${DOMAIN_NAME}/.env"
|
|
|
|
sed -i "s/^PROJECT_NAME=.*/PROJECT_NAME=${DOMAIN_NAME}/" "/home/${username}/cms.${DOMAIN_NAME}/.env"
|
|
|
|
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
|
|
|
|
sed -i "s/^ADMIN_EMAIL=.*/ADMIN_EMAIL=${directus_admin_email}/" "/home/${username}/cms.${DOMAIN_NAME}/.env"
|
|
sed -i "s/^ADMIN_PASSWORD=.*/ADMIN_PASSWORD=${directus_admin_password}/" "/home/${username}/cms.${DOMAIN_NAME}/.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')
|
|
|
|
sed -i "s/^KEY=.*/KEY=${key}/" "/home/${username}/cms.${DOMAIN_NAME}/.env"
|
|
sed -i "s/^SECRET=.*/SECRET=${secret}/" "/home/${username}/cms.${DOMAIN_NAME}/.env"
|
|
sed -i "s/^PORT=.*/PORT=${port}/" "/home/${username}/cms.${DOMAIN_NAME}/.env"
|
|
|
|
docker compose -f "/home/${username}/cms.${DOMAIN_NAME}/docker-compose.yml" up -d
|
|
|
|
|
|
docker exec -i "${DOMAIN_NAME}_Directus_DB" mariadb -u root <<-EOSQL
|
|
CREATE DATABASE IF NOT EXISTS directus;
|
|
GRANT ALL PRIVILEGES ON directus.* TO 'directus'@'%';
|
|
FLUSH PRIVILEGES;
|
|
EOSQL
|
|
|
|
docker exec -i "${DOMAIN_NAME}_Directus" sh -c "npx directus roles create --role Website && npx directus roles create --role User"
|
|
|
|
website_role_uuid=$(echo $(docker exec -i "${DOMAIN_NAME}_Directus_DB" mariadb -uroot -e "SELECT id FROM directus.directus_roles WHERE name='Website'") | awk '{print $2}')
|
|
user_role_uuid=$(echo $(docker exec -i "${DOMAIN_NAME}_Directus_DB" mariadb -uroot -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')
|
|
|
|
docker exec -i "${DOMAIN_NAME}_Directus" sh -c "npx directus users create --email \"website@${DOMAIN_NAME}\" --password \"${website_password}\" --role \"${website_role_uuid}\""
|
|
|
|
docker exec -i "${DOMAIN_NAME}_Directus_DB" sh -c "
|
|
mariadb -uroot -e \"
|
|
UPDATE directus.directus_roles SET icon='robot' WHERE name='Website';
|
|
UPDATE directus.directus_roles SET app_access='0' WHERE name='Website';
|
|
UPDATE directus.directus_users SET token='${WEBSITE_TOKEN}' WHERE email='website@${DOMAIN_NAME}';
|
|
INSERT INTO directus_permissions (role, collection, action, permissions, validation, fields)
|
|
VALUES ('${website_role_uuid}', 'directus_files', 'read', '{}', '{}', '*');
|
|
INSERT INTO directus_permissions (role, collection, action, permissions, validation, fields)
|
|
VALUES ('${user_role_uuid}', 'directus_files', 'read', '{}', '{}', '*');
|
|
INSERT INTO directus_permissions (role, collection, action, permissions, validation, fields)
|
|
VALUES ('${user_role_uuid}', 'directus_folders', 'read', '{}', '{}', '*');
|
|
\" directus
|
|
"
|
|
|
|
|
|
docker network connect web "${DOMAIN_NAME}_Directus"
|
|
|
|
if [[ -z "$CADDYFILE" ]]; then
|
|
CADDYFILE="/home/${username}/caddy/caddyfile/Caddyfile"
|
|
fi
|
|
|
|
echo "cms.${DOMAIN_NAME} {" >> $CADDYFILE
|
|
echo "reverse_proxy ${DOMAIN_NAME}_Directus:${port}" >> $CADDYFILE
|
|
echo "}" >> $CADDYFILE
|
|
|
|
docker restart caddy |