Merge branch 'master' into onlyoffice
This commit is contained in:
@@ -0,0 +1,307 @@
|
||||
#
|
||||
# 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=8443
|
||||
|
||||
# System time zone.
|
||||
TZ=Europe/Amsterdam
|
||||
|
||||
# Public URL for the web service.
|
||||
#PUBLIC_URL=https://meet.example.com
|
||||
|
||||
# IP address of the Docker host. See the "Running on a LAN environment" section
|
||||
# in the README.
|
||||
DOCKER_HOST_ADDRESS=10.2.3.1
|
||||
|
||||
|
||||
#
|
||||
# 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
|
||||
|
||||
|
||||
#
|
||||
# Etherpad integration (for document sharing)
|
||||
#
|
||||
|
||||
# Set etherpad-lite URL (uncomment to enable).
|
||||
#ETHERPAD_URL_BASE=http://etherpad.meet.jitsi:9001
|
||||
|
||||
|
||||
#
|
||||
# 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 README 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 sertificate verify is enabled.
|
||||
#LDAP_TLS_CACERT_FILE=/etc/ssl/certs/ca-certificates.crt
|
||||
|
||||
# Path to CA certs directory. Used when server sertificate 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
|
||||
|
||||
# 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
|
||||
|
||||
# XMPP password for JVB client connections.
|
||||
JVB_AUTH_PASSWORD=passw0rd
|
||||
|
||||
# STUN servers used to discover the server's public IP.
|
||||
JVB_STUN_SERVERS=stun.l.google.com:19302,stun1.l.google.com:19302,stun2.l.google.com:19302
|
||||
|
||||
# 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
|
||||
|
||||
# A comma separated list of APIs to enable when the JVB is started. The default is none.
|
||||
# See https://github.com/jitsi/jitsi-videobridge/blob/master/doc/rest.md for more information
|
||||
#JVB_ENABLE_APIS=rest,colibri
|
||||
|
||||
# XMPP component password for Jicofo.
|
||||
JICOFO_COMPONENT_SECRET=s3cr37
|
||||
|
||||
# XMPP user for Jicofo client connections. NOTE: this option doesn't currently work due to a bug.
|
||||
JICOFO_AUTH_USER=focus
|
||||
|
||||
# XMPP password for Jicofo client connections.
|
||||
JICOFO_AUTH_PASSWORD=passw0rd
|
||||
|
||||
# Base URL of Jicofo's reservation REST API
|
||||
#JICOFO_RESERVATION_REST_BASE_URL=http://reservation.example.com
|
||||
|
||||
# XMPP user for Jigasi MUC client connections.
|
||||
JIGASI_XMPP_USER=jigasi
|
||||
|
||||
# XMPP password for Jigasi MUC client connections.
|
||||
JIGASI_XMPP_PASSWORD=passw0rd
|
||||
|
||||
# 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 recordord an 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 post to the chat an url 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" from 1 to 5 paragraph.
|
||||
# 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
|
||||
|
||||
# XMPP recorder password for Jibri client connections.
|
||||
JIBRI_RECORDER_PASSWORD=passw0rd
|
||||
|
||||
# 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
|
||||
|
||||
# XMPP password for Jibri client connections.
|
||||
JIBRI_XMPP_PASSWORD=passw0rd
|
||||
|
||||
# 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. This can be useful if TLS connections are going to be handled outside of this setup.
|
||||
DISABLE_HTTPS=1
|
||||
|
||||
# Redirects HTTP traffic to HTTPS. Only works with the standard HTTPS port (443).
|
||||
#ENABLE_HTTP_REDIRECT=1
|
||||
+38
-6
@@ -37,7 +37,7 @@ if [ $(whoami) != "$MISTBORN_USER" ]; then
|
||||
|
||||
sudo cp $FULLPATH /home/$MISTBORN_USER
|
||||
sudo chown $MISTBORN_USER:$MISTBORN_USER /home/$MISTBORN_USER/$FILENAME
|
||||
sudo SSH_CLIENT="$SSH_CLIENT" MISTBORN_DEFAULT_PASSWORD="$MISTBORN_DEFAULT_PASSWORD" GIT_BRANCH="$GIT_BRANCH" -i -u $MISTBORN_USER bash -c "/home/$MISTBORN_USER/$FILENAME" # self-referential call
|
||||
sudo SSH_CLIENT="$SSH_CLIENT" MISTBORN_DEFAULT_PASSWORD="$MISTBORN_DEFAULT_PASSWORD" GIT_BRANCH="$GIT_BRANCH" MISTBORN_INSTALL_COCKPIT="$MISTBORN_INSTALL_COCKPIT" -i -u $MISTBORN_USER bash -c "/home/$MISTBORN_USER/$FILENAME" # self-referential call
|
||||
exit 0
|
||||
fi
|
||||
|
||||
@@ -65,6 +65,14 @@ else
|
||||
echo "MISTBORN_DEFAULT_PASSWORD is already set"
|
||||
fi
|
||||
|
||||
# Install Cockpit?
|
||||
if [ -z "${MISTBORN_INSTALL_COCKPIT}" ]; then
|
||||
read -p "Install Cockpit (a somewhat resource-heavy system management graphical user interface)? [Y/n]: " MISTBORN_INSTALL_COCKPIT
|
||||
echo
|
||||
MISTBORN_INSTALL_COCKPIT=${MISTBORN_INSTALL_COCKPIT:-Y}
|
||||
fi
|
||||
|
||||
|
||||
# SSH keys
|
||||
if [ ! -f ~/.ssh/id_rsa ]; then
|
||||
echo "Generating SSH keypair for $USER"
|
||||
@@ -86,6 +94,12 @@ pushd .
|
||||
cd /opt/mistborn
|
||||
git submodule update --init --recursive
|
||||
|
||||
# initial load update package list
|
||||
sudo apt-get update
|
||||
|
||||
# install figlet
|
||||
sudo apt-get install -y figlet
|
||||
|
||||
# get os and distro
|
||||
source ./scripts/subinstallers/platform.sh
|
||||
|
||||
@@ -128,12 +142,19 @@ source ./scripts/subinstallers/docker.sh
|
||||
sudo apt-get install -y unattended-upgrades
|
||||
|
||||
# Cockpit
|
||||
source ./scripts/subinstallers/cockpit.sh
|
||||
if [[ "$MISTBORN_INSTALL_COCKPIT" =~ ^([yY][eE][sS]|[yY])$ ]]
|
||||
then
|
||||
# install cockpit
|
||||
source ./scripts/subinstallers/cockpit.sh
|
||||
fi
|
||||
|
||||
# Mistborn
|
||||
# final setup vars
|
||||
iface=$(ip -o -4 route show to default | egrep -o 'dev [^ ]*' | awk '{print $2}')
|
||||
IPV4_PUBLIC=$(ip -o -4 route show default | egrep -o 'dev [^ ]*' | awk '{print $2}' | xargs ip -4 addr show | grep 'inet ' | awk '{print $2}' | grep -o "^[0-9.]*" | tr -cd '\11\12\15\40-\176' | head -1) # tail -1 to get last
|
||||
iface=$(ip -o -4 route show to default | egrep -o 'dev [^ ]*' | awk 'NR==1{print $2}')
|
||||
figlet "Mistborn default NIC: $iface"
|
||||
|
||||
#IPV4_PUBLIC=$(ip -o -4 route show default | egrep -o 'dev [^ ]*' | awk '{print $2}' | xargs ip -4 addr show | grep 'inet ' | awk '{print $2}' | grep -o "^[0-9.]*" | tr -cd '\11\12\15\40-\176' | head -1) # tail -1 to get last
|
||||
IPV4_PUBLIC="10.2.3.1"
|
||||
|
||||
# clean
|
||||
if [ -f "/etc/systemd/system/Mistborn-base.service" ]; then
|
||||
@@ -180,7 +201,11 @@ sudo mkdir -p ../mistborn_volumes/base/pihole/etc-dnsmasqd
|
||||
sudo mkdir -p ../mistborn_volumes/extra
|
||||
|
||||
# Traefik final setup (cockpit)
|
||||
sudo sed -i "s/IPV4_PUBLIC/$IPV4_PUBLIC/" ./compose/production/traefik/traefik.toml
|
||||
cp ./compose/production/traefik/traefik.toml.template ./compose/production/traefik/traefik.toml
|
||||
# setup tls certs
|
||||
source ./scripts/subinstallers/openssl.sh
|
||||
sudo rm -rf ../mistborn_volumes/base/tls
|
||||
sudo mv ./tls ../mistborn_volumes/base/
|
||||
|
||||
# Download docker images while DNS is operable
|
||||
sudo docker-compose -f base.yml pull || true
|
||||
@@ -192,8 +217,11 @@ sudo systemctl disable systemd-resolved 2>/dev/null || true
|
||||
sudo systemctl stop dnsmasq 2>/dev/null || true
|
||||
sudo systemctl disable dnsmasq 2>/dev/null || true
|
||||
|
||||
# hostname in /etc/hosts
|
||||
sudo grep -qF "$(hostname)" /etc/hosts && echo "$(hostname) already in /etc/hosts" || echo "127.0.1.1 $(hostname) $(hostname)" | sudo tee -a /etc/hosts
|
||||
|
||||
# resolve all *.mistborn domains
|
||||
echo "address=/.mistborn/$IPV4_PUBLIC" | sudo tee ../mistborn_volumes/base/pihole/etc-dnsmasqd/02-lan.conf
|
||||
echo "address=/.mistborn/10.2.3.1" | sudo tee ../mistborn_volumes/base/pihole/etc-dnsmasqd/02-lan.conf
|
||||
|
||||
# ResolvConf (OpenResolv installed with Wireguard)
|
||||
sudo sed -i "s/#name_servers.*/name_servers=$IPV4_PUBLIC/" /etc/resolvconf.conf
|
||||
@@ -209,3 +237,7 @@ sudo tar -czf ../mistborn_backup/mistborn_volumes_backup.tar.gz ../mistborn_volu
|
||||
sudo systemctl enable Mistborn-base.service
|
||||
sudo systemctl start Mistborn-base.service
|
||||
popd
|
||||
|
||||
figlet "Mistborn Installed"
|
||||
echo "Watch Mistborn start: sudo journalctl -xfu Mistborn-base"
|
||||
echo "Retrieve Wireguard default config for admin: sudo docker-compose -f /opt/mistborn/base.yml run --rm django python manage.py getconf admin default"
|
||||
|
||||
@@ -12,9 +12,11 @@ PermissionsStartOnly=true
|
||||
ExecStartPre=/usr/local/bin/docker-compose -f /opt/mistborn/base.yml down
|
||||
|
||||
ExecStartPre=/usr/local/bin/docker-compose -f /opt/mistborn/base.yml build
|
||||
ExecStartPre=-/sbin/ip address add 10.2.3.1/30 dev DIFACE
|
||||
ExecStartPre=/sbin/iptables -I DOCKER-USER -i DIFACE -p udp --dport 53 -j MISTBORN_LOG_DROP
|
||||
ExecStartPre=/sbin/iptables -I DOCKER-USER -i DIFACE -p tcp --dport 53 -j MISTBORN_LOG_DROP
|
||||
ExecStartPre=/sbin/iptables -I DOCKER-USER -i DIFACE -p tcp --dport 80 -j MISTBORN_LOG_DROP
|
||||
ExecStartPre=/sbin/iptables -I DOCKER-USER -i DIFACE -p tcp --dport 443 -j MISTBORN_LOG_DROP
|
||||
ExecStartPre=/sbin/iptables -I DOCKER-USER -i DIFACE -p tcp --dport 5555 -j MISTBORN_LOG_DROP
|
||||
ExecStartPre=/sbin/iptables -A OUTPUT -o DIFACE -p udp --dport 53 -j MISTBORN_LOG_DROP
|
||||
ExecStartPre=/sbin/ip6tables -A OUTPUT -p udp --dport 53 -j MISTBORN_LOG_DROP
|
||||
@@ -24,12 +26,13 @@ ExecStart=/usr/local/bin/docker-compose -f /opt/mistborn/base.yml up
|
||||
# Stop container when unit is stopped
|
||||
ExecStop=/usr/local/bin/docker-compose -f /opt/mistborn/base.yml down
|
||||
# Post stop
|
||||
ExecStopPost=/sbin/iptables -D DOCKER-USER -i DIFACE -p udp --dport 53 -j MISTBORN_LOG_DROP
|
||||
ExecStopPost=/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 53 -j MISTBORN_LOG_DROP
|
||||
ExecStopPost=/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 80 -j MISTBORN_LOG_DROP
|
||||
ExecStopPost=/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 5555 -j MISTBORN_LOG_DROP
|
||||
ExecStopPost=/sbin/iptables -D OUTPUT -o DIFACE -p udp --dport 53 -j MISTBORN_LOG_DROP
|
||||
ExecStopPost=/sbin/ip6tables -D OUTPUT -p udp --dport 53 -j MISTBORN_LOG_DROP
|
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p udp --dport 53 -j MISTBORN_LOG_DROP
|
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 53 -j MISTBORN_LOG_DROP
|
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 80 -j MISTBORN_LOG_DROP
|
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 443 -j MISTBORN_LOG_DROP
|
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 5555 -j MISTBORN_LOG_DROP
|
||||
ExecStopPost=-/sbin/iptables -D OUTPUT -o DIFACE -p udp --dport 53 -j MISTBORN_LOG_DROP
|
||||
ExecStopPost=-/sbin/ip6tables -D OUTPUT -p udp --dport 53 -j MISTBORN_LOG_DROP
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
@@ -17,7 +17,7 @@ ExecStart=/usr/local/bin/docker-compose -f /opt/mistborn/extra/bitwarden.yml up
|
||||
# Stop container when unit is stopped
|
||||
ExecStop=/usr/local/bin/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
|
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 3012 -j MISTBORN_LOG_DROP
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
[Unit]
|
||||
Description=Mistborn Jitsi Service
|
||||
Requires=Mistborn-base.service
|
||||
After=Mistborn-base.service
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
User=root
|
||||
Group=docker
|
||||
PermissionsStartOnly=true
|
||||
EnvironmentFile=/opt/mistborn/.envs/.production/.jitsi
|
||||
|
||||
# Shutdown container (if running) when unit is stopped
|
||||
ExecStartPre=/usr/local/bin/docker-compose -f /opt/mistborn/extra/jitsi-meet.yml down
|
||||
|
||||
ExecStartPre=/sbin/iptables -I DOCKER-USER -i DIFACE -p udp --dport $JVB_PORT -j MISTBORN_LOG_DROP
|
||||
ExecStartPre=/sbin/iptables -I DOCKER-USER -i DIFACE -p tcp --dport $JVB_TCP_PORT -j MISTBORN_LOG_DROP
|
||||
# Start container when unit is started
|
||||
ExecStart=/usr/local/bin/docker-compose -f /opt/mistborn/extra/jitsi-meet.yml up --build
|
||||
# Stop container when unit is stopped
|
||||
ExecStop=/usr/local/bin/docker-compose -f /opt/mistborn/extra/jitsi-meet.yml down
|
||||
# Post stop
|
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p udp --dport $JVB_PORT -j MISTBORN_LOG_DROP
|
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport $JVB_TCP_PORT -j MISTBORN_LOG_DROP
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -17,7 +17,7 @@ ExecStart=/usr/local/bin/docker-compose -f /opt/mistborn/extra/rocketchat.yml up
|
||||
# Stop container when unit is stopped
|
||||
ExecStop=/usr/local/bin/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
|
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 3001 -j MISTBORN_LOG_DROP
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
@@ -18,8 +18,8 @@ ExecStart=/usr/local/bin/docker-compose -f /opt/mistborn/extra/syncthing.yml up
|
||||
# Stop container when unit is stopped
|
||||
ExecStop=/usr/local/bin/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
|
||||
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=multi-user.target
|
||||
|
||||
@@ -17,7 +17,7 @@ ExecStart=/usr/local/bin/docker-compose -f /opt/mistborn/extra/tor.yml up --buil
|
||||
# Stop container when unit is stopped
|
||||
ExecStop=/usr/local/bin/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
|
||||
ExecStopPost=-/sbin/iptables -D DOCKER-USER -i DIFACE -p tcp --dport 9150 -j MISTBORN_LOG_DROP
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Cockpit
|
||||
echo "Installing Cockpit"
|
||||
figlet "Mistborn: Installing Cockpit"
|
||||
if [ "$DISTRO" == "ubuntu" ]; then
|
||||
echo "Ubuntu backports enabled by default"
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Docker
|
||||
figlet "Mistborn: Installing Docker"
|
||||
|
||||
# dependencies
|
||||
echo "Installing Docker dependencies"
|
||||
sudo apt-get install -y \
|
||||
@@ -61,7 +63,7 @@ echo "Installing Docker Compose"
|
||||
#elif [ "$DISTRO" == "raspbian" ]; then
|
||||
# Install required packages
|
||||
sudo apt update
|
||||
sudo apt install -y python python3-pip libffi-dev python-backports.ssl-match-hostname
|
||||
sudo apt install -y python python3-pip python3-setuptools libffi-dev python-backports.ssl-match-hostname python3-dev libssl-dev
|
||||
|
||||
# Install Docker Compose from pip
|
||||
# This might take a while
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
figlet "Mistborn: Container Credentials"
|
||||
|
||||
# generate production .env file for Django
|
||||
mkdir -p ./.envs/.production
|
||||
DJANGO_PROD_FILE="./.envs/.production/.django"
|
||||
@@ -62,3 +64,8 @@ echo "JWT_SECRET=$JWT_SECRET" >> $ONLYOFFICE_PROD_FILE
|
||||
BITWARDEN_PROD_FILE="./.envs/.production/.bitwarden"
|
||||
echo "WEBSOCKET_ENABLED=true" > $BITWARDEN_PROD_FILE
|
||||
echo "SIGNUPS_ALLOWED=true" >> $BITWARDEN_PROD_FILE
|
||||
|
||||
# JITSI
|
||||
JITSI_PROD_FILE="./.envs/.production/.jitsi"
|
||||
cp ./scripts/conf/jitsi.env $JITSI_PROD_FILE
|
||||
mkdir -p ./.envs/.production/.jitsi-cfg/{web/letsencrypt,transcripts,prosody,jicofo,jvb}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
set -e
|
||||
|
||||
figlet "Mistborn: Configuring Firewall"
|
||||
|
||||
echo "stop iptables wrappers"
|
||||
if [ "$DISTRO" == "ubuntu" ]; then
|
||||
@@ -11,10 +12,10 @@ if [ "$DISTRO" == "ubuntu" ]; then
|
||||
fi
|
||||
|
||||
# default interface
|
||||
iface=$(ip -o -4 route show to default | egrep -o 'dev [^ ]*' | awk '{print $2}')
|
||||
iface=$(ip -o -4 route show to default | egrep -o 'dev [^ ]*' | awk 'NR==1{print $2}')
|
||||
|
||||
# real public interface
|
||||
riface=$(ip -o -4 route get 1.1.1.1 | egrep -o 'dev [^ ]*' | awk '{print $2}')
|
||||
riface=$(ip -o -4 route get 1.1.1.1 | egrep -o 'dev [^ ]*' | awk 'NR==1{print $2}')
|
||||
|
||||
# resetting iptables
|
||||
sudo iptables -F
|
||||
@@ -22,12 +23,13 @@ sudo iptables -t nat -F
|
||||
sudo iptables -X MISTBORN_LOG_DROP 2>/dev/null || true
|
||||
sudo iptables -X MISTBORN_WIREGUARD_INPUT 2>/dev/null || true
|
||||
sudo iptables -X MISTBORN_WIREGUARD_FORWARD 2>/dev/null || true
|
||||
sudo iptables -X MISTBORN_WIREGUARD_OUTPUT 2>/dev/null || true
|
||||
sudo iptables -X MISTBORN_DOCKER_OUTPUT 2>/dev/null || true
|
||||
sudo iptables -X MISTBORN_DOCKER_INPUT 2>/dev/null || true
|
||||
|
||||
# iptables: log and drop chain
|
||||
sudo iptables -N MISTBORN_LOG_DROP
|
||||
sudo iptables -A MISTBORN_LOG_DROP -m limit --limit 2/min -j LOG --log-prefix "[IPTables-Dropped]: " --log-level 4
|
||||
sudo iptables -A MISTBORN_LOG_DROP -m limit --limit 6/min -j LOG --log-prefix "[IPTables-Dropped]: " --log-level 4
|
||||
sudo iptables -A MISTBORN_LOG_DROP -j DROP
|
||||
|
||||
# wireguard rules chains
|
||||
@@ -50,7 +52,7 @@ fi
|
||||
# docker rules
|
||||
sudo iptables -N MISTBORN_DOCKER_INPUT
|
||||
sudo iptables -A MISTBORN_DOCKER_INPUT -i br-+ -j ACCEPT
|
||||
#sudo iptables -A INPUT ! -i $iface -s 172.16.0.0/12 -j ACCEPT
|
||||
#sudo iptables -A MISTBORN_DOCKER_INPUT -i docker0 -j ACCEPT
|
||||
|
||||
# last rules
|
||||
sudo iptables -A INPUT -j MISTBORN_DOCKER_INPUT
|
||||
@@ -91,10 +93,6 @@ sudo ip6tables -P INPUT DROP
|
||||
sudo ip6tables -P FORWARD DROP
|
||||
sudo ip6tables -P OUTPUT ACCEPT
|
||||
|
||||
|
||||
# initial load update package list
|
||||
sudo apt-get update
|
||||
|
||||
# iptables-persistent
|
||||
if [ ! "$(dpkg-query -l iptables-persistent)" ]; then
|
||||
echo "Installing iptables-persistent"
|
||||
|
||||
Executable
+21
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
KEY_FOLDER="./tls/"
|
||||
CRT_FILE="cert.crt"
|
||||
KEY_FILE="cert.key"
|
||||
|
||||
CRT_PATH="$KEY_FOLDER/$CRT_FILE"
|
||||
KEY_PATH="$KEY_FOLDER/$KEY_FILE"
|
||||
|
||||
# ensure openssl installed
|
||||
sudo apt-get install -y openssl
|
||||
|
||||
# make folder
|
||||
mkdir -p $KEY_FOLDER
|
||||
|
||||
# generate crt and key
|
||||
openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:4096 -keyout $KEY_PATH -out $CRT_PATH -subj "/C=US/ST=New York/L=New York/O=cyber5k/OU=mistborn/CN=*.mistborn/emailAddress=mistborn@localhost"
|
||||
|
||||
# set permissions
|
||||
chmod 644 $CRT_PATH
|
||||
chmod 600 $KEY_PATH
|
||||
@@ -10,5 +10,5 @@ if [ "$UNAME" == "linux" ]; then
|
||||
DISTRO=$(cat /etc/os-release | awk -F= '/^ID=/{print $2}')
|
||||
fi
|
||||
|
||||
echo "UNAME: $UNAME"
|
||||
echo "DISTRO: $DISTRO"
|
||||
figlet "UNAME: $UNAME"
|
||||
figlet "DISTRO: $DISTRO"
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
figlet "Mistborn: Installing Wireguard"
|
||||
|
||||
# Wireguard
|
||||
if [ "$DISTRO" == "raspbian" ]; then
|
||||
echo "Adding Wireguard repo keys"
|
||||
|
||||
+3
-3
@@ -2,7 +2,7 @@
|
||||
|
||||
set -e
|
||||
|
||||
docker-compose -f /opt/mistborn/base.yml pull
|
||||
docker-compose -f /opt/mistborn/base.yml build
|
||||
sudo docker-compose -f /opt/mistborn/base.yml pull
|
||||
sudo docker-compose -f /opt/mistborn/base.yml build
|
||||
|
||||
systemctl restart Mistborn-base
|
||||
sudo systemctl restart Mistborn-base
|
||||
|
||||
Reference in New Issue
Block a user