#!make include main.conf export $(shell sed 's/=.*//' main.conf) VERSION := 0.0.1-rc0 export VERSION BUILD_ROOT_PATH=$(shell pwd) .PHONY: all all: environment moodle nextcloud cp .env docker/postgresql cp .env docker/mariadb cp .env docker/moodle cp .env docker/nextcloud cp .env docker/wordpress cp .env docker/etherpad docker-compose -f docker/moodle/moodle.yml \ -f docker/nextcloud/nextcloud.yml \ -f docker/wordpress/wordpress.yml \ -f docker/etherpad/etherpad.yml \ -f docker/onlyoffice/onlyoffice.yml \ -f docker/redis/redis.yml \ -f docker/postgresql/postgresql.yml \ -f docker/mariadb/mariadb.yml \ -f docker/network.yml \ config > docker-compose.yml .PHONY: start start: all docker-compose up -d --no-deps .PHONY: add-plugins add-plugins: docker exec -ti isard-apps-nextcloud-app /bin/sh -c "su - www-data -s /bin/sh -c 'PHP_MEMORY_LIMIT=512M php /var/www/html/occ app:install mail'" docker exec -ti isard-apps-nextcloud-app /bin/sh -c "su - www-data -s /bin/sh -c 'PHP_MEMORY_LIMIT=512M php /var/www/html/occ app:enable mail'" docker exec -ti isard-apps-nextcloud-app /bin/sh -c "su - www-data -s /bin/sh -c 'PHP_MEMORY_LIMIT=512M php /var/www/html/occ app:install user_saml'" docker exec -ti isard-apps-nextcloud-app /bin/sh -c "su - www-data -s /bin/sh -c 'PHP_MEMORY_LIMIT=512M php /var/www/html/occ app:enable user_saml'" docker exec -ti isard-apps-nextcloud-app /bin/sh -c "su - www-data -s /bin/sh -c 'PHP_MEMORY_LIMIT=512M php /var/www/html/occ app:install ownpad'" docker exec isard-apps-nextcloud-app apk add jq docker exec isard-apps-nextcloud-app sh -c 'jq ". + {\"pad\": [\"application/x-ownpad\"], \"calc\": [\"application/x-ownpad\"]}" /var/www/html/resources/config/mimetypemapping.dist.json > /var/www/html/config/mimetypemapping.json' docker exec -u www-data isard-apps-nextcloud-app sh -c 'PHP_MEMORY_LIMIT=512M php /var/www/html/occ files:scan --all' docker exec -ti isard-apps-nextcloud-app /bin/sh -c "su - www-data -s /bin/sh -c 'PHP_MEMORY_LIMIT=512M php /var/www/html/occ app:enable ownpad'" docker exec -u www-data isard-apps-nextcloud-app php occ --no-warnings app:install onlyoffice docker exec -u www-data isard-apps-nextcloud-app php occ --no-warnings config:app:set onlyoffice DocumentServerUrl --value="https://oof.$$DOMAIN" docker exec -u www-data isard-apps-nextcloud-app php occ --no-warnings config:app:set onlyoffice jwt_secret --value="secret" docker exec -u www-data isard-apps-nextcloud-app php occ --no-warnings config:app:set onlyoffice jwt_header --value="Authorization" docker exec -u www-data isard-apps-nextcloud-app php occ --no-warnings config:system:set allow_local_remote_servers --value=true .PHONY: cleanup cleanup: docker-compose down rm -rf /opt/isard-apps .PHONY: environment environment: cp main.conf .env echo "BUILD_ROOT_PATH=$(BUILD_ROOT_PATH)" >> .env .PHONY: moodle moodle: environment cp .env docker/moodle docker-compose -f docker/moodle/moodle.yml \ -f docker/postgresql/postgresql.yml \ -f docker/network.yml \ config > docker-compose.moodle.yml .PHONY: nextcloud nextcloud: environment cp .env docker/nextcloud cp .env docker/redis docker-compose -f docker/nextcloud/nextcloud.yml \ -f docker/postgresql/postgresql.yml \ -f docker/redis/redis.yml \ -f docker/network.yml \ config > docker-compose.nextcloud.yml .PHONY: wordpress wordpress: environment cp .env docker/wordpress docker-compose -f docker/wordpress/wordpress.yml \ -f docker/mariadb/mariadb.yml \ -f docker/network.yml \ config > docker-compose.wordpress.yml .PHONY: init-dbs init-dbs: environment MOODLE="\set AUTOCOMMIT on\n; \ CREATE USER $(MOODLE_POSTGRES_USER) SUPERUSER PASSWORD '$(MOODLE_POSTGRES_PASSWORD)'; \ CREATE DATABASE moodle; \ GRANT ALL PRIVILEGES ON DATABASE moodle TO $(MOODLE_POSTGRES_USER);" docker-compose exec isard-apps-postgresql psql -v ON_ERROR_STOP=1 \ --username $(POSTGRES_USER) <<-EOSQL $(MOODLE) EOSQL .PHONY: remove-moodle-db remove-moodle-db: environment docker-compose exec isard-apps-postgresql psql -v ON_ERROR_STOP=1 \ --username $(POSTGRES_USER) -c "\set AUTOCOMMIT on\n; \ DROP DATABASE moodle;" .PHONY: reset-nextcloud reset-nextcloud: environment docker-compose stop isard-apps-nextcloud-nginx isard-apps-nextcloud-app rm -rf /opt/isard-office/nextcloud docker-compose exec isard-apps-postgresql psql -v ON_ERROR_STOP=1 \ --username $(POSTGRES_USER) -c "\set AUTOCOMMIT on\n; \ DROP DATABASE nextcloud; \ CREATE USER $(NEXTCLOUD_POSTGRES_USER) SUPERUSER PASSWORD '$(NEXTCLOUD_POSTGRES_PASSWORD)'; \ CREATE DATABASE nextcloud; \ GRANT ALL PRIVILEGES ON DATABASE nextcloud TO $(NEXTCLOUD_POSTGRES_USER);" docker-compose up -d isard-apps-nextcloud-nginx isard-apps-nextcloud-app .PHONY: backup-databases backup-databases: echo "Todo" .PHONY: restore-database restore-databases: echo "Todo" .PHONY: db-snapshot-create db-snapshot-create: environment docker exec -t isard-apps-postgresql pg_dumpall -c -U admin > backups/db-snapshot.sql #docker exec -t isard-apps-postgresql pg_dumpall -c -U admin | gzip > backups/db-snapshot.sql.gz echo $$DOMAIN sed -i 's/$(DOMAIN)/DDOOMMAAIINN/g' backups/db-snapshot.sql .PHONY: db-snapshot-restore db-snapshot-restore: environment echo "Old domain" cp .env docker/postgresql cp .env docker/mariadb docker-compose -f docker/postgresql/postgresql.yml \ -f docker/mariadb/mariadb.yml \ -f docker/network.yml \ config > databases.yml echo "Starting system databases..." docker-compose -f databases.yml up -d --no-deps echo "Substitute DOMAIN with: $$DOMAIN" cp backups/db-snapshot.sql backups/db-snapshot_$$DOMAIN.sql sed -i 's/DDOOMMAAIINN/$(DOMAIN)/g' backups/db-snapshot_$$DOMAIN.sql echo "Generating new private/public certificates for SAML..." openssl req -nodes -new -x509 -keyout backups/certs/private.key -out backups/certs/public.cert echo "Substitute CERTIFICATES with new ones' grep -rl oldtext . | xargs sed -i 's/oldtext/newtext/g' echo "Restoring new SQL info in databases..." docker exec -i isard-apps-postgresql psql -U admin --set ON_ERROR_STOP=on -f backups/sample.sql echo "Cleaning up" rm databases.yml