Skip to content

Commit 254d2a4

Browse files
committed
Update arm64 build
Fix userpass login Fix apikey auth Use X-Forwarded-For header for host routing
1 parent 8350490 commit 254d2a4

File tree

20 files changed

+303
-520
lines changed

20 files changed

+303
-520
lines changed

Dockerfile

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,12 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
3737

3838
WORKDIR /app
3939

40-
RUN apt-get update && apt-get install curl --yes && \
40+
ARG TARGETARCH
41+
ARG ARCH_SUFFIX=${TARGETARCH}
42+
RUN if [ "${TARGETARCH}" = "amd64" ]; then ARCH_SUFFIX="x64"; fi && \
43+
apt-get update && apt-get install curl --yes && \
4144
curl -sL \
42-
https://github.com/tailwindlabs/tailwindcss/releases/download/v4.1.18/tailwindcss-linux-x64 \
45+
"https://github.com/tailwindlabs/tailwindcss/releases/download/v4.1.18/tailwindcss-linux-${ARCH_SUFFIX}" \
4346
-o /app/tailwindcss && \
4447
chmod +x /app/tailwindcss
4548

ci/test-runner/main.go

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -30,32 +30,32 @@ var (
3030
vaultToken = getEnv("VAULT_TOKEN", "test-root-token")
3131

3232
// Test user API keys (from rbac_seed.sql and vault-init.sh)
33-
// Format: libops_{keyUUID_no_dashes}_{accountUUID_no_dashes}
33+
// Format: libops_{accountUUID_no_dashes}_{keyUUID_no_dashes}_{randomSecret}
3434
apiKeys = map[string]string{
35-
// Full scope keys
36-
"admin": "libops_075913e793285264b6846ae0163b8096_01052d4d93be51a39684c357297533cd",
37-
"art": "libops_0f05b4b9f40c5ca89f3904de42ae87e4_fdf35d32bbb35ea3abf2410da575e169",
38-
"jerry": "libops_726186be6ad85257a1bd2e4689db11d0_964b5eb020375263883ce939c6916d7d",
39-
"elaine": "libops_b3f360ca79955db2b88b3e178cd7ae8a_863fb60a808450fe82aeefa113231bef",
40-
"george": "libops_0c9522b721975d87b010ac1bc506f79a_d0bfd25745725036b5aa038743be4715",
41-
"kramer": "libops_94581ae623e358698770db7cb74e5391_516e3bb4bfbe5dda9cc9d0e00ce7b6f2",
42-
"pennypacker": "libops_58c99883c3145c6ebfa8e072502e43bd_42b6846e501f51539aca210d8d84f946",
43-
"newman": "libops_3ccc3cc2e5c0530b8f0a6fb24cd8566b_e60f6db8521a5fc3aaccceb3f50b6f7b",
44-
"bob": "libops_63cd920a70905e0eb46d840a933e2c70_94656683e36658b8a39132e0c54ca37e",
45-
"joe": "libops_890e09765b435ff8a673921a920e7c2a_0f439d32e0655a20a08e22dd6793948a",
46-
"puddy": "libops_eb181a1b7dc953c29981ba91a3ebf24a_22f490238dfe57c795dbdd0f8cae04a7",
47-
"soup": "libops_43527224d0f85344803fec80f80ed0a0_ff2098bd1a335db9806937f2bf5bdba7",
48-
"babu": "libops_2032b34886ae5805b08c3c2cf065ef82_a551424b91ed5636a53bcdb50660d4c9",
49-
"leo": "libops_ce22e781d2ad5d7abccc7dd122e791c8_351fcf8bd637596cbe1e8bdd90dbc4eb",
50-
"jackie": "libops_578e1fcfb4975bffbbf4436835457f73_af54b89e5533585ab3b70003b7e6dcc2",
51-
"peterman": "libops_2c3cfb5bc99454c99cb992321bd353cb_dfe2b1a880005b6788ad881b036fa4f9",
52-
"no-access": "libops_567df9dc244e561e93c13082534eeec7_e543554b5af05d97ac8f09608bcfa7b8",
35+
// Full scope keys - format updated to include random secret
36+
"admin": "libops_01052d4d93be51a39684c357297533cd_075913e793285264b6846ae0163b8096_test_secret_admin_full",
37+
"art": "libops_fdf35d32bbb35ea3abf2410da575e169_0f05b4b9f40c5ca89f3904de42ae87e4_test_secret_art_full",
38+
"jerry": "libops_964b5eb020375263883ce939c6916d7d_726186be6ad85257a1bd2e4689db11d0_test_secret_jerry_full",
39+
"elaine": "libops_863fb60a808450fe82aeefa113231bef_b3f360ca79955db2b88b3e178cd7ae8a_test_secret_elaine_full",
40+
"george": "libops_d0bfd25745725036b5aa038743be4715_0c9522b721975d87b010ac1bc506f79a_test_secret_george_full",
41+
"kramer": "libops_516e3bb4bfbe5dda9cc9d0e00ce7b6f2_94581ae623e358698770db7cb74e5391_test_secret_kramer_full",
42+
"pennypacker": "libops_42b6846e501f51539aca210d8d84f946_58c99883c3145c6ebfa8e072502e43bd_test_secret_pennypacker_full",
43+
"newman": "libops_e60f6db8521a5fc3aaccceb3f50b6f7b_3ccc3cc2e5c0530b8f0a6fb24cd8566b_test_secret_newman_full",
44+
"bob": "libops_94656683e36658b8a39132e0c54ca37e_63cd920a70905e0eb46d840a933e2c70_test_secret_bob_full",
45+
"joe": "libops_0f439d32e0655a20a08e22dd6793948a_890e09765b435ff8a673921a920e7c2a_test_secret_joe_full",
46+
"puddy": "libops_22f490238dfe57c795dbdd0f8cae04a7_eb181a1b7dc953c29981ba91a3ebf24a_test_secret_puddy_full",
47+
"soup": "libops_ff2098bd1a335db9806937f2bf5bdba7_43527224d0f85344803fec80f80ed0a0_test_secret_soup_full",
48+
"babu": "libops_a551424b91ed5636a53bcdb50660d4c9_2032b34886ae5805b08c3c2cf065ef82_test_secret_babu_full",
49+
"leo": "libops_351fcf8bd637596cbe1e8bdd90dbc4eb_ce22e781d2ad5d7abccc7dd122e791c8_test_secret_leo_full",
50+
"jackie": "libops_af54b89e5533585ab3b70003b7e6dcc2_578e1fcfb4975bffbbf4436835457f73_test_secret_jackie_full",
51+
"peterman": "libops_dfe2b1a880005b6788ad881b036fa4f9_2c3cfb5bc99454c99cb992321bd353cb_test_secret_peterman_full",
52+
"no-access": "libops_e543554b5af05d97ac8f09608bcfa7b8_567df9dc244e561e93c13082534eeec7_test_secret_noaccess_full",
5353

5454
// Limited scope keys
55-
"admin-limited": "libops_d76a9ff9334c548d8ba94063ddb96cf9_01052d4d93be51a39684c357297533cd",
56-
"art-limited": "libops_c19811014bbf5f90b38b901c06fdaad6_fdf35d32bbb35ea3abf2410da575e169",
57-
"bob-limited": "libops_7dd4d68f85f45dbebed083e639a8fab2_94656683e36658b8a39132e0c54ca37e",
58-
"soup-limited": "libops_b6b4b341e1e55242a33d684e4da7ad07_ff2098bd1a335db9806937f2bf5bdba7",
55+
"admin-limited": "libops_01052d4d93be51a39684c357297533cd_d76a9ff9334c548d8ba94063ddb96cf9_test_secret_admin_limited",
56+
"art-limited": "libops_fdf35d32bbb35ea3abf2410da575e169_c19811014bbf5f90b38b901c06fdaad6_test_secret_art_limited",
57+
"bob-limited": "libops_94656683e36658b8a39132e0c54ca37e_7dd4d68f85f45dbebed083e639a8fab2_test_secret_bob_limited",
58+
"soup-limited": "libops_ff2098bd1a335db9806937f2bf5bdba7_b6b4b341e1e55242a33d684e4da7ad07_test_secret_soup_limited",
5959
}
6060

6161
// Test user credentials (email:password) - derived from vault-init.sh
@@ -1051,14 +1051,18 @@ func (tr *TestRunner) testAPIKeyManagement(ctx context.Context) {
10511051
if adminKeySecret == "" {
10521052
return fmt.Errorf("expected API key secret to be returned")
10531053
}
1054-
// Verify new format: libops_{keyUUID}_{accountUUID}
1054+
// Verify new format: libops_{accountUUID}_{keyUUID}_{randomSecret}
10551055
parts := strings.Split(adminKeySecret, "_")
1056-
if len(parts) != 3 || parts[0] != "libops" {
1057-
return fmt.Errorf("expected API key format 'libops_{keyUUID}_{accountUUID}', got: %s", adminKeySecret)
1056+
if len(parts) < 4 || parts[0] != "libops" {
1057+
return fmt.Errorf("expected API key format 'libops_{accountUUID}_{keyUUID}_{randomSecret}', got: %s", adminKeySecret)
10581058
}
10591059
if len(parts[1]) != 32 || len(parts[2]) != 32 {
1060-
return fmt.Errorf("expected 32-char hex UUIDs in API key, got key_uuid=%d chars, account_uuid=%d chars", len(parts[1]), len(parts[2]))
1060+
return fmt.Errorf("expected 32-char hex UUIDs in API key, got account_uuid=%d chars, key_uuid=%d chars", len(parts[1]), len(parts[2]))
10611061
}
1062+
if len(parts[3]) == 0 {
1063+
return fmt.Errorf("expected random secret component in API key, got empty string")
1064+
}
1065+
slog.Info("DEBUG: " + adminKeySecret)
10621066
// Store for later use
10631067
apiKeys["admin-limited"] = adminKeySecret
10641068
fmt.Printf(green(" ✓ Created key %s\n"), adminKeyID)

ci/testdata/vault-init.sh

Lines changed: 34 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,18 @@ vault policy write libops-user - <<EOF
4848
path "identity/oidc/token/libops-api" {
4949
capabilities = ["read", "update"]
5050
}
51+
path "keys/*" {
52+
capabilities = ["create", "update", "read"]
53+
}
54+
5155
EOF
5256

5357
create_test_user() {
5458
email=$1
5559
password=$2
5660
account_id=$3
5761
entity_name=$4
58-
62+
5963
vault_username=$(echo "$email" | tr '@' '_')
6064
vault write "auth/userpass/users/$vault_username" password="$password" policies="libops-user"
6165
vault write identity/entity name="$entity_name" metadata="email=$email" metadata="account_id=$account_id"
@@ -84,62 +88,63 @@ create_test_user "david.puddy@vandelay.com" "password123" "15" "entity-david.pud
8488
create_test_user "uncle.leo@vandelay.com" "password123" "16" "entity-uncle.leo@vandelay.com"
8589
create_test_user "noaccess@test.com" "password123" "17" "entity-noaccess@test.com"
8690

87-
echo 'Creating API keys with format: libops_{keyUUID_no_dashes}_{accountUUID_no_dashes}...'
91+
echo 'Creating API keys with format: libops_{accountUUID_no_dashes}_{keyUUID_no_dashes}_{randomSecret}...'
8892
# Helper function to create API key in new format
8993
create_api_key() {
9094
local account_uuid=$1
9195
local key_uuid=$2
96+
local random_secret=$3
9297
# Strip dashes and convert to lowercase for UUIDs
9398
local account_no_dashes=$(echo "$account_uuid" | tr -d '-' | tr '[:upper:]' '[:lower:]')
9499
local key_no_dashes=$(echo "$key_uuid" | tr -d '-' | tr '[:upper:]' '[:lower:]')
95-
# Format: libops_{keyUUID}_{accountUUID}
96-
local secret="libops_${key_no_dashes}_${account_no_dashes}"
97-
# Store in Vault at keys/{secret} with the secret as the value
98-
vault write keys/"$secret" secret="$secret"
99-
echo "$secret"
100+
# Format: libops_{accountUUID}_{keyUUID}_{randomSecret}
101+
local full_key="libops_${account_no_dashes}_${key_no_dashes}_${random_secret}"
102+
# Store in Vault at keys/{accountUUID}/{keyUUID} with the random secret as the value
103+
vault write keys/"${account_no_dashes}/${key_no_dashes}" secret="$random_secret"
104+
echo "$full_key"
100105
}
101106

102107
# System Administrator Full
103-
ADMIN_FULL=$(create_api_key "01052d4d-93be-51a3-9684-c357297533cd" "075913e7-9328-5264-b684-6ae0163b8096")
108+
ADMIN_FULL=$(create_api_key "01052d4d-93be-51a3-9684-c357297533cd" "075913e7-9328-5264-b684-6ae0163b8096" "test_secret_admin_full")
104109
# Admin Limited
105-
ADMIN_LIMITED=$(create_api_key "01052d4d-93be-51a3-9684-c357297533cd" "d76a9ff9-334c-548d-8ba9-4063ddb96cf9")
110+
ADMIN_LIMITED=$(create_api_key "01052d4d-93be-51a3-9684-c357297533cd" "d76a9ff9-334c-548d-8ba9-4063ddb96cf9" "test_secret_admin_limited")
106111
# Art Vandelay Full
107-
ART_FULL=$(create_api_key "fdf35d32-bbb3-5ea3-abf2-410da575e169" "0f05b4b9-f40c-5ca8-9f39-04de42ae87e4")
112+
ART_FULL=$(create_api_key "fdf35d32-bbb3-5ea3-abf2-410da575e169" "0f05b4b9-f40c-5ca8-9f39-04de42ae87e4" "test_secret_art_full")
108113
# Art Limited
109-
ART_LIMITED=$(create_api_key "fdf35d32-bbb3-5ea3-abf2-410da575e169" "c1981101-4bbf-5f90-b38b-901c06fdaad6")
114+
ART_LIMITED=$(create_api_key "fdf35d32-bbb3-5ea3-abf2-410da575e169" "c1981101-4bbf-5f90-b38b-901c06fdaad6" "test_secret_art_limited")
110115
# Jerry Seinfeld Full
111-
JERRY_FULL=$(create_api_key "964b5eb0-2037-5263-883c-e939c6916d7d" "726186be-6ad8-5257-a1bd-2e4689db11d0")
116+
JERRY_FULL=$(create_api_key "964b5eb0-2037-5263-883c-e939c6916d7d" "726186be-6ad8-5257-a1bd-2e4689db11d0" "test_secret_jerry_full")
112117
# Elaine Benes Full
113-
ELAINE_FULL=$(create_api_key "863fb60a-8084-50fe-82ae-efa113231bef" "b3f360ca-7995-5db2-b88b-3e178cd7ae8a")
118+
ELAINE_FULL=$(create_api_key "863fb60a-8084-50fe-82ae-efa113231bef" "b3f360ca-7995-5db2-b88b-3e178cd7ae8a" "test_secret_elaine_full")
114119
# George Costanza Full
115-
GEORGE_FULL=$(create_api_key "d0bfd257-4572-5036-b5aa-038743be4715" "0c9522b7-2197-5d87-b010-ac1bc506f79a")
120+
GEORGE_FULL=$(create_api_key "d0bfd257-4572-5036-b5aa-038743be4715" "0c9522b7-2197-5d87-b010-ac1bc506f79a" "test_secret_george_full")
116121
# Cosmo Kramer Full
117-
KRAMER_FULL=$(create_api_key "516e3bb4-bfbe-5dda-9cc9-d0e00ce7b6f2" "94581ae6-23e3-5869-8770-db7cb74e5391")
122+
KRAMER_FULL=$(create_api_key "516e3bb4-bfbe-5dda-9cc9-d0e00ce7b6f2" "94581ae6-23e3-5869-8770-db7cb74e5391" "test_secret_kramer_full")
118123
# H.E. Pennypacker Full
119-
PENNYPACKER_FULL=$(create_api_key "42b6846e-501f-5153-9aca-210d8d84f946" "58c99883-c314-5c6e-bfa8-e072502e43bd")
124+
PENNYPACKER_FULL=$(create_api_key "42b6846e-501f-5153-9aca-210d8d84f946" "58c99883-c314-5c6e-bfa8-e072502e43bd" "test_secret_pennypacker_full")
120125
# Newman Full
121-
NEWMAN_FULL=$(create_api_key "e60f6db8-521a-5fc3-aacc-ceb3f50b6f7b" "3ccc3cc2-e5c0-530b-8f0a-6fb24cd8566b")
126+
NEWMAN_FULL=$(create_api_key "e60f6db8-521a-5fc3-aacc-ceb3f50b6f7b" "3ccc3cc2-e5c0-530b-8f0a-6fb24cd8566b" "test_secret_newman_full")
122127
# Bob Sacamano Full
123-
BOB_FULL=$(create_api_key "94656683-e366-58b8-a391-32e0c54ca37e" "63cd920a-7090-5e0e-b46d-840a933e2c70")
128+
BOB_FULL=$(create_api_key "94656683-e366-58b8-a391-32e0c54ca37e" "63cd920a-7090-5e0e-b46d-840a933e2c70" "test_secret_bob_full")
124129
# Bob Limited
125-
BOB_LIMITED=$(create_api_key "94656683-e366-58b8-a391-32e0c54ca37e" "7dd4d68f-85f4-5dbe-bed0-83e639a8fab2")
130+
BOB_LIMITED=$(create_api_key "94656683-e366-58b8-a391-32e0c54ca37e" "7dd4d68f-85f4-5dbe-bed0-83e639a8fab2" "test_secret_bob_limited")
126131
# Joe Davola Full
127-
JOE_FULL=$(create_api_key "0f439d32-e065-5a20-a08e-22dd6793948a" "890e0976-5b43-5ff8-a673-921a920e7c2a")
132+
JOE_FULL=$(create_api_key "0f439d32-e065-5a20-a08e-22dd6793948a" "890e0976-5b43-5ff8-a673-921a920e7c2a" "test_secret_joe_full")
128133
# Soup Nazi Full
129-
SOUP_FULL=$(create_api_key "ff2098bd-1a33-5db9-8069-37f2bf5bdba7" "43527224-d0f8-5344-803f-ec80f80ed0a0")
134+
SOUP_FULL=$(create_api_key "ff2098bd-1a33-5db9-8069-37f2bf5bdba7" "43527224-d0f8-5344-803f-ec80f80ed0a0" "test_secret_soup_full")
130135
# Soup Nazi Limited
131-
SOUP_LIMITED=$(create_api_key "ff2098bd-1a33-5db9-8069-37f2bf5bdba7" "b6b4b341-e1e5-5242-a33d-684e4da7ad07")
136+
SOUP_LIMITED=$(create_api_key "ff2098bd-1a33-5db9-8069-37f2bf5bdba7" "b6b4b341-e1e5-5242-a33d-684e4da7ad07" "test_secret_soup_limited")
132137
# Babu Bhatt Full
133-
BABU_FULL=$(create_api_key "a551424b-91ed-5636-a53b-cdb50660d4c9" "2032b348-86ae-5805-b08c-3c2cf065ef82")
138+
BABU_FULL=$(create_api_key "a551424b-91ed-5636-a53b-cdb50660d4c9" "2032b348-86ae-5805-b08c-3c2cf065ef82" "test_secret_babu_full")
134139
# Jackie Chiles Full
135-
JACKIE_FULL=$(create_api_key "af54b89e-5533-585a-b3b7-0003b7e6dcc2" "578e1fcf-b497-5bff-bbf4-436835457f73")
140+
JACKIE_FULL=$(create_api_key "af54b89e-5533-585a-b3b7-0003b7e6dcc2" "578e1fcf-b497-5bff-bbf4-436835457f73" "test_secret_jackie_full")
136141
# J. Peterman Full
137-
PETERMAN_FULL=$(create_api_key "dfe2b1a8-8000-5b67-88ad-881b036fa4f9" "2c3cfb5b-c994-54c9-9cb9-92321bd353cb")
142+
PETERMAN_FULL=$(create_api_key "dfe2b1a8-8000-5b67-88ad-881b036fa4f9" "2c3cfb5b-c994-54c9-9cb9-92321bd353cb" "test_secret_peterman_full")
138143
# David Puddy Full
139-
PUDDY_FULL=$(create_api_key "22f49023-8dfe-57c7-95db-dd0f8cae04a7" "eb181a1b-7dc9-53c2-9981-ba91a3ebf24a")
144+
PUDDY_FULL=$(create_api_key "22f49023-8dfe-57c7-95db-dd0f8cae04a7" "eb181a1b-7dc9-53c2-9981-ba91a3ebf24a" "test_secret_puddy_full")
140145
# Uncle Leo Full
141-
LEO_FULL=$(create_api_key "351fcf8b-d637-596c-be1e-8bdd90dbc4eb" "ce22e781-d2ad-5d7a-bccc-7dd122e791c8")
146+
LEO_FULL=$(create_api_key "351fcf8b-d637-596c-be1e-8bdd90dbc4eb" "ce22e781-d2ad-5d7a-bccc-7dd122e791c8" "test_secret_leo_full")
142147
# No Access User Full
143-
NO_ACCESS=$(create_api_key "e543554b-5af0-5d97-ac8f-09608bcfa7b8" "567df9dc-244e-561e-93c1-3082534eeec7")
148+
NO_ACCESS=$(create_api_key "e543554b-5af0-5d97-ac8f-09608bcfa7b8" "567df9dc-244e-561e-93c1-3082534eeec7" "test_secret_noaccess_full")
144149

145-
echo 'Vault initialization complete!'
150+
echo 'Vault initialization complete!'

conf/init/docker-entrypoint.sh

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ vault write identity/oidc/client/libops-api \
7272
vault write identity/oidc/provider/libops-api \
7373
allowed_client_ids="*" \
7474
scopes="openid,email,profile" \
75-
issuer_host="http://vault:8200"
75+
issuer_host="http://vault.libops.io"
7676

7777
# Create an OIDC role for token generation
7878
# This binds the key and template for direct token requests
@@ -104,6 +104,18 @@ for FILE in policies/*; do
104104
vault policy write "$ROLE" "policies/$FILE"
105105
done
106106

107+
# Create production userpass users (matching seed data in conf/mariadb/seed.sql)
108+
# These correspond to the accounts seeded in the database
109+
echo "Creating production userpass users..."
110+
111+
# joe@libops.io - Account ID 1, entity ID e0000000-0000-0000-0000-000000000001
112+
vault write auth/userpass/users/joe_libops.io password="ChangeMe123!" policies="libops-user"
113+
vault write identity/entity name="joe@libops.io" metadata="email=joe@libops.io" metadata="account_id=1"
114+
entity_id=$(vault read -field=id identity/entity/name/joe@libops.io)
115+
accessor=$(vault auth list | grep "^userpass/" | awk '{print $3}')
116+
vault write identity/entity-alias name="joe_libops.io" canonical_id="$entity_id" mount_accessor="$accessor"
117+
echo "Created user: joe_libops.io (entity: $entity_id)"
118+
107119
echo "Vault initialization complete!"
108120

109121

conf/mariadb/seed.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ SELECT
1414
UNHEX(REPLACE('10000000-0000-0000-0000-000000000001', '-', '')),
1515
'joe@libops.io',
1616
'Joe Corall',
17-
'google',
17+
'userpass',
1818
TRUE,
19-
'e0000000-0000-0000-0000-000000000001',
19+
NULL,
2020
NOW()
2121
FROM
2222
DUAL
@@ -30,7 +30,7 @@ SELECT
3030
'Joe Corall (external)',
3131
'google',
3232
TRUE,
33-
'e0000000-0000-0000-0000-000000000002',
33+
NULL,
3434
NOW()
3535
FROM
3636
DUAL
Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,35 @@
11
http:
22
routers:
33
docs-redirect:
4-
rule: (Host(`dash.libops.io` || Host(`api.libops.io`)) && Path(`/`)
4+
rule: (Header(`X-Forwarded-Host`, `dash.libops.io`) || Header(`X-Forwarded-Host`, `api.libops.io`)) && Path(`/`)
55
entryPoints:
66
- http
77
priority: 99
8-
service: api-docs-noop@internal
8+
service: noop@internal
99
middlewares:
1010
- docs-redirect
1111

1212
api:
13-
rule: Host(`api.libops.io`) && (PathPrefix(`/v1`) || PathPrefix(`/auth`))
13+
rule: Host(`api.libops.io`) || Header(`X-Forwarded-Host`, `api.libops.io`) || Header(`X-Forwarded-Host`, `dash.libops.io`)
1414
entryPoints:
1515
- http
1616
priority: 90
1717
service: api
1818

1919
vault:
20-
rule: Host(`vault`) || (Host(`api.libops.io`) && (PathPrefix(`/ui/vault/identity/oidc/`) || PathPrefix(`/ui/assets/`) || PathPrefix(`/ui/sw-registration`)))
20+
rule: Host(`vault.libops.io`) || Host(`vault`) || (Header(`X-Forwarded-Host`, `vault.libops.io`) && (PathPrefix(`/ui/vault/identity/oidc/`) || PathPrefix(`/ui/assets/`) || PathPrefix(`/ui/sw-registration`)))
2121
entryPoints:
2222
- http
2323
priority: 80
2424
service: vault
2525

2626
docs:
27-
rule: Host(`docs.libops.io`)
27+
rule: Host(`docs.libops.io`) || Header(`X-Forwarded-Host`, `docs.libops.io`)
2828
entryPoints:
2929
- http
3030
priority: 10
3131
service: docs
3232

33-
dash:
34-
rule: Host(`dash.libops.io`) && !PathPrefix(`/v1`) && !PathPrefix(`/auth`)
35-
entryPoints:
36-
- http
37-
priority: 10
38-
service: api
39-
4033
middlewares:
4134
docs-redirect:
4235
redirectRegex:

conf/vault/server.hcl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ default_max_request_duration = "90s"
22
disable_clustering = true
33
disable_mlock = true
44
ui = true
5-
api_addr = "http://vault:8200"
5+
api_addr = "http://vault.libops.io"
66

77
listener "tcp" {
88
address = "0.0.0.0:8200"

0 commit comments

Comments
 (0)