Docker
docker-compose.yaml
Section titled “docker-compose.yaml”services:
db: image: postgres:16 container_name: db environment: POSTGRES_DB: ${DB_NAME} POSTGRES_USER: ${DB_USER} POSTGRES_PASSWORD: ${DB_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data - ./db/init-multiple-dbs.sh:/docker-entrypoint-initdb.d/init-multiple-dbs.sh ports: - "5432:5432" restart: unless-stopped
keycloak: image: quay.io/keycloak/keycloak:26.3 container_name: keycloak ports: - "8080:8080" environment: KC_DB: postgres KC_DB_URL: jdbc:postgresql://db:5432/keycloak KC_DB_USERNAME: ${DB_USER} KC_DB_PASSWORD: ${DB_PASSWORD} KC_BOOTSTRAP_ADMIN_USERNAME: ${KEYCLOAK_ADMIN_USER} KC_BOOTSTRAP_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD} KC_HTTP_ENABLED: true KC_HOSTNAME: keycloak KC_HOSTNAME_PORT: 8080 KC_HOSTNAME_STRICT: false KC_PROXY: edge command: ["start-dev"] depends_on: - db restart: unless-stopped extra_hosts: - "keycloak.local:host-gateway"
vault: image: hashicorp/vault:1.21.1 container_name: vault ports: - "8200:8200" environment: VAULT_DEV_ROOT_TOKEN_ID: ${VAULT_TOKEN} VAULT_ADDR: http://0.0.0.0:8200 volumes: - vault_data:/vault/file restart: unless-stopped
directory: image: sysadminanywhere/directory:latest container_name: directory environment: LDAP_SERVER: ${LDAP_SERVER} LDAP_PORT: ${LDAP_PORT} LDAP_USE_SSL: ${LDAP_USE_SSL} LDAP_USERNAME: ${LDAP_USERNAME} LDAP_PASSWORD: ${LDAP_PASSWORD} KEYCLOAK_CLIENT_ID: ${KEYCLOAK_CLIENT_ID} KEYCLOAK_CLIENT_SECRET: ${KEYCLOAK_CLIENT_SECRET} KEYCLOAK_REDIRECT_URI: ${KEYCLOAK_REDIRECT_URI} KEYCLOAK_ISSUER_URI: ${KEYCLOAK_ISSUER_URI} VAULT_URI: http://vault:8200 VAULT_TOKEN: ${VAULT_TOKEN} KAFKA_HOST: ${KAFKA_HOST} SPRING_PROFILES_ACTIVE: prod depends_on: - vault ports: - "8081:8080"
inventory: image: sysadminanywhere/inventory:latest container_name: inventory environment: DB_ADDRESS: db DB_PORT: 5432 DB_BASE: inventory DB_USER: ${DB_USER} DB_PASSWORD: ${DB_PASSWORD} KEYCLOAK_CLIENT_ID: ${KEYCLOAK_CLIENT_ID} KEYCLOAK_CLIENT_SECRET: ${KEYCLOAK_CLIENT_SECRET} KEYCLOAK_REDIRECT_URI: ${KEYCLOAK_REDIRECT_URI} KEYCLOAK_ISSUER_URI: ${KEYCLOAK_ISSUER_URI} KAFKA_HOST: ${KAFKA_HOST} DIRECTORY_SERVICE: http://directory:8080 SPRING_PROFILES_ACTIVE: prod depends_on: - db - directory ports: - "8082:8080"
sysadminanywhere: image: sysadminanywhere/sysadminanywhere:latest container_name: sysadminanywhere ports: - "9090:8080" environment: DB_ADDRESS: db DB_PORT: 5432 DB_BASE: sysadminanywhere DB_USER: ${DB_USER} DB_PASSWORD: ${DB_PASSWORD} LDAP_GROUPS_ADMINS: "Domain Admins" LDAP_GROUPS_USERS: "Domain Users" KEYCLOAK_CLIENT_ID: ${KEYCLOAK_CLIENT_ID} KEYCLOAK_CLIENT_SECRET: ${KEYCLOAK_CLIENT_SECRET} KEYCLOAK_REDIRECT_URI: ${KEYCLOAK_REDIRECT_URI} KEYCLOAK_ISSUER_URI: ${KEYCLOAK_ISSUER_URI} KEYCLOAK_LOGOUT_URI: ${KEYCLOAK_LOGOUT_URI} DIRECTORY_SERVICE: http://directory:8081 INVENTORY_SERVICE: http://inventory:8082 N8N_API_KEY: ${N8N_API_KEY} SPRING_PROFILES_ACTIVE: prod depends_on: - db - directory
volumes: postgres_data: vault_data: zookeeper_data: zookeeper_log: kafka_data: n8n_data:# DatabaseDB_NAME=sysadminanywhereDB_USER=[DB_USER]DB_PASSWORD=[DB_PASSWORD]
# KeycloakKEYCLOAK_ADMIN_USER=[KEYCLOAK_ADMIN_USER]KEYCLOAK_ADMIN_PASSWORD=[KEYCLOAK_ADMIN_PASSWORD]
# Keycloak OAuthKEYCLOAK_CLIENT_ID=sysadminanywhereKEYCLOAK_CLIENT_SECRET=[KEYCLOAK_CLIENT_SECRET]KEYCLOAK_REDIRECT_URI=http://localhost:9090/login/oauth2/code/keycloakKEYCLOAK_ISSUER_URI=http://keycloak:8080/realms/sysadminanywhereKEYCLOAK_LOGOUT_URI=http://keycloak:8080/realms/sysadminanywhere/protocol/openid-connect/logout
# LDAPLDAP_SERVER=[LDAP_SERVER]LDAP_PORT=389LDAP_USE_SSL=falseLDAP_USERNAME=[LDAP_USERNAME]LDAP_PASSWORD=[LDAP_PASSWORD]
# VaultVAULT_TOKEN=[VAULT_TOKEN]
# N8NN8N_HOST=http://localhost:5678N8N_API_KEY=[N8N_API_KEY]
# KafkaKAFKA_HOST=kafka:9092Replace the values specified in [VALUE_NAME] with actual values. Change service addresses and ports if necessary. After configuring all services and specifying the necessary parameters, restart them.
You can now access the service at http://localhost:9090