| 1 | amends "../../config/Service.pkl" |
| 2 | |
| 3 | import "../../config/site.pkl" as site |
| 4 | import "../evil-forgejo/service.pkl" as forgejo |
| 5 | import "../postgres/service.pkl" as postgres |
| 6 | |
| 7 | local host = if (site.preview) "\(module.id).evil.\(site.domain)" else if (site.domain.endsWith(".test")) "md.evil.\(site.domain)" else "md.evil.inc" |
| 8 | |
| 9 | meta { name = "evil.inc Notes" } |
| 10 | healthyDeadline = "15m" |
| 11 | healthRestartGrace = "5m" |
| 12 | |
| 13 | requirements { |
| 14 | new postgres.Database { name = "evil_hedgedoc" } |
| 15 | new forgejo.OAuthClient { |
| 16 | name = "HedgeDoc" |
| 17 | redirectUris { "https://\(host)/auth/oauth2/callback" } |
| 18 | } |
| 19 | } |
| 20 | |
| 21 | secrets { ["session_secret"] {} } |
| 22 | |
| 23 | container { |
| 24 | image = "quay.io/hedgedoc/hedgedoc@sha256:7b3f79667ad58c6419758547f10940638bcdc85ebee2a4e650318a704095975b" |
| 25 | cpu = 200 |
| 26 | memory = 768 |
| 27 | |
| 28 | http { |
| 29 | containerPort = 3000 |
| 30 | hostname = host |
| 31 | checkPath = "/_health" |
| 32 | metricsPath = "/metrics" |
| 33 | } |
| 34 | |
| 35 | volumes { ["/hedgedoc/public/uploads"] {} } |
| 36 | |
| 37 | env { |
| 38 | ["CMD_DB_DIALECT"] = "postgres" |
| 39 | ["CMD_DB_DATABASE"] = "${secret.database.name}" |
| 40 | ["CMD_DB_USERNAME"] = "${secret.database.username}" |
| 41 | ["CMD_DB_PASSWORD"] = "${secret.database.password}" |
| 42 | ["CMD_DOMAIN"] = host |
| 43 | ["CMD_PROTOCOL_USESSL"] = "true" |
| 44 | ["CMD_URL_ADDPORT"] = "false" |
| 45 | ["CMD_EMAIL"] = "false" |
| 46 | ["CMD_ALLOW_ANONYMOUS"] = "false" |
| 47 | ["CMD_ALLOW_ANONYMOUS_EDITS"] = "false" |
| 48 | ["CMD_SESSION_SECRET"] = "${secret.own.session_secret}" |
| 49 | ["CMD_OAUTH2_PROVIDERNAME"] = "git.evil.inc" |
| 50 | ["CMD_OAUTH2_CLIENT_ID"] = "${secret.oauth.clientId}" |
| 51 | ["CMD_OAUTH2_CLIENT_SECRET"] = "${secret.oauth.clientSecret}" |
| 52 | ["CMD_OAUTH2_BASEURL"] = "${secret.oauth.providerUrl}" |
| 53 | ["CMD_OAUTH2_AUTHORIZATION_URL"] = "${secret.oauth.providerUrl}/login/oauth/authorize" |
| 54 | ["CMD_OAUTH2_USER_PROFILE_ID_ATTR"] = "id" |
| 55 | ["CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR"] = "username" |
| 56 | ["CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR"] = "full_name" |
| 57 | ["CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR"] = "email" |
| 58 | } |
| 59 | |
| 60 | envTemplate = """ |
| 61 | {{ range nomadService 1 (env "NOMAD_ALLOC_ID") "postgres" }}CMD_DB_HOST={{ .Address }} |
| 62 | CMD_DB_PORT={{ .Port }}{{ end }} |
| 63 | {{ range nomadService 1 (env "NOMAD_ALLOC_ID") "evil-forgejo-forgejo" }}CMD_OAUTH2_TOKEN_URL=http://\(module.nomadHostPort)/login/oauth/access_token |
| 64 | CMD_OAUTH2_USER_PROFILE_URL=http://\(module.nomadHostPort)/api/v1/user{{ end }} |
| 65 | """ |
| 66 | } |