diff --git a/bin/install-federated.sh b/bin/install-federated.sh index a8e5e28..525ade1 100755 --- a/bin/install-federated.sh +++ b/bin/install-federated.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -x # # Federated installation script @@ -44,6 +44,7 @@ get_config() { fi done + . /federated/lib/functions.sh . /federated/lib/checks.sh . /federated/lib/network.sh . /federated/lib/dns.sh @@ -88,7 +89,7 @@ check_ports config_network # Configure and start each federated service -for i in dns postgresql ldap mail collabora nextcloud matrix listmonk vaultwarden panel proxy jitsi; do +for i in dns postgresql ldap mail collabora proxy nextcloud matrix listmonk vaultwarden panel jitsi; do config_$i start_$i done diff --git a/lib/collabora.sh b/lib/collabora.sh index 4ed0061..58eef52 100644 --- a/lib/collabora.sh +++ b/lib/collabora.sh @@ -39,12 +39,8 @@ services: - ./data/root/certs/fullchain1.pem:/etc/coolwsd/cert.pem - ./data/root/certs/privkey1.pem:/etc/coolwsd/key.pem - ./data/root/certs/chain1.pem:/etc/coolwsd/ca-chain.cert.pem - environment: - - VIRTUAL_PROTO=https - - VIRTUAL_PORT=9980 - - VIRTUAL_HOST=collabora.$DOMAIN - - domain=nextcloud.$DOMAIN - - server_name=collabora.$DOMAIN + env_file: + - ./.env cap_add: - MKNOD @@ -53,6 +49,15 @@ networks: external: true EOF +cat > /federated/apps/collabora/.env <<EOF +VIRTUAL_PROTO=https +VIRTUAL_PORT=9980 +VIRTUAL_HOST=collabora.$DOMAIN +domain=nextcloud.$DOMAIN +server_name=collabora.$DOMAIN +EOF +chmod 600 /federated/apps/collabora/.env + kill -9 $SPINPID &> /dev/null echo -ne "done." } diff --git a/lib/functions.sh b/lib/functions.sh new file mode 100644 index 0000000..65f21e9 --- /dev/null +++ b/lib/functions.sh @@ -0,0 +1,6 @@ +create_password() { +# eval $1_var=$1 +# echo "$postgres_var" + SECRET=`tr -cd '[:alnum:]' < /dev/urandom | fold -w32 | head -n1` + echo "$SECRET"; +} diff --git a/lib/jitsi.sh b/lib/jitsi.sh index b72d7bb..cb95b1e 100644 --- a/lib/jitsi.sh +++ b/lib/jitsi.sh @@ -532,7 +532,7 @@ LDAP_BASE=DC=$DOMAIN_FIRST,DC=$DOMAIN_LAST LDAP_BINDDN=CN=admin,DC=$DOMAIN_FIRST,DC=$DOMAIN_LAST # LDAP user password. Do not specify this parameter for the anonymous bind -LDAP_BINDPW=$ADMINPASS +LDAP_BINDPW=$LDAP_SECRET # LDAP filter. Tokens example: diff --git a/lib/ldap.sh b/lib/ldap.sh index a7b5cda..ea473da 100644 --- a/lib/ldap.sh +++ b/lib/ldap.sh @@ -42,22 +42,36 @@ services: - ./data/etc/ldap/slapd.d:/etc/ldap/slapd.d - ./data/certs:/container/service/slapd/assets/certs - ./data/root:/root - environment: - - LDAP_ORGANISATION=$COMPANY - - LDAP_DOMAIN=$DOMAIN - - LDAP_ADMIN_PASSWORD=$ADMINPASS - - LDAP_RFC2307BIS_SCHEMA=true - - LDAP_REMOVE_CONFIG_AFTER_SETUP=true - - LDAP_TLS=true - - LDAP_TLS_CRT_FILENAME=fullchain1.pem - - LDAP_TLS_KEY_FILENAME=privkey1.pem - - LDAP_TLS_CA_CRT_FILENAME=chain1.pem - - LDAP_TLS_VERIFY_CLIENT=try + env_file: + - ./.env + secrets: + - federated_ldap_password +secrets: + federated_ldap_password: + file: ./.ldap.secret networks: federated: external: true EOF + +cat > /federated/apps/ldap/.env <<EOF +LDAP_ORGANISATION=$COMPANY +LDAP_DOMAIN=$DOMAIN +LDAP_ADMIN_PASSWORD_FILE=/run/secrets/federated_ldap_password +LDAP_RFC2307BIS_SCHEMA=true +LDAP_REMOVE_CONFIG_AFTER_SETUP=true +LDAP_TLS=true +LDAP_TLS_CRT_FILENAME=fullchain1.pem +LDAP_TLS_KEY_FILENAME=privkey1.pem +LDAP_TLS_CA_CRT_FILENAME=chain1.pem +LDAP_TLS_VERIFY_CLIENT=try +EOF +chmod 600 /federated/apps/ldap/.env + +LDAP_SECRET=$(create_password); +echo "$LDAP_SECRET" > /federated/apps/ldap/.ldap.secret +chmod 600 /federated/apps/ldap/.ldap.secret cat > /federated/apps/ldap/data/root/ldap.ldif <<EOF dn: ou=people,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST diff --git a/lib/listmonk.sh b/lib/listmonk.sh index 891651f..50df743 100644 --- a/lib/listmonk.sh +++ b/lib/listmonk.sh @@ -31,11 +31,8 @@ services: networks: federated: ipv4_address: 172.99.0.39 - environment: - - VIRTUAL_PROTO=http - - VIRTUAL_PORT=9000 - - VIRTUAL_HOST=listmonk.$DOMAIN - - TZ=Etc/UTC + env_file: + - ./.env volumes: - ./data/listmonk/config.toml:/listmonk/config.toml - ./data/listmonk/static:/listmonk/static @@ -45,6 +42,13 @@ networks: external: true EOF +cat > /federated/apps/listmonk/.env <<EOF +VIRTUAL_PROTO=http +VIRTUAL_PORT=9000 +VIRTUAL_HOST=listmonk.$DOMAIN +TZ=Etc/UTC +EOF + cat > /federated/apps/listmonk/data/listmonk/config.toml <<EOF [app] address = "0.0.0.0:9000" @@ -56,13 +60,14 @@ admin_password = "$ADMINPASS" host = "postgresql.$DOMAIN" port = 5432 user = "listmonk" -password = "$ADMINPASS" +password = "$LISTMONK_SECRET" database = "listmonk" ssl_mode = "disable" max_open = 25 max_idle = 25 max_lifetime = "300s" EOF +chmod 600 /federated/apps/listmonk/data/listmonk/config.toml /federated/apps/listmonk/.env kill -9 $SPINPID &> /dev/null echo -ne "done." diff --git a/lib/mail.sh b/lib/mail.sh index 4a4656b..4d4542c 100644 --- a/lib/mail.sh +++ b/lib/mail.sh @@ -48,45 +48,8 @@ services: - ./data/var/log/mail:/var/log/mail/ - ./data/tmp/docker-mailserver:/tmp/docker-mailserver/ - /etc/localtime:/etc/localtime:ro - environment: - - ENABLE_SPAMASSASSIN=1 - - ENABLE_SPAMASSASSIN_KAM=1 - - SPAMASSASSIN_SPAM_TO_INBOX=1 - - ENABLE_CLAMAV=0 - - ENABLE_FAIL2BAN=1 - - ENABLE_POSTGREY=1 - - ONE_DIR=1 - - DMS_DEBUG=0 - - LOG_LEVEL=debug - - ENABLE_LDAP=1 - - SSL_TYPE=manual - - SSL_CERT_PATH=/root/certs/fullchain1.pem - - SSL_KEY_PATH=/root/certs/privkey1.pem - - LDAP_START_TLS=yes - - DOVECOT_TLS=yes - - SASLAUTHD_LDAP_START_TLS=yes - - LDAP_SERVER_HOST=ldap.$DOMAIN - - LDAP_SEARCH_BASE=ou=people,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST - - LDAP_BIND_DN=cn=admin,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST - - LDAP_BIND_PW=$ADMINPASS - - LDAP_QUERY_FILTER_USER=(&(mail=%s)(mailEnabled=TRUE)) - - LDAP_QUERY_FILTER_GROUP=(&(mailGroupMember=%s)(mailEnabled=TRUE)) - - LDAP_QUERY_FILTER_ALIAS=(|(&(mailAlias=%s)(objectClass=PostfixBookMailForward))(&(mailAlias=%s)(objectClass=inetOrgPerson)(mailEnabled=TRUE))) - - LDAP_QUERY_FILTER_DOMAIN=(|(&(mail=*@%s)(objectClass=PostfixBookMailAccount)(mailEnabled=TRUE))(&(mailGroupMember=*@%s)(objectClass=PostfixBookMailAccount)(mailEnabled=TRUE))(&(mailalias=*@%s)(objectClass=PostfixBookMailForward))) - # DOVECOT - - DOVECOT_PASS_FILTER=(&(objectClass=inetOrgPerson)(uid=%n)) - - DOVECOT_USER_FILTER=(&(objectClass=inetOrgPerson)(uid=%n)) - - DOVECOT_USER_ATTRS=homeDirectory=home,=uid=5000,=gid=5000 - # SASLAUTHD - - ENABLE_SASLAUTHD=1 - - SASLAUTHD_MECHANISMS=ldap - - SASLAUTHD_LDAP_SERVER=ldap.$DOMAIN - - SASLAUTHD_LDAP_BIND_DN=cn=admin,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST - - SASLAUTHD_LDAP_PASSWORD=$ADMINPASS - - SASLAUTHD_LDAP_SEARCH_BASE=ou=people,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST - - SASLAUTHD_LDAP_FILTER=(&(objectClass=inetOrgPerson)(uid=%U)) - - POSTMASTER_ADDRESS=postmaster@localhost.localdomain - - POSTFIX_MESSAGE_SIZE_LIMIT=100000000 + env_file: + - ./.env cap_add: - NET_ADMIN - SYS_PTRACE @@ -96,6 +59,48 @@ networks: external: true EOF +cat > /federated/apps/mail/.env <<EOF +ENABLE_SPAMASSASSIN=1 +ENABLE_SPAMASSASSIN_KAM=1 +SPAMASSASSIN_SPAM_TO_INBOX=1 +ENABLE_CLAMAV=0 +ENABLE_FAIL2BAN=1 +ENABLE_POSTGREY=1 +ONE_DIR=1 +DMS_DEBUG=0 +LOG_LEVEL=debug +ENABLE_LDAP=1 +SSL_TYPE=manual +SSL_CERT_PATH=/root/certs/fullchain1.pem +SSL_KEY_PATH=/root/certs/privkey1.pem +LDAP_START_TLS=yes +DOVECOT_TLS=yes +SASLAUTHD_LDAP_START_TLS=yes +LDAP_SERVER_HOST=ldap.$DOMAIN +LDAP_SEARCH_BASE=ou=people,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST +LDAP_BIND_DN=cn=admin,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST +LDAP_BIND_PW=$LDAP_SECRET +LDAP_QUERY_FILTER_USER=(&(mail=%s)(mailEnabled=TRUE)) +LDAP_QUERY_FILTER_GROUP=(&(mailGroupMember=%s)(mailEnabled=TRUE)) +LDAP_QUERY_FILTER_ALIAS=(|(&(mailAlias=%s)(objectClass=PostfixBookMailForward))(&(mailAlias=%s)(objectClass=inetOrgPerson)(mailEnabled=TRUE))) +LDAP_QUERY_FILTER_DOMAIN=(|(&(mail=*@%s)(objectClass=PostfixBookMailAccount)(mailEnabled=TRUE))(&(mailGroupMember=*@%s)(objectClass=PostfixBookMailAccount)(mailEnabled=TRUE))(&(mailalias=*@%s)(objectClass=PostfixBookMailForward))) +# DOVECOT +DOVECOT_PASS_FILTER=(&(objectClass=inetOrgPerson)(uid=%n)) +DOVECOT_USER_FILTER=(&(objectClass=inetOrgPerson)(uid=%n)) +DOVECOT_USER_ATTRS=homeDirectory=home,=uid=5000,=gid=5000 +# SASLAUTHD +ENABLE_SASLAUTHD=1 +SASLAUTHD_MECHANISMS=ldap +SASLAUTHD_LDAP_SERVER=ldap.$DOMAIN +SASLAUTHD_LDAP_BIND_DN=cn=admin,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST +SASLAUTHD_LDAP_PASSWORD=$LDAP_SECRET +SASLAUTHD_LDAP_SEARCH_BASE=ou=people,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST +SASLAUTHD_LDAP_FILTER=(&(objectClass=inetOrgPerson)(uid=%U)) +POSTMASTER_ADDRESS=postmaster@localhost.localdomain +POSTFIX_MESSAGE_SIZE_LIMIT=100000000 +EOF +chmod 600 /federated/apps/mail/.env + cat > /federated/apps/mail/data/tmp/docker-mailserver/postfix-main.cf <<'EOF' smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unknown_sender_domain, reject_sender_login_mismatch smtpd_sender_login_maps = ldap:/etc/postfix/ldap-aliases.cf diff --git a/lib/matrix.sh b/lib/matrix.sh index 774dcc5..81d5e1b 100644 --- a/lib/matrix.sh +++ b/lib/matrix.sh @@ -34,10 +34,8 @@ services: networks: federated: ipv4_address: 172.99.0.31 - environment: - - VIRTUAL_PROTO=http - - VIRTUAL_PORT=80 - - VIRTUAL_HOST=element.$DOMAIN + env_file: + - ./.env.element synapse: image: matrixdotorg/synapse:latest @@ -50,16 +48,26 @@ services: ipv4_address: 172.99.0.32 volumes: - ./data/matrix:/data - environment: - - VIRTUAL_PROTO=http - - VIRTUAL_PORT=8008 - - VIRTUAL_HOST=matrix.$DOMAIN + env_file: + - ./.env.matrix networks: federated: external: true EOF +cat > /federated/apps/matrix/.env.element <<EOF +VIRTUAL_PROTO=http +VIRTUAL_PORT=80 +VIRTUAL_HOST=element.$DOMAIN +EOF +cat > /federated/apps/matrix/.env.matrix <<EOF +VIRTUAL_PROTO=http +VIRTUAL_PORT=8008 +VIRTUAL_HOST=matrix.$DOMAIN +EOF +chmod 600 /federated/apps/matrix/.env.element /federated/apps/matrix/.env.matrix + cat > /federated/apps/matrix/data/element/element-config.json <<EOF { "default_server_config": { @@ -156,7 +164,7 @@ database: name: psycopg2 args: user: matrix - password: $ADMINPASS + password: $MATRIX_SECRET host: postgresql.$DOMAIN database: matrix cp_min: 5 @@ -173,7 +181,7 @@ modules: mail: "mail" name: "givenName" bind_dn: cn=admin,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST - bind_password: $ADMINPASS + bind_password: $LDAP_SECRET tls_options: validate: true local_certificate_file: /data/fullchain1.pem diff --git a/lib/nextcloud.sh b/lib/nextcloud.sh index 9ad3d59..fb2735a 100644 --- a/lib/nextcloud.sh +++ b/lib/nextcloud.sh @@ -37,24 +37,41 @@ services: - "collabora.$DOMAIN:$EXTERNALIP" volumes: - ./data/var/www/html:/var/www/html - environment: - - VIRTUAL_PROTO=http - - VIRTUAL_PORT=80 - - VIRTUAL_HOST=nextcloud.$DOMAIN - - PHP_MEMORY_LIMIT=2048M - - PHP_UPLOAD_LIMIT=2048M - - NEXTCLOUD_ADMIN_USER=nextcloud - - NEXTCLOUD_ADMIN_PASSWORD=$ADMINPASS - - POSTGRES_HOST=postgresql.$DOMAIN - - POSTGRES_DB=nextcloud - - POSTGRES_USER=nextcloud - - POSTGRES_PASSWORD=$ADMINPASS + env_file: + - ./.env + secrets: + - federated_psql_password + - federated_nextcloud_password +secrets: + federated_psql_password: + file: ./.postgresql.secret + federated_nextcloud_password: + file: ./.nextcloud.secret networks: federated: external: true EOF +cp /federated/apps/postgresql/.postgresql.secret /federated/apps/nextcloud/ +echo "$ADMINPASS" > /federated/apps/nextcloud/.nextcloud.secret +chmod 600 /federated/apps/nextcloud/.postgresql.secret /federated/apps/nextcloud/.nextcloud.secret + +cat > /federated/apps/nextcloud/.env <<EOF +VIRTUAL_PROTO=http +VIRTUAL_PORT=80 +VIRTUAL_HOST=nextcloud.$DOMAIN +PHP_MEMORY_LIMIT=2048M +PHP_UPLOAD_LIMIT=2048M +NEXTCLOUD_ADMIN_USER=nextcloud +NEXTCLOUD_ADMIN_PASSWORD_FILE=/run/secrets/federated_nextcloud_password +POSTGRES_HOST=postgresql.$DOMAIN +POSTGRES_DB=nextcloud +POSTGRES_USER=nextcloud +POSTGRES_PASSWORD_FILE=/run/secrets/federated_psql_password +EOF +chmod 600 /federated/apps/nextcloud/.env + cat > /federated/apps/nextcloud/supervisord.conf <<EOF [supervisord] nodaemon=true @@ -110,7 +127,7 @@ PATH=/var/www/html:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/sbin:/bin ./occ ldap:create-empty-config ./occ ldap:set-config s01 ldapHost 'ldaps://ldap.$DOMAIN' ./occ ldap:set-config s01 ldapAgentName cn=admin,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST -./occ ldap:set-config s01 ldapAgentPassword $ADMINPASS +./occ ldap:set-config s01 ldapAgentPassword $LDAP_SECRET ./occ ldap:set-config s01 ldapBase ou=people,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST ./occ ldap:set-config s01 ldapBaseGroups ou=people,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST ./occ ldap:set-config s01 ldapBaseUsers ou=people,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST diff --git a/lib/panel.sh b/lib/panel.sh index 118b7c0..844f7b8 100644 --- a/lib/panel.sh +++ b/lib/panel.sh @@ -58,33 +58,38 @@ services: networks: federated: ipv4_address: 172.99.0.12 - environment: - - VIRTUAL_PROTO=http - - VIRTUAL_PORT=80 - - VIRTUAL_HOST=panel.$DOMAIN - - SERVER_HOSTNAME=panel.$DOMAIN - - LDAP_URI=ldap://ldap.$DOMAIN - - LDAP_BASE_DN=dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST - - LDAP_REQUIRE_STARTTLS=true - - LDAP_ADMINS_GROUP=admins - - LDAP_ADMIN_BIND_DN=cn=admin,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST - - LDAP_ADMIN_BIND_PWD=$ADMINPASS - - LDAP_ACCOUNT_ADDITIONAL_OBJECTCLASSES=PostfixBookMailAccount - - LDAP_ACCOUNT_ADDITIONAL_ATTRIBUTES=mailEnabled:Mail Enabled:TRUE,mailAlias+:Email aliases - - EMAIL_DOMAIN=$DOMAIN - - USERNAME_FORMAT={first_name}.{last_name} - - SITE_NAME=$COMPANY User Manager - - SMTP_HOSTNAME=mail.$DOMAIN - - SMTP_USERNAME=admin - - SMTP_PASSWORD=$ADMINPASS - - EMAIL_FROM_ADDRESS=admin@$DOMAIN - - SMTP_USE_TLS=true - - NO_HTTPS=true + env_file: + - ./.env networks: federated: external: true EOF + +cat > /federated/apps/panel/.env <<EOF +VIRTUAL_PROTO=http +VIRTUAL_PORT=80 +VIRTUAL_HOST=panel.$DOMAIN +SERVER_HOSTNAME=panel.$DOMAIN +LDAP_URI=ldap://ldap.$DOMAIN +LDAP_BASE_DN=dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST +LDAP_REQUIRE_STARTTLS=true +LDAP_ADMINS_GROUP=admins +LDAP_ADMIN_BIND_DN=cn=admin,dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST +LDAP_ADMIN_BIND_PWD=$LDAP_SECRET +LDAP_ACCOUNT_ADDITIONAL_OBJECTCLASSES=PostfixBookMailAccount +LDAP_ACCOUNT_ADDITIONAL_ATTRIBUTES=mailEnabled:Mail Enabled:TRUE,mailAlias+:Email aliases +EMAIL_DOMAIN=$DOMAIN +USERNAME_FORMAT={first_name}.{last_name} +SITE_NAME=$COMPANY User Manager +SMTP_HOSTNAME=mail.$DOMAIN +SMTP_USERNAME=admin +SMTP_PASSWORD=$ADMINPASS +EMAIL_FROM_ADDRESS=admin@$DOMAIN +SMTP_USE_TLS=true +NO_HTTPS=true +EOF +chmod 600 /federated/apps/panel/.env kill -9 $SPINPID &> /dev/null echo -ne "done." diff --git a/lib/postgresql.sh b/lib/postgresql.sh index 8d96e44..dc51c9d 100644 --- a/lib/postgresql.sh +++ b/lib/postgresql.sh @@ -39,11 +39,10 @@ services: - ./data/var/lib/postgresql/server.key:/var/lib/postgresql/server.key - ./data/var/lib/postgresql/data:/var/lib/postgresql/data - ./data/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d - environment: - - POSTGRES_DB=nextcloud - - POSTGRES_USER=nextcloud - - POSTGRES_PASSWORD=$ADMINPASS - - POSTGRES_INITDB_ARGS=--encoding='UTF8' --lc-collate='C' --lc-ctype='C' + env_file: + - ./.env + secrets: + - federated_psql_password command: > -c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt @@ -54,20 +53,38 @@ services: timeout: 5s retries: 5 +secrets: + federated_psql_password: + file: ./.postgresql.secret networks: federated: external: true EOF +cat > /federated/apps/postgresql/.env <<EOF +POSTGRES_DB=nextcloud +POSTGRES_USER=nextcloud +POSTGRES_PASSWORD_FILE=/run/secrets/federated_psql_password +POSTGRES_INITDB_ARGS=--encoding='UTF8' --lc-collate='C' --lc-ctype='C' +EOF +chmod 600 /federated/apps/postgresql/.env + +PSQL_SECRET=$(create_password); +echo "$PSQL_SECRET" > /federated/apps/postgresql/.postgresql.secret +chmod 600 /federated/apps/postgresql/.postgresql.secret +VAULTWARDEN_SECRET=$(create_password); +LISTMONK_SECRET=$(create_password); +MATRIX_SECRET=$(create_password); + # cat postgresql/data/docker-entrypoint-initdb.d/init.sql cat > /federated/apps/postgresql/data/docker-entrypoint-initdb.d/init.sql <<EOF -CREATE USER vaultwarden WITH PASSWORD '$ADMINPASS'; +CREATE USER vaultwarden WITH PASSWORD '$VAULTWARDEN_SECRET'; CREATE DATABASE vaultwarden; GRANT ALL PRIVILEGES ON DATABASE vaultwarden TO vaultwarden; -CREATE USER listmonk WITH PASSWORD '$ADMINPASS'; +CREATE USER listmonk WITH PASSWORD '$LISTMONK_SECRET'; CREATE DATABASE listmonk; GRANT ALL PRIVILEGES ON DATABASE listmonk TO listmonk; -CREATE USER matrix WITH PASSWORD '$ADMINPASS'; +CREATE USER matrix WITH PASSWORD '$MATRIX_SECRET'; CREATE DATABASE matrix; GRANT ALL PRIVILEGES ON DATABASE matrix TO matrix; EOF diff --git a/lib/vaultwarden.sh b/lib/vaultwarden.sh index d20e37c..c601f6b 100644 --- a/lib/vaultwarden.sh +++ b/lib/vaultwarden.sh @@ -30,15 +30,8 @@ services: networks: federated: ipv4_address: 172.99.0.33 - environment: - - VAULTWARDEN_DATABASE_URL=vaultwarden://vaultwarden:$ADMINPASS@vaultwarden.$DOMAIN/vaultwarden - - "DATABASE_URL=vaultwarden://vaultwarden:$ADMINPASS@vaultwarden.$DOMAIN/vaultwarden" - - VIRTUAL_PROTO=http - - VIRTUAL_PORT=80 - - VIRTUAL_HOST=vaultwarden.$DOMAIN - - WEBSOCKET_ENABLED=true - - ADMIN_TOKEN=$ADMINPASS - # - SIGNUPS_ALLOWED=false + env_file: + - ./.env volumes: - ./data/data:/data @@ -46,6 +39,17 @@ networks: federated: external: true EOF + +cat > /federated/apps/vaultwarden/.env <<EOF +DATABASE_URL=postgresql://vaultwarden:$VAULTWARDEN_SECRET@postgresql.$DOMAIN:5432/vaultwarden +VIRTUAL_PROTO=http +VIRTUAL_PORT=80 +VIRTUAL_HOST=vaultwarden.$DOMAIN +WEBSOCKET_ENABLED=true +ADMIN_TOKEN=$VAULTWARDEN_SECRET +#- SIGNUPS_ALLOWED=false +EOF +chmod 600 /federated/apps/vaultwarden/.env kill -9 $SPINPID &> /dev/null echo -ne "done."