Files
domain-incoming/apps/nextcloud/configs.tf
2024-01-25 18:35:22 +01:00

75 lines
3.5 KiB
HCL

locals {
script-wrap = <<-EOF
#!/bin/bash
cp /etc/local-ca/ca.crt /usr/local/share/ca-certificates/
/usr/sbin/update-ca-certificates
chown www-data ./config || :
exec /bin/sh /entrypoint.sh "$@"
EOF
script-head = <<-EOF
#!/bin/bash
export user=www-data
run_as() {
if [ "$(id -u)" = 0 ]; then
su -p "$user" -s /bin/sh -c "$*"
else
sh -c "$*"
fi
}
run_as ./occ --no-warnings config:system:set trusted_domains 0 --value=nextcloud
run_as ./occ --no-warnings config:system:set trusted_domains 1 --value="${local.dns_name}"
run_as ./occ app:install user_oidc ||:
run_as ./occ user_oidc:provider "$${OAUTH2_CONNECTOR_NAME}" --clientid="$${OAUTH2_CLIENT_ID}" \
--clientsecret="$${OAUTH2_CLIENT_SECRET}" \
--discoveryuri="$${OAUTH2_DISCOVER_URI}"
EOF
script-apps = concat(
var.apps.deck?["run_as ./occ app:install deck ||:"]:[],
var.apps.calendar?["run_as ./occ app:install calendar ||:"]:[],
var.apps.contacts?["run_as ./occ app:install contacts ||:"]:[],
var.apps.groupfolders?["run_as ./occ app:install groupfolders ||:"]:[],
var.apps.notes?["run_as ./occ app:install notes ||:"]:[],
var.apps.tasks?["run_as ./occ app:install tasks ||:"]:[],
var.apps.audioplayer?["run_as ./occ app:install audioplayer ||:"]:[],
var.apps.bpm?["run_as ./occ app:install files_bpm ||:"]:[],
var.apps.mindmap?["run_as ./occ app:install files_mindmap ||:"]:[],
var.apps.music?["run_as ./occ app:install music ||:"]:[],
var.apps.bookmarks?["run_as ./occ app:install bookmarks ||:"]:[],
var.apps.texteditor?["run_as ./occ app:install files_texteditor ||:"]:[],
var.apps.passman?["run_as ./occ app:install passman ||:"]:[],
var.apps.tables?["run_as ./occ app:install tables ||:"]:[],
var.apps.collabora?[
"run_as ./occ app:install richdocuments ||:",
"run_as ./occ app:enable richdocuments ||:",
"run_as ./occ config:app:set richdocuments wopi_url --value=\"https://collabora.${local.dns_name}/\"",
"run_as ./occ config:app:set richdocuments federation_use_trusted_domains --value=yes",
"run_as ./occ richdocuments:activate-config ||:",
]:["run_as ./occ app:disable richdocuments ||:"],
var.apps.onlyoffice?[
"run_as ./occ app:install onlyoffice ||:",
"run_as ./occ app:enable onlyoffice ||:",
"run_as ./occ --no-warnings config:app:set onlyoffice DocumentServerUrl --value=\"https://onlyoffice.${local.dns_name}/\"",
"run_as ./occ --no-warnings config:app:set onlyoffice DocumentServerInternalUrl --value=\"http://${var.instance}-onlyoffice/\"",
"run_as ./occ --no-warnings config:app:set onlyoffice StorageUrl --value=\"http://nextcloud/\"",
"run_as ./occ --no-warnings config:app:set onlyoffice jwt_secret --value=\"$${ONLYOFFICE_JWT_SECRET}\"",
]:["run_as ./occ app:disable onlyoffice ||:"],
var.apps.spreed?["run_as ./occ app:install spreed ||:"]:[],
["run_as ./occ upgrade ||:","run_as ./occ maintenance:mode --off ||:"])
data-config-init = {
"autostart.sh" = join("\n", concat([local.script-head],local.script-apps))
"wrapper" = local.script-wrap
}
}
resource "kubectl_manifest" "nextcloud-config" {
yaml_body = <<-EOF
apiVersion: v1
kind: ConfigMap
metadata:
name: "${var.component}-${var.instance}-init"
namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)}
data: ${jsonencode(local.data-config-init)}
EOF
}