Compare commits
2 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
d4c43c527d | 4 years ago |
|
|
4418eef8d9 | 4 years ago |
60 changed files with 1987 additions and 75 deletions
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
version: '3' |
||||
|
||||
services: |
||||
bitwarden: |
||||
image: vaultwarden/server:latest |
||||
container_name: mistborn_production_bitwarden |
||||
env_file: |
||||
- ../.envs/.production/.bitwarden |
||||
volumes: |
||||
- ../../mistborn_volumes/extra/bitwarden:/data |
||||
labels: |
||||
- "traefik.enable=true" |
||||
- "traefik.http.routers.bitwarden-http.rule=Host(`bitwarden.mistborn`)" |
||||
- "traefik.http.routers.bitwarden-http.entrypoints=web" |
||||
- "traefik.http.routers.bitwarden-http.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.bitwarden-https.rule=Host(`bitwarden.mistborn`)" |
||||
- "traefik.http.routers.bitwarden-https.entrypoints=websecure" |
||||
- "traefik.http.routers.bitwarden-https.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.bitwarden-https.tls.certresolver=basic" |
||||
- "traefik.http.services.bitwarden-service.loadbalancer.server.port=80" |
||||
ports: |
||||
- "${MISTBORN_BIND_IP}:3012:3012/tcp" |
||||
restart: unless-stopped |
||||
|
||||
networks: |
||||
default: |
||||
external: |
||||
name: mistborn_default |
||||
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
version: '3.7' |
||||
|
||||
services: |
||||
|
||||
elasticsearch: |
||||
image: amazon/opendistro-for-elasticsearch:1.13.2 |
||||
hostname: elasticsearch |
||||
restart: unless-stopped |
||||
ports: |
||||
- "${MISTBORN_BIND_IP}:9200:9200" |
||||
environment: |
||||
- discovery.type=single-node |
||||
- cluster.name=mistborn-cluster |
||||
- network.host=0.0.0.0 |
||||
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" |
||||
- bootstrap.memory_lock=true |
||||
volumes: |
||||
- ../../mistborn_volumes/extra/elasticsearch/init/internal_users.yml:/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml |
||||
ulimits: |
||||
memlock: |
||||
soft: -1 |
||||
hard: -1 |
||||
nofile: |
||||
soft: 65536 |
||||
hard: 65536 |
||||
|
||||
networks: |
||||
default: |
||||
external: |
||||
name: mistborn_default |
||||
@ -0,0 +1,72 @@
@@ -0,0 +1,72 @@
|
||||
version: '3' |
||||
|
||||
# services |
||||
services: |
||||
# guacd |
||||
guacd: |
||||
container_name: mistborn_production_guacd |
||||
image: guacamole/guacd:1.3.0 |
||||
networks: |
||||
guacnetwork: |
||||
restart: unless-stopped |
||||
volumes: |
||||
- ../../mistborn_volumes/extra/guacamole/drive:/drive:rw |
||||
- ../../mistborn_volumes/extra/guacamole/record:/record:rw |
||||
|
||||
|
||||
# postgres |
||||
guac_postgres: |
||||
container_name: mistborn_production_guac_postgres |
||||
env_file: |
||||
- ../.envs/.production/.guacamole |
||||
environment: |
||||
PGDATA: /var/lib/postgresql/data/guacamole |
||||
image: postgres |
||||
networks: |
||||
guacnetwork: |
||||
restart: unless-stopped |
||||
volumes: |
||||
- ../../mistborn_volumes/extra/guacamole/init:/docker-entrypoint-initdb.d:ro |
||||
- ../../mistborn_volumes/extra/guacamole/data:/var/lib/postgresql/data:rw |
||||
|
||||
|
||||
# guacamole |
||||
guacamole: |
||||
container_name: mistborn_production_guacamole |
||||
labels: |
||||
- "traefik.enable=true" |
||||
- "traefik.http.routers.guacamole-http.rule=Host(`guac.mistborn`)" |
||||
- "traefik.http.routers.guacamole-http.entrypoints=web" |
||||
- "traefik.http.routers.guacamole-http.middlewares=mistborn_auth@file,add-guacamole" |
||||
- "traefik.http.routers.guacamole-https.rule=Host(`guac.mistborn`)" |
||||
- "traefik.http.routers.guacamole-https.entrypoints=websecure" |
||||
- "traefik.http.routers.guacamole-https.middlewares=mistborn_auth@file,add-guacamole" |
||||
- "traefik.http.routers.guacamole-https.tls.certresolver=basic" |
||||
- "traefik.http.middlewares.add-guacamole.addPrefix.prefix=/guacamole" |
||||
- "traefik.http.services.guacamole-service.loadbalancer.server.port=8080" |
||||
depends_on: |
||||
- guacd |
||||
- guac_postgres |
||||
environment: |
||||
GUACD_HOSTNAME: guacd |
||||
GUACD_PORT: 4822 |
||||
#GUACAMOLE_HOME: /config |
||||
env_file: |
||||
- ../.envs/.production/.guacamole |
||||
image: guacamole/guacamole:1.3.0 |
||||
links: |
||||
- guacd |
||||
networks: |
||||
guacnetwork: |
||||
#ports: |
||||
## enable next line if not using nginx |
||||
## - 8080:8080/tcp # Guacamole is on :8080/guacamole, not /. |
||||
## enable next line when using nginx |
||||
#- 8080/tcp |
||||
restart: unless-stopped |
||||
|
||||
# networks |
||||
# create a network 'guacnetwork' in mode 'bridged' |
||||
networks: |
||||
guacnetwork: |
||||
driver: bridge |
||||
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
version: '3' |
||||
|
||||
services: |
||||
homeassistant: |
||||
container_name: mistborn_production_home_assistant |
||||
image: homeassistant/home-assistant:stable |
||||
volumes: |
||||
- ../../mistborn_volumes/extra/homeassistant/config:/config |
||||
environment: |
||||
- TZ=America/New_York |
||||
labels: |
||||
- "traefik.enable=true" |
||||
- "traefik.http.routers.homeassistant-http.rule=Host(`homeassistant.mistborn`)" |
||||
- "traefik.http.routers.homeassistant-http.entrypoints=web" |
||||
- "traefik.http.routers.homeassistant-http.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.homeassistant-https.rule=Host(`homeassistant.mistborn`)" |
||||
- "traefik.http.routers.homeassistant-https.entrypoints=websecure" |
||||
- "traefik.http.routers.homeassistant-https.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.homeassistant-https.tls.certresolver=basic" |
||||
- "traefik.http.services.homeassistant-service.loadbalancer.server.port=8123" |
||||
restart: unless-stopped |
||||
|
||||
networks: |
||||
default: |
||||
external: |
||||
name: mistborn_default |
||||
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
version: '3' |
||||
|
||||
volumes: |
||||
production_jellyfin_config: {} |
||||
production_jellyfin_cache: {} |
||||
|
||||
services: |
||||
jellyfin: |
||||
image: jellyfin/jellyfin:latest |
||||
container_name: mistborn_production_jellyfin |
||||
volumes: |
||||
- production_jellyfin_config:/config |
||||
- production_jellyfin_cache:/cache |
||||
- ../../mistborn_volumes/extra/nextcloud:/media:ro |
||||
labels: |
||||
- "traefik.enable=true" |
||||
- "traefik.http.routers.jellyfin-http.rule=Host(`jellyfin.mistborn`)" |
||||
- "traefik.http.routers.jellyfin-http.entrypoints=web" |
||||
- "traefik.http.routers.jellyfin-http.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.jellyfin-https.rule=Host(`jellyfin.mistborn`)" |
||||
- "traefik.http.routers.jellyfin-https.entrypoints=websecure" |
||||
- "traefik.http.routers.jellyfin-https.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.jellyfin-https.tls.certresolver=basic" |
||||
- "traefik.http.services.jellyfin-service.loadbalancer.server.port=8096" |
||||
restart: unless-stopped |
||||
|
||||
networks: |
||||
default: |
||||
external: |
||||
name: mistborn_default |
||||
@ -0,0 +1,255 @@
@@ -0,0 +1,255 @@
|
||||
version: '3' |
||||
|
||||
services: |
||||
# Frontend |
||||
jitsi-web: |
||||
image: jitsi/web:latest |
||||
restart: unless-stopped |
||||
#ports: |
||||
#- '${HTTP_PORT}:80' |
||||
#- '${HTTPS_PORT}:443' |
||||
labels: |
||||
- "traefik.enable=true" |
||||
- "traefik.http.routers.jitsi-http.rule=Host(`jitsi.mistborn`)" |
||||
- "traefik.http.routers.jitsi-http.entrypoints=web" |
||||
- "traefik.http.routers.jitsi-http.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.jitsi-https.rule=Host(`jitsi.mistborn`)" |
||||
- "traefik.http.routers.jitsi-https.entrypoints=websecure" |
||||
- "traefik.http.routers.jitsi-https.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.jitsi-https.tls.certresolver=basic" |
||||
- "traefik.http.services.jitsi-service.loadbalancer.server.port=${HTTP_PORT}" |
||||
volumes: |
||||
- ${CONFIG}/web:/config:Z |
||||
- ${CONFIG}/transcripts:/usr/share/jitsi-meet/transcripts:Z |
||||
env_file: |
||||
- ../.envs/.production/.jitsi |
||||
environment: |
||||
- ENABLE_LETSENCRYPT |
||||
- ENABLE_HTTP_REDIRECT |
||||
- ENABLE_XMPP_WEBSOCKET |
||||
- DISABLE_HTTPS |
||||
- LETSENCRYPT_DOMAIN |
||||
- LETSENCRYPT_EMAIL |
||||
- LETSENCRYPT_USE_STAGING |
||||
- PUBLIC_URL |
||||
- TZ |
||||
- AMPLITUDE_ID |
||||
- ANALYTICS_SCRIPT_URLS |
||||
- ANALYTICS_WHITELISTED_EVENTS |
||||
- BRIDGE_CHANNEL |
||||
- BRANDING_DATA_URL |
||||
- CALLSTATS_CUSTOM_SCRIPT_URL |
||||
- CALLSTATS_ID |
||||
- CALLSTATS_SECRET |
||||
- CHROME_EXTENSION_BANNER_JSON |
||||
- CONFCODE_URL |
||||
- CONFIG_EXTERNAL_CONNECT |
||||
- DEPLOYMENTINFO_ENVIRONMENT |
||||
- DEPLOYMENTINFO_ENVIRONMENT_TYPE |
||||
- DEPLOYMENTINFO_USERREGION |
||||
- DIALIN_NUMBERS_URL |
||||
- DIALOUT_AUTH_URL |
||||
- DIALOUT_CODES_URL |
||||
- DROPBOX_APPKEY |
||||
- DROPBOX_REDIRECT_URI |
||||
- ENABLE_AUDIO_PROCESSING |
||||
- ENABLE_AUTH |
||||
- ENABLE_CALENDAR |
||||
- ENABLE_FILE_RECORDING_SERVICE |
||||
- ENABLE_FILE_RECORDING_SERVICE_SHARING |
||||
- ENABLE_GUESTS |
||||
- ENABLE_IPV6 |
||||
- ENABLE_LIPSYNC |
||||
- ENABLE_NO_AUDIO_DETECTION |
||||
- ENABLE_P2P |
||||
- ENABLE_PREJOIN_PAGE |
||||
- ENABLE_RECORDING |
||||
- ENABLE_REMB |
||||
- ENABLE_REQUIRE_DISPLAY_NAME |
||||
- ENABLE_SIMULCAST |
||||
- ENABLE_STATS_ID |
||||
- ENABLE_STEREO |
||||
- ENABLE_SUBDOMAINS |
||||
- ENABLE_TALK_WHILE_MUTED |
||||
- ENABLE_TCC |
||||
- ENABLE_TRANSCRIPTIONS |
||||
- ETHERPAD_PUBLIC_URL |
||||
- ETHERPAD_URL_BASE |
||||
- GOOGLE_ANALYTICS_ID |
||||
- GOOGLE_API_APP_CLIENT_ID |
||||
- INVITE_SERVICE_URL |
||||
- JICOFO_AUTH_USER |
||||
- MATOMO_ENDPOINT |
||||
- MATOMO_SITE_ID |
||||
- MICROSOFT_API_APP_CLIENT_ID |
||||
- NGINX_RESOLVER |
||||
- NGINX_WORKER_PROCESSES |
||||
- NGINX_WORKER_CONNECTIONS |
||||
- PEOPLE_SEARCH_URL |
||||
- RESOLUTION |
||||
- RESOLUTION_MIN |
||||
- RESOLUTION_WIDTH |
||||
- RESOLUTION_WIDTH_MIN |
||||
- START_AUDIO_ONLY |
||||
- START_AUDIO_MUTED |
||||
- START_BITRATE |
||||
- START_VIDEO_MUTED |
||||
- TESTING_CAP_SCREENSHARE_BITRATE |
||||
- TESTING_OCTO_PROBABILITY |
||||
- XMPP_AUTH_DOMAIN |
||||
- XMPP_BOSH_URL_BASE |
||||
- XMPP_DOMAIN |
||||
- XMPP_GUEST_DOMAIN |
||||
- XMPP_MUC_DOMAIN |
||||
- XMPP_RECORDER_DOMAIN |
||||
- TOKEN_AUTH_URL |
||||
networks: |
||||
default: |
||||
meet.jitsi: |
||||
aliases: |
||||
- ${XMPP_DOMAIN} |
||||
|
||||
# XMPP server |
||||
jitsi-prosody: |
||||
image: jitsi/prosody:latest |
||||
restart: unless-stopped |
||||
expose: |
||||
- '5222' |
||||
- '5347' |
||||
- '5280' |
||||
volumes: |
||||
- ${CONFIG}/prosody/config:/config:Z |
||||
- ${CONFIG}/prosody/prosody-plugins-custom:/prosody-plugins-custom:Z |
||||
env_file: |
||||
- ../.envs/.production/.jitsi |
||||
environment: |
||||
- AUTH_TYPE |
||||
- ENABLE_AUTH |
||||
- ENABLE_GUESTS |
||||
- ENABLE_LOBBY |
||||
- ENABLE_XMPP_WEBSOCKET |
||||
- GLOBAL_MODULES |
||||
- GLOBAL_CONFIG |
||||
- LDAP_URL |
||||
- LDAP_BASE |
||||
- LDAP_BINDDN |
||||
- LDAP_BINDPW |
||||
- LDAP_FILTER |
||||
- LDAP_AUTH_METHOD |
||||
- LDAP_VERSION |
||||
- LDAP_USE_TLS |
||||
- LDAP_TLS_CIPHERS |
||||
- LDAP_TLS_CHECK_PEER |
||||
- LDAP_TLS_CACERT_FILE |
||||
- LDAP_TLS_CACERT_DIR |
||||
- LDAP_START_TLS |
||||
- XMPP_DOMAIN |
||||
- XMPP_AUTH_DOMAIN |
||||
- XMPP_GUEST_DOMAIN |
||||
- XMPP_MUC_DOMAIN |
||||
- XMPP_INTERNAL_MUC_DOMAIN |
||||
- XMPP_MODULES |
||||
- XMPP_MUC_MODULES |
||||
- XMPP_INTERNAL_MUC_MODULES |
||||
- XMPP_RECORDER_DOMAIN |
||||
- XMPP_CROSS_DOMAIN |
||||
- JICOFO_COMPONENT_SECRET |
||||
- JICOFO_AUTH_USER |
||||
- JICOFO_AUTH_PASSWORD |
||||
- JVB_AUTH_USER |
||||
- JVB_AUTH_PASSWORD |
||||
- JIGASI_XMPP_USER |
||||
- JIGASI_XMPP_PASSWORD |
||||
- JIBRI_XMPP_USER |
||||
- JIBRI_XMPP_PASSWORD |
||||
- JIBRI_RECORDER_USER |
||||
- JIBRI_RECORDER_PASSWORD |
||||
- JWT_APP_ID |
||||
- JWT_APP_SECRET |
||||
- JWT_ACCEPTED_ISSUERS |
||||
- JWT_ACCEPTED_AUDIENCES |
||||
- JWT_ASAP_KEYSERVER |
||||
- JWT_ALLOW_EMPTY |
||||
- JWT_AUTH_TYPE |
||||
- JWT_TOKEN_AUTH_MODULE |
||||
- LOG_LEVEL |
||||
- PUBLIC_URL |
||||
- TZ |
||||
networks: |
||||
meet.jitsi: |
||||
aliases: |
||||
- ${XMPP_SERVER} |
||||
|
||||
# Focus component |
||||
jitsi-jicofo: |
||||
image: jitsi/jicofo:latest |
||||
restart: unless-stopped |
||||
volumes: |
||||
- ${CONFIG}/jicofo:/config:Z |
||||
env_file: |
||||
- ../.envs/.production/.jitsi |
||||
environment: |
||||
- AUTH_TYPE |
||||
- ENABLE_AUTH |
||||
- XMPP_DOMAIN |
||||
- XMPP_AUTH_DOMAIN |
||||
- XMPP_INTERNAL_MUC_DOMAIN |
||||
- XMPP_MUC_DOMAIN |
||||
- XMPP_SERVER |
||||
- JICOFO_COMPONENT_SECRET |
||||
- JICOFO_AUTH_USER |
||||
- JICOFO_AUTH_PASSWORD |
||||
- JICOFO_RESERVATION_REST_BASE_URL |
||||
- JVB_BREWERY_MUC |
||||
- JIGASI_BREWERY_MUC |
||||
- JIGASI_SIP_URI |
||||
- JIBRI_BREWERY_MUC |
||||
- JIBRI_PENDING_TIMEOUT |
||||
- TZ |
||||
depends_on: |
||||
- jitsi-prosody |
||||
networks: |
||||
meet.jitsi: |
||||
|
||||
# Video bridge |
||||
jitsi-jvb: |
||||
image: jitsi/jvb:latest |
||||
restart: unless-stopped |
||||
ports: |
||||
- "${MISTBORN_BIND_IP}:${JVB_PORT}:${JVB_PORT}/udp" |
||||
- "${MISTBORN_BIND_IP}:${JVB_TCP_PORT}:${JVB_TCP_PORT}" |
||||
volumes: |
||||
- ${CONFIG}/jvb:/config:Z |
||||
env_file: |
||||
- ../.envs/.production/.jitsi |
||||
environment: |
||||
- DOCKER_HOST_ADDRESS |
||||
- XMPP_AUTH_DOMAIN |
||||
- XMPP_INTERNAL_MUC_DOMAIN |
||||
- XMPP_SERVER |
||||
- JVB_AUTH_USER |
||||
- JVB_AUTH_PASSWORD |
||||
- JVB_BREWERY_MUC |
||||
- JVB_PORT |
||||
- JVB_TCP_HARVESTER_DISABLED |
||||
- JVB_TCP_PORT |
||||
- JVB_TCP_MAPPED_PORT |
||||
- JVB_STUN_SERVERS |
||||
- JVB_ENABLE_APIS |
||||
- JVB_WS_DOMAIN |
||||
- JVB_WS_SERVER_ID |
||||
- PUBLIC_URL |
||||
- TZ |
||||
depends_on: |
||||
- jitsi-prosody |
||||
networks: |
||||
meet.jitsi: |
||||
aliases: |
||||
- jvb.meet.jitsi |
||||
|
||||
# Custom network so all services can communicate using a FQDN |
||||
networks: |
||||
default: |
||||
external: |
||||
name: mistborn_default |
||||
meet.jitsi: |
||||
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
version: '3' |
||||
|
||||
services: |
||||
nextcloud: |
||||
image: nextcloud |
||||
container_name: mistborn_production_nextcloud |
||||
env_file: |
||||
- ../.envs/.production/.postgres |
||||
- ../.envs/.production/.nextcloud |
||||
labels: |
||||
- "traefik.enable=true" |
||||
- "traefik.http.routers.nextcloud-http.rule=Host(`nextcloud.mistborn`)" |
||||
- "traefik.http.routers.nextcloud-http.entrypoints=web" |
||||
- "traefik.http.routers.nextcloud-http.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.nextcloud-https.rule=Host(`nextcloud.mistborn`)" |
||||
- "traefik.http.routers.nextcloud-https.entrypoints=websecure" |
||||
- "traefik.http.routers.nextcloud-https.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.nextcloud-https.tls.certresolver=basic" |
||||
- "traefik.http.services.nextcloud-service.loadbalancer.server.port=80" |
||||
volumes: |
||||
- ../../mistborn_volumes/extra/nextcloud:/var/www/html |
||||
environment: |
||||
- VIRTUAL_HOST=nextcloud.mistborn |
||||
restart: unless-stopped |
||||
|
||||
networks: |
||||
default: |
||||
external: |
||||
name: mistborn_default |
||||
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
version: '3' |
||||
|
||||
services: |
||||
onlyoffice: |
||||
container_name: mistborn_production_onlyoffice |
||||
image: onlyoffice/documentserver:latest |
||||
volumes: |
||||
- ../../mistborn_volumes/extra/onlyoffice/logs:/var/log/onlyoffice |
||||
- ../../mistborn_volumes/extra/onlyoffice/cache:/var/lib/onlyoffice |
||||
env_file: |
||||
- ../.envs/.production/.onlyoffice |
||||
labels: |
||||
- "traefik.enable=true" |
||||
- "traefik.http.routers.onlyoffice-http.rule=Host(`onlyoffice.mistborn`)" |
||||
- "traefik.http.routers.onlyoffice-http.entrypoints=web" |
||||
- "traefik.http.routers.onlyoffice-http.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.onlyoffice-https.rule=Host(`onlyoffice.mistborn`)" |
||||
- "traefik.http.routers.onlyoffice-https.entrypoints=websecure" |
||||
- "traefik.http.routers.onlyoffice-https.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.onlyoffice-https.tls.certresolver=basic" |
||||
- "traefik.http.services.onlyoffice-service.loadbalancer.server.port=80" |
||||
restart: unless-stopped |
||||
|
||||
networks: |
||||
default: |
||||
external: |
||||
name: mistborn_default |
||||
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
version: '3' |
||||
|
||||
services: |
||||
raspap: |
||||
image: "cyber5k/raspap:${MISTBORN_TAG}" |
||||
container_name: mistborn_production_raspap |
||||
#network_mode: host |
||||
labels: |
||||
- "traefik.enable=true" |
||||
- "traefik.http.routers.raspap-http.rule=Host(`raspap.mistborn`)" |
||||
- "traefik.http.routers.raspap-http.entrypoints=web" |
||||
- "traefik.http.routers.raspap-http.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.raspap-https.rule=Host(`raspap.mistborn`)" |
||||
- "traefik.http.routers.raspap-https.entrypoints=websecure" |
||||
- "traefik.http.routers.raspap-https.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.raspap-https.tls.certresolver=basic" |
||||
- "traefik.http.services.raspap-service.loadbalancer.server.port=80" |
||||
env_file: |
||||
- ../.envs/.production/.raspap |
||||
cap_add: |
||||
#- NET_ADMIN |
||||
- SYS_ADMIN |
||||
#- CAP_FOWNER |
||||
privileged: true |
||||
volumes: |
||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro |
||||
#command: /start |
||||
restart: unless-stopped |
||||
|
||||
networks: |
||||
default: |
||||
external: |
||||
name: mistborn_default |
||||
@ -0,0 +1,72 @@
@@ -0,0 +1,72 @@
|
||||
version: '3' |
||||
|
||||
services: |
||||
# rocketchat |
||||
rocketchat: |
||||
image: rocket.chat:latest |
||||
container_name: mistborn_production_rocketchat |
||||
command: bash -c 'for i in `seq 1 30`; do node main.js && s=$$? && break || s=$$?; echo "Tried $$i times. Waiting 5 secs..."; sleep 5; done; (exit $$s)' |
||||
restart: unless-stopped |
||||
volumes: |
||||
- ../../mistborn_volumes/extra/rocketchat/uploads:/app/uploads |
||||
environment: |
||||
- PORT=3000 |
||||
- ROOT_URL=http://chat.mistborn |
||||
- MONGO_URL=mongodb://mongo:27017/rocketchat |
||||
- MONGO_OPLOG_URL=mongodb://mongo:27017/local |
||||
- Accounts_UseDNSDomainCheck=False |
||||
labels: |
||||
- "traefik.enable=true" |
||||
- "traefik.http.routers.chat-http.rule=Host(`chat.mistborn`)" |
||||
- "traefik.http.routers.chat-http.entrypoints=web" |
||||
- "traefik.http.routers.chat-http.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.chat-https.rule=Host(`chat.mistborn`)" |
||||
- "traefik.http.routers.chat-https.entrypoints=websecure" |
||||
- "traefik.http.routers.chat-https.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.chat-https.tls.certresolver=basic" |
||||
- "traefik.http.services.chat-service.loadbalancer.server.port=3000" |
||||
depends_on: |
||||
- mongo |
||||
#ports: |
||||
# - 3000:3000 |
||||
|
||||
mongo: |
||||
image: mongo:4.0 |
||||
container_name: mistborn_production_rocketchat_mongo |
||||
restart: unless-stopped |
||||
volumes: |
||||
- ../../mistborn_volumes/extra/rocketchat/data/db:/data/db |
||||
- ../../mistborn_volumes/extra/rocketchat/data/dump:/dump |
||||
command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 |
||||
|
||||
# this container's job is just run the command to initialize the replica set. |
||||
# it will run the command and remove himself (it will not stay running) |
||||
mongo-init-replica: |
||||
image: mongo |
||||
command: 'bash -c "for i in `seq 1 30`; do mongo mongo/rocketchat --eval \"rs.initiate({ _id: ''rs0'', members: [ { _id: 0, host: ''localhost:27017'' } ]})\" && s=$$? && break || s=$$?; echo \"Tried $$i times. Waiting 5 secs...\"; sleep 5; done; (exit $$s)"' |
||||
depends_on: |
||||
- mongo |
||||
|
||||
# hubot, the popular chatbot (add the bot user first and change the password before starting this image) |
||||
hubot: |
||||
image: rocketchat/hubot-rocketchat:latest |
||||
container_name: mistborn_production_rocketchat_hubot |
||||
restart: unless-stopped |
||||
environment: |
||||
- ROCKETCHAT_URL=chat.mistborn #:3000 |
||||
# you can add more scripts as you'd like here, they need to be installable by npm |
||||
- EXTERNAL_SCRIPTS=hubot-help,hubot-seen,hubot-links,hubot-diagnostics |
||||
env_file: |
||||
- ../.envs/.production/.rocketchat |
||||
depends_on: |
||||
- rocketchat |
||||
volumes: |
||||
- ../../mistborn_volumes/extra/rocketchat/hubot/scripts:/home/hubot/scripts |
||||
# this is used to expose the hubot port for notifications on the host on port 3001, e.g. for hubot-jenkins-notifier |
||||
ports: |
||||
- "${MISTBORN_BIND_IP}:3001:8080/tcp" |
||||
|
||||
networks: |
||||
default: |
||||
external: |
||||
name: mistborn_default |
||||
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
version: '3' |
||||
|
||||
services: |
||||
syncthing: |
||||
image: linuxserver/syncthing:latest |
||||
container_name: mistborn_production_syncthing |
||||
environment: |
||||
- PUID=1000 |
||||
- PGID=1000 |
||||
- TZ=Amereica/New_York |
||||
- UMASK_SET=022 |
||||
volumes: |
||||
- ../../mistborn_volumes/extra/syncthing/config:/config |
||||
- ../../mistborn_volumes/extra/syncthing/data1:/data1 |
||||
- ../../mistborn_volumes/extra/syncthing/data2:/data2 |
||||
ports: |
||||
#- 8384:8384 |
||||
- "${MISTBORN_BIND_IP}:22000:22000/tcp" # listening port |
||||
- "${MISTBORN_BIND_IP}:21027:21027/udp" # protocol discovery |
||||
labels: |
||||
- "traefik.enable=true" |
||||
- "traefik.http.routers.syncthing-http.rule=Host(`syncthing.mistborn`)" |
||||
- "traefik.http.routers.syncthing-http.entrypoints=web" |
||||
- "traefik.http.routers.syncthing-http.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.syncthing-https.rule=Host(`syncthing.mistborn`)" |
||||
- "traefik.http.routers.syncthing-https.entrypoints=websecure" |
||||
- "traefik.http.routers.syncthing-https.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.syncthing-https.tls.certresolver=basic" |
||||
- "traefik.http.services.syncthing-service.loadbalancer.server.port=8384" |
||||
restart: unless-stopped |
||||
|
||||
networks: |
||||
default: |
||||
external: |
||||
name: mistborn_default |
||||
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
version: '3' |
||||
|
||||
services: |
||||
tor-client: |
||||
build: |
||||
context: ../compose/production/tor |
||||
dockerfile: ./Dockerfile |
||||
image: mistborn_production_tor |
||||
container_name: mistborn_production_tor |
||||
ports: |
||||
- "${MISTBORN_BIND_IP}:9150:9150/tcp" |
||||
|
||||
networks: |
||||
default: |
||||
external: |
||||
name: mistborn_default |
||||
@ -0,0 +1,70 @@
@@ -0,0 +1,70 @@
|
||||
# Wazuh App Copyright (C) 2021 Wazuh Inc. (License GPLv2) |
||||
version: '3.7' |
||||
|
||||
services: |
||||
wazuh: |
||||
image: wazuh/wazuh-odfe:4.1.5 |
||||
hostname: wazuh-manager |
||||
restart: unless-stopped |
||||
ports: |
||||
- "${MISTBORN_BIND_IP}:1514:1514" |
||||
- "${MISTBORN_BIND_IP}:1515:1515" |
||||
- "${MISTBORN_BIND_IP}:514:514/udp" |
||||
- "${MISTBORN_BIND_IP}:55000:55000" |
||||
environment: |
||||
- FILEBEAT_SSL_VERIFICATION_MODE=none |
||||
env_file: |
||||
- ../.envs/.production/.wazuh |
||||
volumes: |
||||
- ossec_api_configuration:/var/ossec/api/configuration |
||||
- ossec_etc:/var/ossec/etc |
||||
- ossec_logs:/var/ossec/logs |
||||
- ossec_queue:/var/ossec/queue |
||||
- ossec_var_multigroups:/var/ossec/var/multigroups |
||||
- ossec_integrations:/var/ossec/integrations |
||||
- ossec_active_response:/var/ossec/active-response/bin |
||||
- ossec_agentless:/var/ossec/agentless |
||||
- ossec_wodles:/var/ossec/wodles |
||||
- filebeat_etc:/etc/filebeat |
||||
- filebeat_var:/var/lib/filebeat |
||||
|
||||
wazuh-kibana: |
||||
image: wazuh/wazuh-kibana-odfe:4.1.5 |
||||
hostname: wazuh-kibana |
||||
restart: unless-stopped |
||||
labels: |
||||
- "traefik.enable=true" |
||||
- "traefik.http.routers.wazuhk-http.rule=Host(`wazuh.mistborn`)" |
||||
- "traefik.http.routers.wazuhk-http.entrypoints=web" |
||||
- "traefik.http.routers.wazuhk-http.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.wazuhk-https.rule=Host(`wazuh.mistborn`)" |
||||
- "traefik.http.routers.wazuhk-https.entrypoints=websecure" |
||||
- "traefik.http.routers.wazuhk-https.middlewares=mistborn_auth@file" |
||||
- "traefik.http.routers.wazuhk-https.tls.certresolver=basic" |
||||
- "traefik.http.services.wazuhk-service.loadbalancer.server.port=5601" |
||||
#ports: |
||||
# - "${MISTBORN_BIND_IP}:5601:5601" |
||||
environment: |
||||
- SERVER_SSL_ENABLED=false |
||||
- SERVER_SSL_CERTIFICATE=/usr/share/kibana/config/opendistroforelasticsearch.example.org.cert |
||||
- SERVER_SSL_KEY=/usr/share/kibana/config/opendistroforelasticsearch.example.org.key |
||||
env_file: |
||||
- ../.envs/.production/.wazuh |
||||
|
||||
volumes: |
||||
ossec_api_configuration: |
||||
ossec_etc: |
||||
ossec_logs: |
||||
ossec_queue: |
||||
ossec_var_multigroups: |
||||
ossec_integrations: |
||||
ossec_active_response: |
||||
ossec_agentless: |
||||
ossec_wodles: |
||||
filebeat_etc: |
||||
filebeat_var: |
||||
|
||||
networks: |
||||
default: |
||||
external: |
||||
name: mistborn_default |
||||
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
[WebService] |
||||
ProtocolHeader = X-Forwarded-Proto |
||||
AllowUnencrypted=true |
||||
@ -0,0 +1,366 @@
@@ -0,0 +1,366 @@
|
||||
# shellcheck disable=SC2034 |
||||
|
||||
# Security |
||||
# |
||||
# Set these to strong passwords to avoid intruders from impersonating a service account |
||||
# The service(s) won't start unless these are specified |
||||
# Running ./gen-passwords.sh will update .env with strong passwords |
||||
# You may skip the Jigasi and Jibri passwords if you are not using those |
||||
# DO NOT reuse passwords |
||||
# |
||||
|
||||
# XMPP component password for Jicofo |
||||
JICOFO_COMPONENT_SECRET= |
||||
|
||||
# XMPP password for Jicofo client connections |
||||
JICOFO_AUTH_PASSWORD= |
||||
|
||||
# XMPP password for JVB client connections |
||||
JVB_AUTH_PASSWORD= |
||||
|
||||
# XMPP password for Jigasi MUC client connections |
||||
JIGASI_XMPP_PASSWORD= |
||||
|
||||
# XMPP recorder password for Jibri client connections |
||||
JIBRI_RECORDER_PASSWORD= |
||||
|
||||
# XMPP password for Jibri client connections |
||||
JIBRI_XMPP_PASSWORD= |
||||
|
||||
|
||||
# |
||||
# Basic configuration options |
||||
# |
||||
|
||||
# Directory where all configuration will be stored |
||||
#CONFIG=~/.jitsi-meet-cfg |
||||
CONFIG=../.envs/.production/.jitsi-cfg |
||||
|
||||
# Exposed HTTP port |
||||
HTTP_PORT=80 |
||||
|
||||
# Exposed HTTPS port |
||||
HTTPS_PORT=443 |
||||
|
||||
# System time zone |
||||
TZ=UTC |
||||
|
||||
# Public URL for the web service (required) |
||||
PUBLIC_URL=https://jitsi.mistborn |
||||
|
||||
# IP address of the Docker host |
||||
# See the "Running behind NAT or on a LAN environment" section in the Handbook: |
||||
# https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-docker#running-behind-nat-or-on-a-lan-environment |
||||
#DOCKER_HOST_ADDRESS=192.168.1.1 |
||||
DOCKER_HOST_ADDRESS=10.2.3.1 |
||||
|
||||
# Control whether the lobby feature should be enabled or not |
||||
#ENABLE_LOBBY=1 |
||||
|
||||
# Show a prejoin page before entering a conference |
||||
#ENABLE_PREJOIN_PAGE=0 |
||||
|
||||
# |
||||
# Let's Encrypt configuration |
||||
# |
||||
|
||||
# Enable Let's Encrypt certificate generation |
||||
#ENABLE_LETSENCRYPT=1 |
||||
|
||||
# Domain for which to generate the certificate |
||||
#LETSENCRYPT_DOMAIN=meet.example.com |
||||
|
||||
# E-Mail for receiving important account notifications (mandatory) |
||||
#LETSENCRYPT_EMAIL=alice@atlanta.net |
||||
|
||||
# Use the staging server (for avoiding rate limits while testing) |
||||
#LETSENCRYPT_USE_STAGING=1 |
||||
|
||||
|
||||
# |
||||
# Etherpad integration (for document sharing) |
||||
# |
||||
|
||||
# Set etherpad-lite URL in docker local network (uncomment to enable) |
||||
#ETHERPAD_URL_BASE=http://etherpad.meet.jitsi:9001 |
||||
|
||||
# Set etherpad-lite public URL (uncomment to enable) |
||||
#ETHERPAD_PUBLIC_URL=https://etherpad.my.domain |
||||
|
||||
# Name your etherpad instance! |
||||
ETHERPAD_TITLE="Video Chat" |
||||
|
||||
# The default text of a pad |
||||
ETHERPAD_DEFAULT_PAD_TEXT="Welcome to Web Chat!\n\n" |
||||
|
||||
# Name of the skin for etherpad |
||||
ETHERPAD_SKIN_NAME="colibris" |
||||
|
||||
# Skin variants for etherpad |
||||
ETHERPAD_SKIN_VARIANTS="super-light-toolbar super-light-editor light-background full-width-editor" |
||||
|
||||
|
||||
# |
||||
# Basic Jigasi configuration options (needed for SIP gateway support) |
||||
# |
||||
|
||||
# SIP URI for incoming / outgoing calls |
||||
#JIGASI_SIP_URI=test@sip2sip.info |
||||
|
||||
# Password for the specified SIP account as a clear text |
||||
#JIGASI_SIP_PASSWORD=passw0rd |
||||
|
||||
# SIP server (use the SIP account domain if in doubt) |
||||
#JIGASI_SIP_SERVER=sip2sip.info |
||||
|
||||
# SIP server port |
||||
#JIGASI_SIP_PORT=5060 |
||||
|
||||
# SIP server transport |
||||
#JIGASI_SIP_TRANSPORT=UDP |
||||
|
||||
# |
||||
# Authentication configuration (see handbook for details) |
||||
# |
||||
|
||||
# Enable authentication |
||||
#ENABLE_AUTH=1 |
||||
|
||||
# Enable guest access |
||||
#ENABLE_GUESTS=1 |
||||
|
||||
# Select authentication type: internal, jwt or ldap |
||||
#AUTH_TYPE=internal |
||||
|
||||
# JWT authentication |
||||
# |
||||
|
||||
# Application identifier |
||||
#JWT_APP_ID=my_jitsi_app_id |
||||
|
||||
# Application secret known only to your token |
||||
#JWT_APP_SECRET=my_jitsi_app_secret |
||||
|
||||
# (Optional) Set asap_accepted_issuers as a comma separated list |
||||
#JWT_ACCEPTED_ISSUERS=my_web_client,my_app_client |
||||
|
||||
# (Optional) Set asap_accepted_audiences as a comma separated list |
||||
#JWT_ACCEPTED_AUDIENCES=my_server1,my_server2 |
||||
|
||||
|
||||
# LDAP authentication (for more information see the Cyrus SASL saslauthd.conf man page) |
||||
# |
||||
|
||||
# LDAP url for connection |
||||
#LDAP_URL=ldaps://ldap.domain.com/ |
||||
|
||||
# LDAP base DN. Can be empty |
||||
#LDAP_BASE=DC=example,DC=domain,DC=com |
||||
|
||||
# LDAP user DN. Do not specify this parameter for the anonymous bind |
||||
#LDAP_BINDDN=CN=binduser,OU=users,DC=example,DC=domain,DC=com |
||||
|
||||
# LDAP user password. Do not specify this parameter for the anonymous bind |
||||
#LDAP_BINDPW=LdapUserPassw0rd |
||||
|
||||
# LDAP filter. Tokens example: |
||||
# %1-9 - if the input key is user@mail.domain.com, then %1 is com, %2 is domain and %3 is mail |
||||
# %s - %s is replaced by the complete service string |
||||
# %r - %r is replaced by the complete realm string |
||||
#LDAP_FILTER=(sAMAccountName=%u) |
||||
|
||||
# LDAP authentication method |
||||
#LDAP_AUTH_METHOD=bind |
||||
|
||||
# LDAP version |
||||
#LDAP_VERSION=3 |
||||
|
||||
# LDAP TLS using |
||||
#LDAP_USE_TLS=1 |
||||
|
||||
# List of SSL/TLS ciphers to allow |
||||
#LDAP_TLS_CIPHERS=SECURE256:SECURE128:!AES-128-CBC:!ARCFOUR-128:!CAMELLIA-128-CBC:!3DES-CBC:!CAMELLIA-128-CBC |
||||
|
||||
# Require and verify server certificate |
||||
#LDAP_TLS_CHECK_PEER=1 |
||||
|
||||
# Path to CA cert file. Used when server certificate verify is enabled |
||||
#LDAP_TLS_CACERT_FILE=/etc/ssl/certs/ca-certificates.crt |
||||
|
||||
# Path to CA certs directory. Used when server certificate verify is enabled |
||||
#LDAP_TLS_CACERT_DIR=/etc/ssl/certs |
||||
|
||||
# Wether to use starttls, implies LDAPv3 and requires ldap:// instead of ldaps:// |
||||
# LDAP_START_TLS=1 |
||||
|
||||
|
||||
# |
||||
# Advanced configuration options (you generally don't need to change these) |
||||
# |
||||
|
||||
# Internal XMPP domain |
||||
XMPP_DOMAIN=meet.jitsi |
||||
|
||||
# Internal XMPP server |
||||
XMPP_SERVER=xmpp.meet.jitsi |
||||
|
||||
# Internal XMPP server URL |
||||
XMPP_BOSH_URL_BASE=http://xmpp.meet.jitsi:5280 |
||||
|
||||
# Internal XMPP domain for authenticated services |
||||
XMPP_AUTH_DOMAIN=auth.meet.jitsi |
||||
|
||||
# XMPP domain for the MUC |
||||
XMPP_MUC_DOMAIN=muc.meet.jitsi |
||||
|
||||
# XMPP domain for the internal MUC used for jibri, jigasi and jvb pools |
||||
XMPP_INTERNAL_MUC_DOMAIN=internal-muc.meet.jitsi |
||||
|
||||
# XMPP domain for unauthenticated users |
||||
XMPP_GUEST_DOMAIN=guest.meet.jitsi |
||||
|
||||
# Comma separated list of domains for cross domain policy or "true" to allow all |
||||
# The PUBLIC_URL is always allowed |
||||
#XMPP_CROSS_DOMAIN=true |
||||
|
||||
# Custom Prosody modules for XMPP_DOMAIN (comma separated) |
||||
XMPP_MODULES= |
||||
|
||||
# Custom Prosody modules for MUC component (comma separated) |
||||
XMPP_MUC_MODULES= |
||||
|
||||
# Custom Prosody modules for internal MUC component (comma separated) |
||||
XMPP_INTERNAL_MUC_MODULES= |
||||
|
||||
# MUC for the JVB pool |
||||
JVB_BREWERY_MUC=jvbbrewery |
||||
|
||||
# XMPP user for JVB client connections |
||||
JVB_AUTH_USER=jvb |
||||
|
||||
# STUN servers used to discover the server's public IP |
||||
JVB_STUN_SERVERS=meet-jit-si-turnrelay.jitsi.net:443 |
||||
|
||||
# Media port for the Jitsi Videobridge |
||||
JVB_PORT=10000 |
||||
|
||||
# TCP Fallback for Jitsi Videobridge for when UDP isn't available |
||||
JVB_TCP_HARVESTER_DISABLED=true |
||||
JVB_TCP_PORT=4443 |
||||
JVB_TCP_MAPPED_PORT=4443 |
||||
|
||||
# A comma separated list of APIs to enable when the JVB is started [default: none] |
||||
# See https://github.com/jitsi/jitsi-videobridge/blob/master/doc/rest.md for more information |
||||
#JVB_ENABLE_APIS=rest,colibri |
||||
|
||||
# XMPP user for Jicofo client connections. |
||||
# NOTE: this option doesn't currently work due to a bug |
||||
JICOFO_AUTH_USER=focus |
||||
|
||||
# Base URL of Jicofo's reservation REST API |
||||
#JICOFO_RESERVATION_REST_BASE_URL=http://reservation.example.com |
||||
|
||||
# Enable Jicofo's health check REST API (http://<jicofo_base_url>:8888/about/health) |
||||
#JICOFO_ENABLE_HEALTH_CHECKS=true |
||||
|
||||
# XMPP user for Jigasi MUC client connections |
||||
JIGASI_XMPP_USER=jigasi |
||||
|
||||
# MUC name for the Jigasi pool |
||||
JIGASI_BREWERY_MUC=jigasibrewery |
||||
|
||||
# Minimum port for media used by Jigasi |
||||
JIGASI_PORT_MIN=20000 |
||||
|
||||
# Maximum port for media used by Jigasi |
||||
JIGASI_PORT_MAX=20050 |
||||
|
||||
# Enable SDES srtp |
||||
#JIGASI_ENABLE_SDES_SRTP=1 |
||||
|
||||
# Keepalive method |
||||
#JIGASI_SIP_KEEP_ALIVE_METHOD=OPTIONS |
||||
|
||||
# Health-check extension |
||||
#JIGASI_HEALTH_CHECK_SIP_URI=keepalive |
||||
|
||||
# Health-check interval |
||||
#JIGASI_HEALTH_CHECK_INTERVAL=300000 |
||||
# |
||||
# Enable Jigasi transcription |
||||
#ENABLE_TRANSCRIPTIONS=1 |
||||
|
||||
# Jigasi will record audio when transcriber is on [default: false] |
||||
#JIGASI_TRANSCRIBER_RECORD_AUDIO=true |
||||
|
||||
# Jigasi will send transcribed text to the chat when transcriber is on [default: false] |
||||
#JIGASI_TRANSCRIBER_SEND_TXT=true |
||||
|
||||
# Jigasi will post an url to the chat with transcription file [default: false] |
||||
#JIGASI_TRANSCRIBER_ADVERTISE_URL=true |
||||
|
||||
# Credentials for connect to Cloud Google API from Jigasi |
||||
# Please read https://cloud.google.com/text-to-speech/docs/quickstart-protocol |
||||
# section "Before you begin" paragraph 1 to 5 |
||||
# Copy the values from the json to the related env vars |
||||
#GC_PROJECT_ID= |
||||
#GC_PRIVATE_KEY_ID= |
||||
#GC_PRIVATE_KEY= |
||||
#GC_CLIENT_EMAIL= |
||||
#GC_CLIENT_ID= |
||||
#GC_CLIENT_CERT_URL= |
||||
|
||||
# Enable recording |
||||
#ENABLE_RECORDING=1 |
||||
|
||||
# XMPP domain for the jibri recorder |
||||
XMPP_RECORDER_DOMAIN=recorder.meet.jitsi |
||||
|
||||
# XMPP recorder user for Jibri client connections |
||||
JIBRI_RECORDER_USER=recorder |
||||
|
||||
# Directory for recordings inside Jibri container |
||||
JIBRI_RECORDING_DIR=/config/recordings |
||||
|
||||
# The finalizing script. Will run after recording is complete |
||||
JIBRI_FINALIZE_RECORDING_SCRIPT_PATH=/config/finalize.sh |
||||
|
||||
# XMPP user for Jibri client connections |
||||
JIBRI_XMPP_USER=jibri |
||||
|
||||
# MUC name for the Jibri pool |
||||
JIBRI_BREWERY_MUC=jibribrewery |
||||
|
||||
# MUC connection timeout |
||||
JIBRI_PENDING_TIMEOUT=90 |
||||
|
||||
# When jibri gets a request to start a service for a room, the room |
||||
# jid will look like: roomName@optional.prefixes.subdomain.xmpp_domain |
||||
# We'll build the url for the call by transforming that into: |
||||
# https://xmpp_domain/subdomain/roomName |
||||
# So if there are any prefixes in the jid (like jitsi meet, which |
||||
# has its participants join a muc at conference.xmpp_domain) then |
||||
# list that prefix here so it can be stripped out to generate |
||||
# the call url correctly |
||||
JIBRI_STRIP_DOMAIN_JID=muc |
||||
|
||||
# Directory for logs inside Jibri container |
||||
JIBRI_LOGS_DIR=/config/logs |
||||
|
||||
# Disable HTTPS: handle TLS connections outside of this setup |
||||
DISABLE_HTTPS=1 |
||||
|
||||
# Redirect HTTP traffic to HTTPS |
||||
# Necessary for Let's Encrypt, relies on standard HTTPS port (443) |
||||
#ENABLE_HTTP_REDIRECT=1 |
||||
|
||||
# Enable IPv6 |
||||
# Provides means to disable IPv6 in environments that don't support it (get with the times, people!) |
||||
#ENABLE_IPV6=1 |
||||
|
||||
# Container restart policy |
||||
# Defaults to unless-stopped |
||||
RESTART_POLICY=unless-stopped |
||||
|
||||
# Authenticate using external service or just focus external auth window if there is one already. |
||||
# TOKEN_AUTH_URL=https://auth.meet.example.com/{room} |
||||
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
[Unit] |
||||
Description=Mistborn Bitwarden Service |
||||
Requires=Mistborn-base.service |
||||
After=Mistborn-base.service |
||||
PartOf=Mistborn-base.service |
||||
|
||||
[Service] |
||||
Restart=always |
||||
RestartSec=15 |
||||
User=root |
||||
Group=docker |
||||
PermissionsStartOnly=true |
||||
# Shutdown container (if running) when unit is stopped |
||||
ExecStartPre=/opt/mistborn/scripts/wrappers/mistborn_docker.sh bitwarden docker-compose -f /opt/mistborn/extra/bitwarden.yml down |
||||
|
||||
ExecStartPre=/sbin/iptables -w -I DOCKER-USER -i DIFACE -p tcp --dport 3012 -j MISTBORN_LOG_DROP |
||||
# Start container when unit is started |
||||
ExecStart=/opt/mistborn/scripts/wrappers/mistborn_docker.sh bitwarden docker-compose -f /opt/mistborn/extra/bitwarden.yml up --build |
||||
# Stop container when unit is stopped |
||||
ExecStop=/opt/mistborn/scripts/wrappers/mistborn_docker.sh bitwarden docker-compose -f /opt/mistborn/extra/bitwarden.yml down |
||||
# Post stop |
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 3012 -j MISTBORN_LOG_DROP |
||||
|
||||
[Install] |
||||
WantedBy=Mistborn-base.service |
||||
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
[Unit] |
||||
Description=Mistborn Elasticsearch Service |
||||
Requires=Mistborn-base.service |
||||
After=Mistborn-base.service |
||||
PartOf=Mistborn-base.service |
||||
|
||||
[Service] |
||||
Restart=always |
||||
RestartSec=15 |
||||
User=root |
||||
Group=docker |
||||
PermissionsStartOnly=true |
||||
# Shutdown container (if running) when unit is stopped |
||||
ExecStartPre=/usr/sbin/sysctl -w vm.max_map_count=262144 |
||||
ExecStartPre=/opt/mistborn/scripts/wrappers/mistborn_docker.sh elasticsearch docker-compose -f /opt/mistborn/extra/elasticsearch.yml down |
||||
# Start container when unit is started |
||||
ExecStart=/opt/mistborn/scripts/wrappers/mistborn_docker.sh elasticsearch docker-compose -f /opt/mistborn/extra/elasticsearch.yml up --build |
||||
# Stop container when unit is stopped |
||||
ExecStop=/opt/mistborn/scripts/wrappers/mistborn_docker.sh elasticsearch docker-compose -f /opt/mistborn/extra/elasticsearch.yml down |
||||
|
||||
[Install] |
||||
WantedBy=Mistborn-base.service |
||||
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
[Unit] |
||||
Description=Mistborn Guacamole |
||||
Requires=Mistborn-base.service |
||||
After=Mistborn-base.service |
||||
PartOf=Mistborn-base.service |
||||
|
||||
[Service] |
||||
Restart=always |
||||
RestartSec=15 |
||||
User=root |
||||
Group=docker |
||||
PermissionsStartOnly=true |
||||
# Shutdown container (if running) when unit is stopped |
||||
ExecStartPre=/opt/mistborn/scripts/wrappers/mistborn_docker.sh guacamole docker-compose -f /opt/mistborn/extra/guacamole.yml down |
||||
|
||||
# Start container when unit is started |
||||
ExecStart=/opt/mistborn/scripts/wrappers/mistborn_docker.sh guacamole docker-compose -f /opt/mistborn/extra/guacamole.yml up --build |
||||
# Stop container when unit is stopped |
||||
ExecStop=/opt/mistborn/scripts/wrappers/mistborn_docker.sh guacamole docker-compose -f /opt/mistborn/extra/guacamole.yml down |
||||
# Post stop |
||||
|
||||
[Install] |
||||
WantedBy=Mistborn-base.service |
||||
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
[Unit] |
||||
Description=Mistborn Home Assistant |
||||
Requires=Mistborn-base.service |
||||
After=Mistborn-base.service |
||||
PartOf=Mistborn-base.service |
||||
|
||||
[Service] |
||||
Restart=always |
||||
RestartSec=15 |
||||
User=root |
||||
Group=docker |
||||
PermissionsStartOnly=true |
||||
# Shutdown container (if running) when unit is stopped |
||||
ExecStartPre=/opt/mistborn/scripts/wrappers/mistborn_docker.sh homeassistant docker-compose -f /opt/mistborn/extra/homeassistant.yml down |
||||
|
||||
# Start container when unit is started |
||||
ExecStart=/opt/mistborn/scripts/wrappers/mistborn_docker.sh homeassistant docker-compose -f /opt/mistborn/extra/homeassistant.yml up --build |
||||
# Stop container when unit is stopped |
||||
ExecStop=/opt/mistborn/scripts/wrappers/mistborn_docker.sh homeassistant docker-compose -f /opt/mistborn/extra/homeassistant.yml down |
||||
# Post stop |
||||
|
||||
[Install] |
||||
WantedBy=Mistborn-base.service |
||||
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
[Unit] |
||||
Description=Mistborn Jellyfin Service |
||||
Requires=Mistborn-nextcloud.service |
||||
After=Mistborn-nextcloud.service |
||||
PartOf=Mistborn-base.service |
||||
|
||||
[Service] |
||||
Restart=always |
||||
RestartSec=15 |
||||
User=root |
||||
Group=docker |
||||
PermissionsStartOnly=true |
||||
# Shutdown container (if running) when unit is stopped |
||||
ExecStartPre=/opt/mistborn/scripts/wrappers/mistborn_docker.sh jellyfin docker-compose -f /opt/mistborn/extra/jellyfin.yml down |
||||
|
||||
# Start container when unit is started |
||||
ExecStart=/opt/mistborn/scripts/wrappers/mistborn_docker.sh jellyfin docker-compose -f /opt/mistborn/extra/jellyfin.yml up --build |
||||
# Stop container when unit is stopped |
||||
ExecStop=/opt/mistborn/scripts/wrappers/mistborn_docker.sh jellyfin docker-compose -f /opt/mistborn/extra/jellyfin.yml down |
||||
# Post stop |
||||
|
||||
[Install] |
||||
WantedBy=Mistborn-base.service |
||||
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
[Unit] |
||||
Description=Mistborn Jitsi Service |
||||
Requires=Mistborn-base.service |
||||
After=Mistborn-base.service |
||||
PartOf=Mistborn-base.service |
||||
|
||||
[Service] |
||||
Restart=always |
||||
RestartSec=15 |
||||
User=root |
||||
Group=docker |
||||
PermissionsStartOnly=true |
||||
|
||||
# Shutdown container (if running) when unit is stopped |
||||
ExecStartPre=/opt/mistborn/scripts/wrappers/mistborn_docker.sh jitsi docker-compose -f /opt/mistborn/extra/jitsi-meet.yml down |
||||
ExecStartPre=/opt/mistborn/scripts/wrappers/mistborn_docker.sh jitsi /opt/mistborn/scripts/services/jitsi/iptables_up.sh |
||||
|
||||
# Start container when unit is started |
||||
ExecStart=/opt/mistborn/scripts/wrappers/mistborn_docker.sh jitsi docker-compose -f /opt/mistborn/extra/jitsi-meet.yml up --build |
||||
|
||||
# Stop container when unit is stopped |
||||
ExecStop=/opt/mistborn/scripts/wrappers/mistborn_docker.sh jitsi docker-compose -f /opt/mistborn/extra/jitsi-meet.yml down |
||||
# Post stop |
||||
ExecStopPost=-/opt/mistborn/scripts/wrappers/mistborn_docker.sh jitsi /opt/mistborn/scripts/services/jitsi/iptables_down.sh |
||||
|
||||
[Install] |
||||
WantedBy=Mistborn-base.service |
||||
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
[Unit] |
||||
Description=Mistborn Nextcloud Service |
||||
Requires=Mistborn-base.service |
||||
After=Mistborn-base.service |
||||
PartOf=Mistborn-base.service |
||||
|
||||
[Service] |
||||
Restart=always |
||||
RestartSec=15 |
||||
User=root |
||||
Group=docker |
||||
PermissionsStartOnly=true |
||||
# Shutdown container (if running) when unit is stopped |
||||
ExecStartPre=/opt/mistborn/scripts/wrappers/mistborn_docker.sh nextcloud docker-compose -f /opt/mistborn/extra/nextcloud.yml down |
||||
|
||||
# Start container when unit is started |
||||
ExecStart=/opt/mistborn/scripts/wrappers/mistborn_docker.sh nextcloud docker-compose -f /opt/mistborn/extra/nextcloud.yml up --build |
||||
# Stop container when unit is stopped |
||||
ExecStop=/opt/mistborn/scripts/wrappers/mistborn_docker.sh nextcloud docker-compose -f /opt/mistborn/extra/nextcloud.yml down |
||||
# Post stop |
||||
|
||||
[Install] |
||||
WantedBy=Mistborn-base.service |
||||
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
[Unit] |
||||
Description=Mistborn OnlyOffice Service |
||||
Requires=Mistborn-base.service |
||||
After=Mistborn-base.service |
||||
PartOf=Mistborn-base.service |
||||
|
||||
[Service] |
||||
Restart=always |
||||
RestartSec=15 |
||||
User=root |
||||
Group=docker |
||||
PermissionsStartOnly=true |
||||
# Shutdown container (if running) when unit is stopped |
||||
ExecStartPre=/opt/mistborn/scripts/wrappers/mistborn_docker.sh onlyoffice docker-compose -f /opt/mistborn/extra/onlyoffice.yml down |
||||
|
||||
# Start container when unit is started |
||||
ExecStart=/opt/mistborn/scripts/wrappers/mistborn_docker.sh onlyoffice docker-compose -f /opt/mistborn/extra/onlyoffice.yml up --build |
||||
# Stop container when unit is stopped |
||||
ExecStop=/opt/mistborn/scripts/wrappers/mistborn_docker.sh onlyoffice docker-compose -f /opt/mistborn/extra/onlyoffice.yml down |
||||
# Post stop |
||||
|
||||
[Install] |
||||
WantedBy=Mistborn-base.service |
||||
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
[Unit] |
||||
Description=Mistborn RaspAP Service |
||||
Requires=Mistborn-base.service |
||||
After=Mistborn-base.service |
||||
|
||||
[Service] |
||||
Restart=always |
||||
RestartSec=15 |
||||
User=root |
||||
Group=docker |
||||
PermissionsStartOnly=true |
||||
ExecStartPre=/sbin/iptables -I DOCKER-USER -i DIFACE -p tcp --dport 8095 -j MISTBORN_LOG_DROP |
||||
#ExecStartPre=/bin/bash /opt/mistborn_volumes/extra/raspap/etc-raspap/hostapd/servicestart.sh --interface uap0 --seconds 3 |
||||
# Shutdown container (if running) when unit is stopped |
||||
ExecStartPre=/opt/mistborn/scripts/wrappers/mistborn_docker.sh raspap docker-compose -f /opt/mistborn/extra/raspap.yml down |
||||
|
||||
# Start container when unit is started |
||||
ExecStart=/opt/mistborn/scripts/wrappers/mistborn_docker.sh raspap docker-compose -f /opt/mistborn/extra/raspap.yml up --build |
||||
# Stop container when unit is stopped |
||||
ExecStop=/opt/mistborn/scripts/wrappers/mistborn_docker.sh raspap docker-compose -f /opt/mistborn/extra/raspap.yml down |
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 8095 -j MISTBORN_LOG_DROP |
||||
# Post stop |
||||
|
||||
[Install] |
||||
WantedBy=Mistborn-base.service |
||||
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
[Unit] |
||||
Description=Mistborn Rocket Chat Service |
||||
Requires=Mistborn-base.service |
||||
After=Mistborn-base.service |
||||
PartOf=Mistborn-base.service |
||||
|
||||
[Service] |
||||
Restart=always |
||||
RestartSec=15 |
||||
User=root |
||||
Group=docker |
||||
PermissionsStartOnly=true |
||||
# Shutdown container (if running) when unit is stopped |
||||
ExecStartPre=/opt/mistborn/scripts/wrappers/mistborn_docker.sh rocketchat docker-compose -f /opt/mistborn/extra/rocketchat.yml down |
||||
|
||||
ExecStartPre=/sbin/iptables -w -I DOCKER-USER -i DIFACE -p tcp --dport 3001 -j MISTBORN_LOG_DROP |
||||
# Start container when unit is started |
||||
ExecStart=/opt/mistborn/scripts/wrappers/mistborn_docker.sh rocketchat docker-compose -f /opt/mistborn/extra/rocketchat.yml up --build |
||||
# Stop container when unit is stopped |
||||
ExecStop=/opt/mistborn/scripts/wrappers/mistborn_docker.sh rocketchat docker-compose -f /opt/mistborn/extra/rocketchat.yml down |
||||
# Post stop |
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 3001 -j MISTBORN_LOG_DROP |
||||
|
||||
[Install] |
||||
WantedBy=Mistborn-base.service |
||||
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
[Unit] |
||||
Description=Mistborn Syncthing Service |
||||
Requires=Mistborn-base.service |
||||
After=Mistborn-base.service |
||||
PartOf=Mistborn-base.service |
||||
|
||||
[Service] |
||||
Restart=always |
||||
RestartSec=15 |
||||
User=root |
||||
Group=docker |
||||
PermissionsStartOnly=true |
||||
# Shutdown container (if running) when unit is stopped |
||||
ExecStartPre=/opt/mistborn/scripts/wrappers/mistborn_docker.sh syncthing docker-compose -f /opt/mistborn/extra/syncthing.yml down |
||||
|
||||
ExecStartPre=/sbin/iptables -w -I DOCKER-USER -i DIFACE -p udp --dport 21027 -j MISTBORN_LOG_DROP |
||||
ExecStartPre=/sbin/iptables -w -I DOCKER-USER -i DIFACE -p tcp --dport 22000 -j MISTBORN_LOG_DROP |
||||
# Start container when unit is started |
||||
ExecStart=/opt/mistborn/scripts/wrappers/mistborn_docker.sh syncthing docker-compose -f /opt/mistborn/extra/syncthing.yml up --build |
||||
# Stop container when unit is stopped |
||||
ExecStop=/opt/mistborn/scripts/wrappers/mistborn_docker.sh syncthing docker-compose -f /opt/mistborn/extra/syncthing.yml down |
||||
# Post stop |
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p udp --dport 21027 -j MISTBORN_LOG_DROP |
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 22000 -j MISTBORN_LOG_DROP |
||||
|
||||
[Install] |
||||
WantedBy=Mistborn-base.service |
||||
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
[Unit] |
||||
Description=Mistborn Tor Service |
||||
Requires=Mistborn-base.service |
||||
After=Mistborn-base.service |
||||
PartOf=Mistborn-base.service |
||||
|
||||
[Service] |
||||
Restart=always |
||||
RestartSec=15 |
||||
User=root |
||||
Group=docker |
||||
PermissionsStartOnly=true |
||||
# Shutdown container (if running) when unit is stopped |
||||
ExecStartPre=/opt/mistborn/scripts/wrappers/mistborn_docker.sh tor docker-compose -f /opt/mistborn/extra/tor.yml down |
||||
|
||||
ExecStartPre=/sbin/iptables -w -I DOCKER-USER -i DIFACE -p tcp --dport 9150 -j MISTBORN_LOG_DROP |
||||
# Start container when unit is started |
||||
ExecStart=/opt/mistborn/scripts/wrappers/mistborn_docker.sh tor docker-compose -f /opt/mistborn/extra/tor.yml up --build |
||||
# Stop container when unit is stopped |
||||
ExecStop=/opt/mistborn/scripts/wrappers/mistborn_docker.sh tor docker-compose -f /opt/mistborn/extra/tor.yml down |
||||
# Post stop |
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 9150 -j MISTBORN_LOG_DROP |
||||
|
||||
[Install] |
||||
WantedBy=Mistborn-base.service |
||||
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
[Unit] |
||||
Description=Mistborn Wazuh Service |
||||
Requires=Mistborn-elasticsearch.service |
||||
After=Mistborn-elasticsearch.service |
||||
PartOf=Mistborn-base.service |
||||
|
||||
[Service] |
||||
Restart=always |
||||
RestartSec=15 |
||||
TimeoutStartSec=600 |
||||
User=root |
||||
Group=docker |
||||
PermissionsStartOnly=true |
||||
# Shutdown container (if running) when unit is stopped |
||||
ExecStartPre=/opt/mistborn/scripts/wrappers/mistborn_docker.sh wazuh docker-compose -f /opt/mistborn/extra/wazuh.yml down |
||||
# Start container when unit is started |
||||
ExecStart=/opt/mistborn/scripts/wrappers/mistborn_docker.sh wazuh docker-compose -f /opt/mistborn/extra/wazuh.yml up --build |
||||
# Agent install |
||||
ExecStartPost=/opt/mistborn/scripts/wrappers/mistborn_docker.sh wazuh /opt/mistborn/scripts/services/wazuh/agent.sh |
||||
ExecStartPost=-/opt/mistborn/scripts/wrappers/mistborn_docker.sh wazuh /opt/mistborn/scripts/services/wazuh/agent_start.sh |
||||
# Suricata |
||||
ExecStartPost=-/opt/mistborn/scripts/wrappers/mistborn_docker.sh wazuh /opt/mistborn/scripts/services/wazuh/suricata/suricata_init.sh |
||||
ExecStartPost=-/opt/mistborn/scripts/wrappers/mistborn_docker.sh wazuh /opt/mistborn/scripts/services/wazuh/suricata/suricata_start.sh |
||||
# Stop container when unit is stopped |
||||
ExecStop=/opt/mistborn/scripts/wrappers/mistborn_docker.sh wazuh docker-compose -f /opt/mistborn/extra/wazuh.yml down |
||||
ExecStopPost=-/opt/mistborn/scripts/wrappers/mistborn_docker.sh wazuh /opt/mistborn/scripts/services/wazuh/suricata/suricata_stop.sh |
||||
ExecStopPost=-/opt/mistborn/scripts/wrappers/mistborn_docker.sh wazuh /opt/mistborn/scripts/services/wazuh/agent_stop.sh |
||||
|
||||
[Install] |
||||
WantedBy=Mistborn-base.service |
||||
@ -0,0 +1,17 @@
@@ -0,0 +1,17 @@
|
||||
--- |
||||
# This is the internal user database |
||||
# The hash value is a bcrypt hash and can be generated with plugin/tools/hash.sh |
||||
|
||||
_meta: |
||||
type: "internalusers" |
||||
config_version: 2 |
||||
|
||||
# Define your internal users here |
||||
|
||||
mistborn: |
||||
hash: "__MISTBORN_HASH__" |
||||
reserved: true |
||||
backend_roles: |
||||
- "admin" |
||||
description: "Mistborn user" |
||||
|
||||
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash |
||||
|
||||
set -e |
||||
|
||||
if [[ -f "/opt/mistborn_volumes/extra/elasticsearch/init/internal_users.yml" ]]; then |
||||
echo "internal_users.yml exists. Proceeding." |
||||
exit 0 |
||||
fi |
||||
|
||||
mkdir -p /opt/mistborn_volumes/extra/elasticsearch/init/ >/dev/null 2>&1 |
||||
chmod -R +x /opt/mistborn_volumes/extra/elasticsearch/init/ |
||||
cp /opt/mistborn/scripts/services/elasticsearch/files/internal_users.yml /opt/mistborn_volumes/extra/elasticsearch/init/ |
||||
|
||||
ELASTICSEARCH_MISTBORN_HASHED="$(docker run --rm amazon/opendistro-for-elasticsearch:1.12.0 bash /usr/share/elasticsearch/plugins/opendistro_security/tools/hash.sh -p ${MISTBORN_DEFAULT_PASSWORD} | tr -d '\n')" |
||||
|
||||
if [[ -z "${ELASTICSEARCH_MISTBORN_HASHED}" ]]; then |
||||
echo "Elasticsearch password hash not generated properly" |
||||
exit 1; |
||||
fi |
||||
|
||||
sed -i "s|__MISTBORN_HASH__|${ELASTICSEARCH_MISTBORN_HASHED}|" /opt/mistborn_volumes/extra/elasticsearch/init/internal_users.yml |
||||
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash |
||||
|
||||
if [[ -f "/opt/mistborn_volumes/extra/guacamole/init/initdb.sql" ]]; then |
||||
echo "initdb.sql exists. Proceeding." |
||||
exit 0 |
||||
fi |
||||
|
||||
mkdir -p /opt/mistborn_volumes/extra/guacamole/init/ >/dev/null 2>&1 |
||||
chmod -R +x /opt/mistborn_volumes/extra/guacamole/init/ |
||||
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgres > /opt/mistborn_volumes/extra/guacamole/init/initdb.sql |
||||
|
||||
# grab values in initdb.sql to replace |
||||
HEXSTRINGS=($(egrep -o [0-9a-fA-F]{64} /opt/mistborn_volumes/extra/guacamole/init/initdb.sql)) |
||||
|
||||
# reset default password in init.db |
||||
SALT=$(python3 -c "import secrets; import string; print(f''.join([secrets.choice('0123456789ABCDEF') for x in range(64)]))") |
||||
GUAC_PASSWORD_HASHED=$(echo -n "${MISTBORN_DEFAULT_PASSWORD}${SALT}" | sha256sum | awk '{print $1}' | tr a-z A-Z) |
||||
|
||||
sed -i "s/${HEXSTRINGS[1]}/$SALT/" /opt/mistborn_volumes/extra/guacamole/init/initdb.sql |
||||
sed -i "s/${HEXSTRINGS[0]}/$GUAC_PASSWORD_HASHED/" /opt/mistborn_volumes/extra/guacamole/init/initdb.sql |
||||
sed -i "s/guacadmin/mistborn/g" /opt/mistborn_volumes/extra/guacamole/init/initdb.sql |
||||
@ -0,0 +1,54 @@
@@ -0,0 +1,54 @@
|
||||
#!/bin/bash |
||||
|
||||
HASS_CONFIG="/opt/mistborn_volumes/extra/homeassistant/config/configuration.yaml" |
||||
|
||||
if [[ -f "$HASS_CONFIG" ]]; then |
||||
# configuration.yaml exists |
||||
|
||||
if [[ ! -z $(grep "use_x_forwarded_for: true" "$HASS_CONFIG") ]]; then |
||||
# FOUND |
||||
exit 0; |
||||
fi |
||||
|
||||
# add the proxy config |
||||
# write the trusted proxies config |
||||
cat >> ${HASS_CONFIG}<< EOF |
||||
|
||||
http: |
||||
use_x_forwarded_for: true |
||||
trusted_proxies: |
||||
- 172.16.0.0/12 |
||||
|
||||
EOF |
||||
|
||||
exit 0; |
||||
|
||||
fi |
||||
|
||||
# create parent directory if needed |
||||
PARENTDIR="$(dirname $HASS_CONFIG)" |
||||
if [[ ! -d "$PARENTDIR" ]]; then |
||||
mkdir -p $PARENTDIR |
||||
fi |
||||
|
||||
# write the trusted proxies config |
||||
cat >> ${HASS_CONFIG}<< EOF |
||||
|
||||
# Configure a default setup of Home Assistant (frontend, api, etc) |
||||
default_config: |
||||
|
||||
# Text to speech |
||||
#tts: |
||||
# - platform: google_translate |
||||
|
||||
#group: !include groups.yaml |
||||
#automation: !include automations.yaml |
||||
#script: !include scripts.yaml |
||||
#scene: !include scenes.yaml |
||||
|
||||
http: |
||||
use_x_forwarded_for: true |
||||
trusted_proxies: |
||||
- 172.16.0.0/12 |
||||
|
||||
EOF |
||||
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash |
||||
|
||||
iptables -w -D DOCKER-USER -i $DIFACE -p udp --dport $JVB_PORT -j MISTBORN_LOG_DROP |
||||
iptables -w -D DOCKER-USER -i $DIFACE -p tcp --dport $JVB_TCP_PORT -j MISTBORN_LOG_DROP |
||||
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash |
||||
|
||||
iptables -w -I DOCKER-USER -i $DIFACE -p udp --dport $JVB_PORT -j MISTBORN_LOG_DROP |
||||
iptables -w -I DOCKER-USER -i $DIFACE -p tcp --dport $JVB_TCP_PORT -j MISTBORN_LOG_DROP |
||||
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash |
||||
|
||||
# detect if already installed |
||||
if dpkg -s wazuh-agent &> /dev/null; then |
||||
echo "Wazuh agent already installed" |
||||
exit 0 |
||||
fi |
||||
|
||||
# install curl |
||||
echo "install curl" |
||||
sudo -E apt-get install -y curl |
||||
|
||||
# prepare repo |
||||
echo "Adding Wazuh Repository" |
||||
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | sudo -E apt-key add - |
||||
echo "deb https://packages.wazuh.com/4.x/apt/ stable main" | sudo -E tee /etc/apt/sources.list.d/wazuh.list |
||||
|
||||
apt-get update |
||||
|
||||
# wait for service to be listening |
||||
while ! nc -z 10.2.3.1 55000; do |
||||
WAIT_TIME=10 |
||||
echo "Waiting ${WAIT_TIME} seconds for Wazuh API..." |
||||
sleep ${WAIT_TIME} |
||||
done |
||||
|
||||
# install |
||||
echo "Installing Wazuh agent" |
||||
WAZUH_MANAGER="10.2.3.1" apt-get install wazuh-agent |
||||
|
||||
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash |
||||
|
||||
systemctl start wazuh-agent |
||||
systemctl enable wazuh-agent |
||||
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash |
||||
|
||||
systemctl stop wazuh-agent |
||||
systemctl disable wazuh-agent |
||||
@ -0,0 +1,129 @@
@@ -0,0 +1,129 @@
|
||||
#!/bin/bash |
||||
|
||||
set -e |
||||
|
||||
# detect if suricata is installed |
||||
if [[ $(dpkg-query -W -f='${Status}' suricata 2>/dev/null | grep -c "ok installed") -eq 1 ]]; then |
||||
echo "Suricata Installed" |
||||
exit 0 |
||||
fi |
||||
|
||||
source /opt/mistborn/scripts/subinstallers/platform.sh |
||||
|
||||
# minimal dependencies |
||||
sudo -E apt-get -y install libpcre3 libpcre3-dbg libpcre3-dev build-essential libpcap-dev \ |
||||
libyaml-0-2 libyaml-dev pkg-config zlib1g zlib1g-dev \ |
||||
make libmagic-dev libjansson-dev jq wget |
||||
|
||||
## recommended dependencies |
||||
#sudo -E apt-get -y install libpcre3 libpcre3-dbg libpcre3-dev build-essential libpcap-dev \ |
||||
# libnet1-dev libyaml-0-2 libyaml-dev pkg-config zlib1g zlib1g-dev \ |
||||
# libcap-ng-dev libcap-ng0 make libmagic-dev \ |
||||
# libgeoip-dev liblua5.1-dev libhiredis-dev libevent-dev \ |
||||
# python-yaml rustc cargo |
||||
|
||||
# iptables/nftables integration |
||||
sudo -E apt-get -y install libnetfilter-queue-dev libnetfilter-queue1 \ |
||||
libnetfilter-log-dev libnetfilter-log1 \ |
||||
libnfnetlink-dev libnfnetlink0 |
||||
|
||||
|
||||
if [ "$DISTRO" == "ubuntu" ]; then |
||||
echo "Installing Suricata Ubuntu PPA" |
||||
sudo -E add-apt-repository -y ppa:oisf/suricata-stable |
||||
sudo -E apt-get update |
||||
sudo -E apt-get install -y suricata |
||||
elif [ "$DISTRO" == "debian" ]; then |
||||
# retrieve version codename |
||||
source /etc/os-release |
||||
echo "deb http://http.debian.net/debian $VERSION_CODENAME-backports main" | \ |
||||
sudo -E tee /etc/apt/sources.list.d/backports.list |
||||
sudo -E apt-get update |
||||
sudo -E apt-get install -y suricata -t ${VERSION_CODENAME}-backports |
||||
else |
||||
echo "Basic Suricata installation" |
||||
sudo -E apt-get install -y suricata |
||||
fi |
||||
|
||||
# # iptables |
||||
# sudo iptables -A INPUT -j NFQUEUE |
||||
# sudo iptables -I FORWARD -j NFQUEUE |
||||
# sudo iptables -I OUTPUT -j NFQUEUE |
||||
|
||||
# # rsyslog to create /var/log/suricata.log |
||||
# sudo cp ./scripts/conf/20-suricata.conf /etc/rsyslog.d/ |
||||
# sudo chown root:root /etc/rsyslog.d/20-suricata.conf |
||||
# sudo systemctl restart rsyslog |
||||
|
||||
# rules |
||||
pushd . |
||||
cd /tmp |
||||
wget https://rules.emergingthreats.net/open/suricata-4.0/emerging.rules.tar.gz |
||||
tar zxvf emerging.rules.tar.gz |
||||
sudo -E rm /etc/suricata/rules/* -f |
||||
sudo -E mv rules/*.rules /etc/suricata/rules/ |
||||
popd |
||||
|
||||
# suricata yaml |
||||
sudo -E rm -f /etc/suricata/suricata.yaml |
||||
sudo -E wget -O /etc/suricata/suricata.yaml http://www.branchnetconsulting.com/wazuh/suricata.yaml |
||||
|
||||
IFACE=$(ip -o -4 route show to default | awk 'NR==1{print $5}') |
||||
sudo sed -i "s/eth0/${IFACE}/g" /etc/suricata/suricata.yaml |
||||
sudo sed -i "s/eth0/${IFACE}/g" /etc/default/suricata |
||||
|
||||
#systemctl restart suricata |
||||
|
||||
# wait for service to be listening |
||||
while ! nc -z 10.2.3.1 55000; do |
||||
WAIT_TIME=10 |
||||
echo "Waiting ${WAIT_TIME} seconds for Wazuh API..." |
||||
sleep ${WAIT_TIME} |
||||
done |
||||
|
||||
# set working directory to mistborn for docker-compose |
||||
pushd . |
||||
cd /opt/mistborn |
||||
|
||||
# ensure group exists |
||||
sudo docker-compose --env-file /opt/mistborn/.env -f extra/wazuh.yml exec -T wazuh /var/ossec/bin/agent_groups -a -g suricata -q 2>/dev/null |
||||
|
||||
# add this host to group |
||||
WAZUH_ID=$(sudo docker-compose --env-file /opt/mistborn/.env -f extra/wazuh.yml exec -T wazuh /var/ossec/bin/manage_agents -l | egrep ^\ *ID | grep $(hostname) | awk '{print $2}' | tr -d ',') |
||||
sudo docker-compose --env-file /opt/mistborn/.env -f extra/wazuh.yml exec -T wazuh /var/ossec/bin/agent_groups -a -i ${WAZUH_ID} -g suricata -q |
||||
|
||||
# write agent.conf |
||||
sudo docker-compose --env-file /opt/mistborn/.env -f extra/wazuh.yml exec -T wazuh bash -c "cat > /var/ossec/etc/shared/suricata/agent.conf << EOF |
||||
<agent_config> |
||||
<localfile> |
||||
<log_format>json</log_format> |
||||
<location>/var/log/suricata/eve.json</location> |
||||
</localfile> |
||||
</agent_config> |
||||
EOF |
||||
" |
||||
|
||||
# restart manager |
||||
sudo docker-compose --env-file /opt/mistborn/.env -f extra/wazuh.yml restart wazuh |
||||
|
||||
popd |
||||
|
||||
# suricata-update |
||||
sudo -E apt install python3-pip |
||||
sudo -E pip3 install pyyaml |
||||
sudo -E pip3 install https://github.com/OISF/suricata-update/archive/master.zip |
||||
|
||||
sudo -E pip3 install --pre --upgrade suricata-update |
||||
|
||||
# sudo -E suricata-update enable-source oisf/trafficid |
||||
# sudo -E suricata-update enable-source etnetera/aggressive |
||||
# sudo -E suricata-update enable-source sslbl/ssl-fp-blacklist |
||||
# sudo -E suricata-update enable-source et/open |
||||
# sudo -E suricata-update enable-source tgreen/hunting |
||||
# sudo -E suricata-update enable-source sslbl/ja3-fingerprints |
||||
# sudo -E suricata-update enable-source ptresearch/attackdetection |
||||
|
||||
sudo -E suricata-update |
||||
|
||||
sudo systemctl daemon-reload |
||||
sudo systemctl restart suricata |
||||
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash |
||||
|
||||
systemctl start suricata |
||||
systemctl enable suricata |
||||
|
||||
#apt-get install -y python-pyinotify |
||||
#python /opt/mistborn/scripts/services/scirius/suri_reloader -p /etc/suricata/rules & |
||||
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash |
||||
|
||||
systemctl stop suricata |
||||
systemctl disable suricata |
||||
|
||||
#kill $(pgrep -f suri_reloader) 2>/dev/null |
||||
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash |
||||
|
||||
# Cockpit |
||||
figlet "Mistborn: Installing Cockpit" |
||||
if [ "$DISTRO" == "ubuntu" ]; then |
||||
echo "Ubuntu backports enabled by default" |
||||
|
||||
elif [ "$DISTRO" == "debian" ]; then |
||||
sudo grep -qF "buster-backports" /etc/apt/sources.list.d/backports.list \ |
||||
&& echo "buster-backports already in sources" \ |
||||
|| echo 'deb http://deb.debian.org/debian buster-backports main' | sudo tee -a /etc/apt/sources.list.d/backports.list |
||||
|
||||
elif [ "$DISTRO" == "raspbian" ] || [ "$DISTRO" == "raspios" ]; then |
||||
echo "Raspbian repos contain cockpit" |
||||
fi |
||||
|
||||
sudo -E apt-get install -y cockpit |
||||
|
||||
if [ $(sudo apt-cache show cockpit-docker > /dev/null 2>&1) ]; then |
||||
# no longer supported upstream in Ubuntu 20.04 |
||||
sudo -E apt-get install -y cockpit-docker |
||||
elif [ $(sudo apt-cache show cockpit-podman > /dev/null 2>&1) ]; then |
||||
sudo -E apt-get install -y cockpit-podman |
||||
fi |
||||
|
||||
sudo cp ./scripts/conf/cockpit.conf /etc/cockpit/cockpit.conf |
||||
sudo systemctl restart cockpit.socket |
||||
|
||||
# create system cockpit user |
||||
echo "Creating cockpit user" |
||||
sudo useradd -s /bin/bash -d /home/cockpit -m -G sudo -p $(openssl passwd -1 "$MISTBORN_DEFAULT_PASSWORD") cockpit || true |
||||
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash |
||||
|
||||
# generate bitwarden .env files |
||||
BITWARDEN_PROD_FILE="$1" |
||||
echo "WEBSOCKET_ENABLED=true" > $BITWARDEN_PROD_FILE |
||||
echo "SIGNUPS_ALLOWED=true" >> $BITWARDEN_PROD_FILE |
||||
chmod 600 $BITWARDEN_PROD_FILE |
||||
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash |
||||
|
||||
# Elasticsearch |
||||
ELASTICSEARCH_PROD_FILE="$1" |
||||
echo "MISTBORN_DEFAULT_PASSWORD=$MISTBORN_DEFAULT_PASSWORD" >> $ELASTICSEARCH_PROD_FILE |
||||
chmod 600 $ELASTICSEARCH_PROD_FILE |
||||
@ -0,0 +1,14 @@
@@ -0,0 +1,14 @@
|
||||
#!/bin/bash |
||||
|
||||
# Guacamole |
||||
GUAC_PROD_FILE="$1" |
||||
GUAC_PASSWORD=$(python3 -c "import secrets; import string; print(f''.join([secrets.choice(string.ascii_letters+string.digits) for x in range(32)]))") |
||||
echo "POSTGRES_HOST=guac_postgres" > $GUAC_PROD_FILE |
||||
echo "POSTGRES_HOSTNAME=guac_postgres" > $GUAC_PROD_FILE |
||||
echo "POSTGRES_PORT=5432" >> $GUAC_PROD_FILE |
||||
echo "POSTGRES_DB=guacamole_db" >> $GUAC_PROD_FILE |
||||
echo "POSTGRES_DATABASE=guacamole_db" >> $GUAC_PROD_FILE |
||||
echo "POSTGRES_USER=guac_user" >> $GUAC_PROD_FILE |
||||
echo "POSTGRES_PASSWORD=$GUAC_PASSWORD" >> $GUAC_PROD_FILE |
||||
echo "MISTBORN_DEFAULT_PASSWORD=$MISTBORN_DEFAULT_PASSWORD" >> $GUAC_PROD_FILE |
||||
chmod 600 $GUAC_PROD_FILE |
||||
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash |
||||
|
||||
# JITSI |
||||
JITSI_PROD_FILE="$1" |
||||
cp ${MISTBORN_HOME}/scripts/conf/jitsi.env $JITSI_PROD_FILE |
||||
mkdir -p ${MISTBORN_HOME}/.envs/.production/.jitsi-cfg/{web/letsencrypt,transcripts,prosody,jicofo,jvb} |
||||
sed -i "s/JICOFO_COMPONENT_SECRET.*/JICOFO_COMPONENT_SECRET=$(python3 -c "import secrets; import string; print(f''.join([secrets.choice(string.ascii_letters+string.digits) for x in range(32)]))")/" "$JITSI_PROD_FILE" |
||||
sed -i "s/JICOFO_AUTH_PASSWORD.*/JICOFO_AUTH_PASSWORD=$(python3 -c "import secrets; import string; print(f''.join([secrets.choice(string.ascii_letters+string.digits) for x in range(32)]))")/" "$JITSI_PROD_FILE" |
||||
sed -i "s/JVB_AUTH_PASSWORD.*/JVB_AUTH_PASSWORD=$(python3 -c "import secrets; import string; print(f''.join([secrets.choice(string.ascii_letters+string.digits) for x in range(32)]))")/" "$JITSI_PROD_FILE" |
||||
sed -i "s/JIGASI_XMPP_PASSWORD.*/JIGASI_XMPP_PASSWORD=$(python3 -c "import secrets; import string; print(f''.join([secrets.choice(string.ascii_letters+string.digits) for x in range(32)]))")/" "$JITSI_PROD_FILE" |
||||
sed -i "s/JIBRI_RECORDER_PASSWORD.*/JIBRI_RECORDER_PASSWORD=$(python3 -c "import secrets; import string; print(f''.join([secrets.choice(string.ascii_letters+string.digits) for x in range(32)]))")/" "$JITSI_PROD_FILE" |
||||
sed -i "s/JIBRI_XMPP_PASSWORD.*/JIBRI_XMPP_PASSWORD=$(python3 -c "import secrets; import string; print(f''.join([secrets.choice(string.ascii_letters+string.digits) for x in range(32)]))")/" "$JITSI_PROD_FILE" |
||||
chmod 600 $JITSI_PROD_FILE |
||||
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash |
||||
|
||||
# generate nextcloud .env files |
||||
NEXTCLOUD_PROD_FILE="$1" |
||||
#NEXTCLOUD_PASSWORD=$(python3 -c "import secrets; import string; print(f''.join([secrets.choice(string.ascii_letters+string.digits) for x in range(32)]))") |
||||
NEXTCLOUD_PASSWORD="${MISTBORN_DEFAULT_PASSWORD}" |
||||
echo "NEXTCLOUD_ADMIN_USER=mistborn" > $NEXTCLOUD_PROD_FILE |
||||
echo "NEXTCLOUD_ADMIN_PASSWORD=$NEXTCLOUD_PASSWORD" >> $NEXTCLOUD_PROD_FILE |
||||
echo "NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.mistborn" >> $NEXTCLOUD_PROD_FILE |
||||
chmod 600 $NEXTCLOUD_PROD_FILE |
||||
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash |
||||
|
||||
# generate onlyoffice .env files |
||||
ONLYOFFICE_PROD_FILE="$1" |
||||
JWT_SECRET="${MISTBORN_DEFAULT_PASSWORD}" |
||||
echo "JWT_ENABLED=true" > $ONLYOFFICE_PROD_FILE |
||||
echo "JWT_SECRET=$JWT_SECRET" >> $ONLYOFFICE_PROD_FILE |
||||
chmod 600 $ONLYOFFICE_PROD_FILE |
||||
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash |
||||
|
||||
# RaspAP |
||||
RASPAP_PROD_FILE="$1" |
||||
echo "MISTBORN_DEFAULT_PASSWORD=$MISTBORN_DEFAULT_PASSWORD" > $RASPAP_PROD_FILE |
||||
chmod 600 $RASPAP_PROD_FILE |
||||
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash |
||||
|
||||
# generate rocketchat .env files |
||||
ROCKETCHAT_PROD_FILE="$1" |
||||
#ROCKETCHAT_PASSWORD=$(python3 -c "import secrets; import string; print(f''.join([secrets.choice(string.ascii_letters+string.digits) for x in range(32)]))") |
||||
ROCKETCHAT_PASSWORD="${MISTBORN_DEFAULT_PASSWORD}" |
||||
echo "ROCKETCHAT_USER=bot" > $ROCKETCHAT_PROD_FILE |
||||
echo "ROCKETCHAT_ROOM=GENERAL" >> $ROCKETCHAT_PROD_FILE |
||||
echo "BOT_NAME=bot" >> $ROCKETCHAT_PROD_FILE |
||||
echo "ROCKETCHAT_PASSWORD=$ROCKETCHAT_PASSWORD" >> $ROCKETCHAT_PROD_FILE |
||||
|
||||
# docker environment |
||||
echo "MISTBORN_BIND_IP=${MISTBORN_BIND_IP}" >> $ROCKETCHAT_PROD_FILE |
||||
|
||||
chmod 600 $ROCKETCHAT_PROD_FILE |
||||
@ -0,0 +1,92 @@
@@ -0,0 +1,92 @@
|
||||
#!/bin/bash |
||||
|
||||
# Wazuh |
||||
WAZUH_PROD_FILE="$1" |
||||
echo "ELASTIC_USERNAME=mistborn" > $WAZUH_PROD_FILE |
||||
echo "ELASTIC_PASSWORD=$MISTBORN_DEFAULT_PASSWORD" >> $WAZUH_PROD_FILE |
||||
|
||||
echo "ELASTICSEARCH_USERNAME=mistborn" >> $WAZUH_PROD_FILE |
||||
echo "ELASTICSEARCH_PASSWORD=$MISTBORN_DEFAULT_PASSWORD" >> $WAZUH_PROD_FILE |
||||
|
||||
# kibana odfe |
||||
# kibana-odfe/config/wazuh_app_config.sh |
||||
# https://wazuh |
||||
echo "WAZUH_API_URL=https://10.2.3.1" >> $WAZUH_PROD_FILE |
||||
echo "API_PORT=55000" >> $WAZUH_PROD_FILE |
||||
echo "API_USERNAME=wazuh-wui" >> $WAZUH_PROD_FILE |
||||
|
||||
#API_PASSWORD=$(python3 -c "import secrets; import string; print(f''.join([secrets.choice(string.ascii_letters+string.digits) for x in range(32)]))") |
||||
|
||||
API_PASSWORD_PYTHON=$(cat << EOF |
||||
|
||||
import secrets |
||||
import random |
||||
import string |
||||
|
||||
random_pass = ([secrets.choice("@$!*?-"), |
||||
secrets.choice(string.digits), |
||||
secrets.choice(string.ascii_lowercase), |
||||
secrets.choice(string.ascii_uppercase), |
||||
] |
||||
+ [secrets.choice(string.ascii_lowercase |
||||
+ string.ascii_uppercase |
||||
+ "@$!*?-" |
||||
+ string.digits) for i in range(12)]) |
||||
|
||||
random.shuffle(random_pass) |
||||
random_pass = ''.join(random_pass) |
||||
print(random_pass) |
||||
|
||||
EOF |
||||
) |
||||
|
||||
API_PASSWORD=$(python3 -c "${API_PASSWORD_PYTHON}") |
||||
|
||||
echo "API_PASSWORD=${API_PASSWORD}" >> $WAZUH_PROD_FILE |
||||
|
||||
# kibana-odfe/config/entrypoint.sh: |
||||
# https://elasticsearch:9200 |
||||
echo "ELASTICSEARCH_URL=https://10.2.3.1:9200" >> $WAZUH_PROD_FILE |
||||
|
||||
|
||||
cat >> ${WAZUH_PROD_FILE}<< EOF |
||||
|
||||
PATTERN="wazuh-alerts-*" |
||||
|
||||
CHECKS_PATTERN=true |
||||
CHECKS_TEMPLATE=true |
||||
CHECKS_API=true |
||||
CHECKS_SETUP=true |
||||
|
||||
EXTENSIONS_PCI=true |
||||
EXTENSIONS_GDPR=true |
||||
EXTENSIONS_HIPAA=true |
||||
EXTENSIONS_NIST=true |
||||
EXTENSIONS_TSC=true |
||||
EXTENSIONS_AUDIT=true |
||||
EXTENSIONS_OSCAP=false |
||||
EXTENSIONS_CISCAT=false |
||||
EXTENSIONS_AWS=false |
||||
EXTENSIONS_GCP=false |
||||
EXTENSIONS_VIRUSTOTAL=true |
||||
EXTENSIONS_OSQUERY=true |
||||
EXTENSIONS_DOCKER=true |
||||
|
||||
APP_TIMEOUT=20000 |
||||
|
||||
API_SELECTOR=true |
||||
IP_SELECTOR=true |
||||
IP_IGNORE="[]" |
||||
|
||||
WAZUH_MONITORING_ENABLED=true |
||||
WAZUH_MONITORING_FREQUENCY=900 |
||||
WAZUH_MONITORING_SHARDS=2 |
||||
WAZUH_MONITORING_REPLICAS=0 |
||||
|
||||
ADMIN_PRIVILEGES=true |
||||
|
||||
EOF |
||||
|
||||
echo "MISTBORN_DEFAULT_PASSWORD=$MISTBORN_DEFAULT_PASSWORD" >> $WAZUH_PROD_FILE |
||||
|
||||
chmod 600 $WAZUH_PROD_FILE |
||||
Loading…
Reference in new issue