|
|
|
MODULES += nginx
|
|
|
|
MODULES += keycloak
|
|
|
|
MODULES += hedgedoc
|
|
|
|
MODULES += grafana
|
|
|
|
MODULES += prometheus
|
|
|
|
MODULES += mastodon
|
|
|
|
MODULES += matrix
|
|
|
|
MODULES += nextcloud
|
|
|
|
MODULES += mobilizon
|
|
|
|
MODULES += gitea
|
|
|
|
MODULES += nitter
|
|
|
|
MODULES += pixelfed
|
|
|
|
#MODULES += bookwyrm
|
|
|
|
|
|
|
|
include env.production
|
|
|
|
domain_name := $(DOMAIN_NAME)
|
|
|
|
|
|
|
|
|
|
|
|
help:
|
|
|
|
@echo "usage: make run"
|
|
|
|
UC = $(shell echo '$1' | tr '[:lower:]' '[:upper:]')
|
|
|
|
|
|
|
|
DOCKER = \
|
|
|
|
$(foreach m,$(MODULES),. secrets/$m && ) \
|
|
|
|
docker-compose \
|
|
|
|
--env-file env.production \
|
|
|
|
$(foreach m,$(MODULES),--file ./$m.yaml) \
|
|
|
|
|
|
|
|
run:
|
|
|
|
$(DOCKER) up
|
|
|
|
rund:
|
|
|
|
$(DOCKER) up -d
|
|
|
|
stop:
|
|
|
|
$(DOCKER) stop
|
|
|
|
down:
|
|
|
|
$(DOCKER) down
|
|
|
|
nginx-shell:
|
|
|
|
$(DOCKER) exec nginx sh
|
|
|
|
nginx-logs:
|
|
|
|
$(DOCKER) logs -f --tail 100000 nginx
|
|
|
|
mastodon-logs:
|
|
|
|
$(DOCKER) logs -f --tail 1000 mastodon mastodon-sidekiq mastodon-streaming mastodon-es mastodon-db
|
|
|
|
grafana-shell:
|
|
|
|
$(DOCKER) exec grafana bash
|
|
|
|
hedgedoc-shell:
|
|
|
|
$(DOCKER) exec hedgedoc sh
|
|
|
|
keycloak-shell:
|
|
|
|
$(DOCKER) exec keycloak sh
|
|
|
|
keycloak-rebuild:
|
|
|
|
$(DOCKER) create keycloak
|
|
|
|
$(DOCKER) restart keycloak
|
|
|
|
mastodon-es-rebuild:
|
|
|
|
$(DOCKER) create mastodon-es
|
|
|
|
$(DOCKER) restart mastodon-es
|
|
|
|
mastodon-restart:
|
|
|
|
$(DOCKER) restart mastodon
|
|
|
|
mastodon-shell:
|
|
|
|
$(DOCKER) exec mastodon bash
|
|
|
|
mastodon-worker-shell:
|
|
|
|
$(DOCKER) exec mastodon-worker bash
|
|
|
|
matrix-shell:
|
|
|
|
$(DOCKER) exec matrix-synapse bash
|
|
|
|
nextcloud-shell:
|
|
|
|
$(DOCKER) exec nextcloud bash
|
|
|
|
matrix-logs:
|
|
|
|
$(DOCKER) logs --tail 100 -f matrix-synapse
|
|
|
|
pixelfed-shell:
|
|
|
|
$(DOCKER) exec pixelfed-app bash
|
|
|
|
pixelfed-worker-shell:
|
|
|
|
$(DOCKER) exec pixelfed-worker bash
|
|
|
|
pixelfed-logs:
|
|
|
|
$(DOCKER) logs --tail 100 -f pixelfed-app pixelfed-worker pixelfed-db pixelfed-redis
|
|
|
|
pixelfed-worker-logs:
|
|
|
|
$(DOCKER) logs --tail 100 -f pixelfed-worker
|
|
|
|
pixelfed-rebuild:
|
|
|
|
$(DOCKER) build pixelfed-app pixelfed-worker pixelfed-redis pixelfed-db
|
|
|
|
pixelfed-restart:
|
|
|
|
$(DOCKER) restart pixelfed-app pixelfed-worker pixelfed-redis pixelfed-db
|
|
|
|
pixelfed-down:
|
|
|
|
$(DOCKER) stop pixelfed-app pixelfed-worker pixelfed-redis pixelfed-db
|
|
|
|
mastodon-sidekiq-logs:
|
|
|
|
$(DOCKER) logs --tail 100 -f mastodon-sidekiq
|
|
|
|
nextcloud-logs:
|
|
|
|
$(DOCKER) logs -f nextcloud
|
|
|
|
nginx-build: secrets/nginx
|
|
|
|
$(DOCKER) build nginx
|
|
|
|
bookwyrm-restart:
|
|
|
|
$(DOCKER) restart bookwyrm-db bookwyrm-redis_activity bookwyrm-redis_broker bookwyrm-web bookwyrm-celery_worker bookwyrm-celery_beat bookwyrm-flower
|
|
|
|
|
|
|
|
certdir = ./data/certbot/conf/live/${DOMAIN_NAME}
|
|
|
|
|
|
|
|
run: secrets-setup
|
|
|
|
|
|
|
|
secrets-setup: $(foreach m,$(MODULES),secrets/$m)
|
|
|
|
|
|
|
|
# Create the per-subdomain secrets if they don't exist
|
|
|
|
# not every service requires all of these features, but create them anyway
|
|
|
|
GET_MODULE = $(call UC,$(word 2,$(subst /, ,$@)))
|
|
|
|
RAND = $$(openssl rand -hex $1)
|
|
|
|
|
|
|
|
secrets/%:
|
|
|
|
mkdir -p $(dir $@)
|
|
|
|
echo >$@ "# DO NOT CHECK IN"
|
|
|
|
echo >>$@ "export $(GET_MODULE)_ADMIN_PASSWORD=$(call RAND,8)"
|
|
|
|
echo >>$@ "export $(GET_MODULE)_CLIENT_SECRET=$(call RAND,20)"
|
|
|
|
echo >>$@ "export $(GET_MODULE)_SESSION_SECRET=$(call RAND,20)"
|
|
|
|
|
|
|
|
secrets/gitea: data/gitea/host-setup.done
|
|
|
|
data/gitea/host-setup.done:
|
|
|
|
sudo ./gitea/host-setup.sh
|
|
|
|
mkdir -p $(dir $@)
|
|
|
|
touch $@
|
|
|
|
|
|
|
|
secrets/pixelfed: secrets/pixelfed.app
|
|
|
|
secrets/pixelfed.app:
|
|
|
|
echo 'APP_KEY=base64:$(shell openssl rand -base64 32)' > $@
|
|
|
|
|
|
|
|
keycloak-setup: secrets-setup
|
|
|
|
docker exec keycloak /setup.sh
|
|
|
|
|
|
|
|
# Determine the extra hostnames that need to be included in the SSL cert
|
|
|
|
# see sites/README.md for an explanation of how to add additional sites
|
|
|
|
EXTRA_HOSTNAMES=$(foreach f,$(wildcard sites/*.conf),$(notdir $(f:.conf=)))
|
|
|
|
|
|
|
|
certbot:
|
|
|
|
$(DOCKER) \
|
|
|
|
run --entrypoint '/bin/sh -c "\
|
|
|
|
rm -rf /etc/letsencrypt ; \
|
|
|
|
certbot certonly \
|
|
|
|
--webroot \
|
|
|
|
--webroot-path /var/www/certbot \
|
|
|
|
--email "admin@$(DOMAIN_NAME)" \
|
|
|
|
--rsa-key-size "2048" \
|
|
|
|
--agree-tos \
|
|
|
|
--no-eff-email \
|
|
|
|
--force-renewal \
|
|
|
|
-d $(DOMAIN_NAME) \
|
|
|
|
$(foreach m,$(MODULES),\
|
|
|
|
-d $($(call UC,$m)_HOSTNAME).$(DOMAIN_NAME)) \
|
|
|
|
$(foreach m,$(EXTRA_HOSTNAMES),\
|
|
|
|
-d $m) \
|
|
|
|
"' certbot
|
|
|
|
|
|
|
|
|
|
|
|
nginx-reload:
|
|
|
|
$(DOCKER) restart nginx
|
|
|
|
nextcloud-restart:
|
|
|
|
$(DOCKER) restart nextcloud
|
|
|
|
mastodon-rebuild:
|
|
|
|
$(DOCKER) create mastodon mastodon-sidekiq
|
|
|
|
mastodon-restart:
|
|
|
|
$(DOCKER) restart mastodon mastodon-sidekiq mastodon-db mastodon-streaming mastodon-redis mastodon-es
|
|
|
|
mastodon-cache:
|
|
|
|
$(DOCKER) exec mastodon bin/tootctl media remove
|
|
|
|
matrix-restart:
|
|
|
|
$(DOCKER) restart matrix-synapse matrix-element
|
|
|
|
|
|
|
|
|
|
|
|
config:
|
|
|
|
$(DOCKER) config
|
|
|
|
|
|
|
|
FORCE:
|