-include .env export REMOTE_PORT ?= 22 SSH := ssh -p $(REMOTE_PORT) $(REMOTE_USER)@$(REMOTE_HOST) WEBROOT ?= $(REMOTE_HOME)/public_html SITE_CONFIG_DIR ?= $(REMOTE_HOME)/site-config # ── Local dev ────────────────────────────────────────────────────────────────── start: docker compose up -d stop: docker compose down setup: start install-plugins install-plugins: docker exec natascha_grav php /app/www/public/bin/gpm install $(shell cat plugins.txt | tr '\n' ' ') -y # ── Environment-specific config (git-sync direction) ─────────────────────────── # git-sync's `direction` lives in a shared, synced config file, so setting it # there fights between environments. These targets instead write it into Grav's # env//config/... override path, which is gitignored on purpose and # never syncs. Re-run after a fresh clone/install or a wiped local checkout. REMOTE_ENV_HOST ?= nieuw.natascha-rieter.nl configure-env-local: mkdir -p user/env/localhost/config/plugins user/env/cli/config/plugins printf 'sync:\n direction: pull\n' | tee user/env/localhost/config/plugins/git-sync.yaml user/env/cli/config/plugins/git-sync.yaml > /dev/null @echo "Local git-sync pinned to pull-only (user/env/{localhost,cli}/config/plugins/git-sync.yaml)." # ── Content sync (user repo ↔ Gitea) ────────────────────────────────────────── content-push: git -C user push origin main content-pull: git -C user pull origin main # ── Remote credentials ───────────────────────────────────────────────────────── remote-env-setup: @$(SSH) "printf 'GITEA_HOST=%s\nGITEA_USER=%s\nGITEA_TOKEN=%s\n' \ '$(GITEA_HOST)' '$(GITEA_USER)' '$(GITEA_TOKEN)' > ~/.env-natascha && chmod 600 ~/.env-natascha" @echo "Credentials written to server. Run 'make remote-env-remove' when done." remote-env-remove: @$(SSH) "rm -f ~/.env-natascha" @echo "Credentials removed from server." # ── Remote: initial install ──────────────────────────────────────────────────── remote-wipe: $(SSH) "cd $(WEBROOT) && rm -rf assets backup bin cache images logs system tmp vendor webserver-configs index.php .htaccess CHANGELOG.md LICENSE.txt README.md" remote-install: $(SSH) "WEBROOT=$(WEBROOT) \ SITE_CONFIG_DIR=$(SITE_CONFIG_DIR) \ USER_REPO=$(USER_REPO) \ MAIN_REPO=$(MAIN_REPO) \ GRAV_VERSION=$(GRAV_VERSION) \ PLUGINS='$(shell cat plugins.txt | tr '\n' ' ')' \ GITEA_HOST=$(GITEA_HOST) \ GITEA_USER=$(GITEA_USER) \ GITEA_TOKEN=$(GITEA_TOKEN) \ bash -s" < scripts/server-install.sh # ── Remote: ongoing maintenance ──────────────────────────────────────────────── remote-fetch: $(SSH) "git -C $(SITE_CONFIG_DIR) pull" remote-install-plugins: $(SSH) "cd $(WEBROOT) && php bin/gpm install $(shell cat plugins.txt | tr '\n' ' ') -y" remote-upgrade-grav: $(SSH) "cd $(WEBROOT) && php bin/grav upgrade" remote-clean: $(SSH) "cd $(WEBROOT) && php bin/grav clearcache" remote-maintenance-on: $(SSH) "bash -s on $(WEBROOT)" < scripts/server-maintenance.sh remote-maintenance-off: $(SSH) "bash -s off $(WEBROOT)" < scripts/server-maintenance.sh remote-configure-env: $(SSH) "mkdir -p $(WEBROOT)/user/env/$(REMOTE_ENV_HOST)/config/plugins $(WEBROOT)/user/env/cli/config/plugins && \ printf 'sync:\n direction: both\n' | tee $(WEBROOT)/user/env/$(REMOTE_ENV_HOST)/config/plugins/git-sync.yaml $(WEBROOT)/user/env/cli/config/plugins/git-sync.yaml > /dev/null" @echo "Production git-sync pinned to push+pull for $(REMOTE_ENV_HOST) and cli."