1amends "../../config/Service.pkl"
2
3import "../../config/site.pkl" as site
4import "../evil-forgejo/service.pkl" as forgejo
5import "../postgres/service.pkl" as postgres
6
7local host = if (site.preview) "\(module.id).evil.\(site.domain)" else if (site.domain.endsWith(".test")) "md.evil.\(site.domain)" else "md.evil.inc"
8
9meta { name = "evil.inc Notes" }
10healthyDeadline = "15m"
11healthRestartGrace = "5m"
12
13requirements {
14 new postgres.Database { name = "evil_hedgedoc" }
15 new forgejo.OAuthClient {
16 name = "HedgeDoc"
17 redirectUris { "https://\(host)/auth/oauth2/callback" }
18 }
19}
20
21secrets { ["session_secret"] {} }
22
23container {
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}