Sfoglia il codice sorgente

Add Gogs module

multi_domain
ßingen 7 anni fa
parent
commit
f1095606f1
9 ha cambiato i file con 91 aggiunte e 12 eliminazioni
  1. +3
    -0
      .gitmodules
  2. +35
    -1
      docker-compose.yml
  3. +15
    -0
      gogs.env.template
  4. +1
    -0
      haproxy.env.template
  5. +1
    -0
      images/rpi-gogs
  6. +1
    -1
      mail.env.template
  7. +2
    -2
      nextcloud.env.template
  8. +4
    -0
      openldap.env.template
  9. +29
    -8
      setup.sh

+ 3
- 0
.gitmodules Vedi File

[submodule "images/rpi-sftp"] [submodule "images/rpi-sftp"]
path = images/rpi-sftp path = images/rpi-sftp
url = git@github.com:bingen/rpi-sftp.git url = git@github.com:bingen/rpi-sftp.git
[submodule "images/rpi-gogs"]
path = images/rpi-gogs
url = git@github.com:bingen/rpi-gogs.git

+ 35
- 1
docker-compose.yml Vedi File

target: nextcloud_pwd target: nextcloud_pwd
uid: '999' uid: '999'
mode: 0440 mode: 0440
- source: ldap_gogs_pwd
target: gogs_pwd
uid: '999'
mode: 0440
# container_name: openldap # container_name: openldap
tty: true tty: true
stdin_open: true stdin_open: true
depends_on: depends_on:
# For DNS resolution # For DNS resolution
- nextcloud - nextcloud
- gogs
env_file: env_file:
- haproxy.env - haproxy.env
networks: networks:
env_file: env_file:
- paperless.env - paperless.env


#gogs:
gogs:
build:
context: ./images/rpi-gogs/
image: bingen/rpi-gogs
depends_on:
- db
env_file:
- gogs.env
ports:
- "2080:2080"
- "2443:2443"
- "2022:22"
volumes:
- ${GOGS_DATA_VOLUME_PATH}:/data
secrets:
- source: db_pwd
target: mysql_pwd
mode: 0440
- source: ldap_gogs_pwd
target: ldap_pwd
uid: '999'
mode: 0440
- source: gogs_admin_pwd
target: admin_pwd
uid: '999'
mode: 0440


#wordpress: #wordpress:


external: true external: true
ldap_nextcloud_pwd: ldap_nextcloud_pwd:
external: true external: true
ldap_gogs_pwd:
external: true
nextcloud_admin_pwd: nextcloud_admin_pwd:
external: true external: true
nextcloud_salt: nextcloud_salt:
external: true external: true
nextcloud_secret: nextcloud_secret:
external: true external: true
gogs_admin_pwd:
external: true
paperless_webserver_pwd: paperless_webserver_pwd:
external: true external: true
paperless_passphrase: paperless_passphrase:

+ 15
- 0
gogs.env.template Vedi File

GOGS_DOMAIN=gogs.${DOMAIN}
GOGS_ADMIN_PWD_FILE=/run/secrets/admin_pwd
ADMIN_EMAIL=${ADMIN_EMAIL}

# DB
MYSQL_ROOT_PWD_FILE=/run/secrets/mysql_pwd
DB_HOST=db
GOGS_DB_NAME=git
GOGS_DB_USER=gogs

# LDAP
LDAP_SERVER_HOST=openldap
LDAP_BIND_DN=uid=${LDAP_GOGS_UID},ou=services,dc=${ORGANIZATION},dc=${EXTENSION}
LDAP_BIND_PWD_FILE=/run/secrets/ldap_pwd
LDAP_SEARCH_BASE=ou=people,dc=${ORGANIZATION},dc=${EXTENSION}

+ 1
- 0
haproxy.env.template Vedi File

NEXTCLOUD_URL=nextcloud.${DOMAIN} NEXTCLOUD_URL=nextcloud.${DOMAIN}
GOGS_URL=gogs.${DOMAIN}
ZONEMINDER_URL=zoneminder.${DOMAIN} ZONEMINDER_URL=zoneminder.${DOMAIN}

+ 1
- 0
images/rpi-gogs

Subproject commit bb54527dfa419758efcdb0fcb270f1f87b6d7c58

+ 1
- 1
mail.env.template Vedi File

DOMAIN=${DOMAIN} DOMAIN=${DOMAIN}
LDAP_SERVER_HOST=openldap LDAP_SERVER_HOST=openldap
LDAP_BIND_DN=uid=${MAIL_LDAP_UID},ou=services,dc=${ORGANIZATION},dc=${EXTENSION}
LDAP_BIND_DN=uid=${LDAP_MAIL_UID},ou=services,dc=${ORGANIZATION},dc=${EXTENSION}
LDAP_BIND_PWD_FILE=/run/secrets/ldap_pwd LDAP_BIND_PWD_FILE=/run/secrets/ldap_pwd
LDAP_SEARCH_BASE=ou=people,dc=${ORGANIZATION},dc=${EXTENSION} LDAP_SEARCH_BASE=ou=people,dc=${ORGANIZATION},dc=${EXTENSION}
VIRTUAL_DOMAINS=() VIRTUAL_DOMAINS=()

+ 2
- 2
nextcloud.env.template Vedi File

DATA_CHOWN=1 DATA_CHOWN=1
# LDAP # LDAP
LDAP_SERVER_HOST=openldap LDAP_SERVER_HOST=openldap
LDAP_BIND_DN=uid=${NEXTCLOUD_LDAP_UID},ou=services,dc=${ORGANIZATION},dc=${EXTENSION}
LDAP_BIND_DN=uid=${LDAP_NEXTCLOUD_UID},ou=services,dc=${ORGANIZATION},dc=${EXTENSION}
LDAP_BIND_PWD_FILE=/run/secrets/ldap_pwd LDAP_BIND_PWD_FILE=/run/secrets/ldap_pwd
#LDAP_SEARCH_BASE=ou=people,dc=${ORGANIZATION},dc=${EXTENSION} #LDAP_SEARCH_BASE=ou=people,dc=${ORGANIZATION},dc=${EXTENSION}
LDAP_SEARCH_BASE=dc=${ORGANIZATION},dc=${EXTENSION} LDAP_SEARCH_BASE=dc=${ORGANIZATION},dc=${EXTENSION}
NEXTCLOUD_DB_NAME=nextcloud NEXTCLOUD_DB_NAME=nextcloud
NEXTCLOUD_DB_USER=nextcloud NEXTCLOUD_DB_USER=nextcloud
# Let's Encrypt # Let's Encrypt
LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
ADMIN_EMAIL=${ADMIN_EMAIL}

+ 4
- 0
openldap.env.template Vedi File

LDAP_ORGANIZATION=${ORGANIZATION} LDAP_ORGANIZATION=${ORGANIZATION}
LDAP_EXTENSION=${EXTENSION} LDAP_EXTENSION=${EXTENSION}
LDAP_ADMIN_PWD_FILE=/run/secrets/admin_pwd LDAP_ADMIN_PWD_FILE=/run/secrets/admin_pwd
LDAP_MAIL_UID=${LDAP_MAIL_UID}
LDAP_MAIL_PWD_FILE=/run/secrets/mail_pwd LDAP_MAIL_PWD_FILE=/run/secrets/mail_pwd
LDAP_NEXTCLOUD_UID=${LDAP_NEXTCLOUD_UID}
LDAP_NEXTCLOUD_PWD_FILE=/run/secrets/nextcloud_pwd LDAP_NEXTCLOUD_PWD_FILE=/run/secrets/nextcloud_pwd
LDAP_GOGS_UID=${LDAP_GOGS_UID}
LDAP_GOGS_PWD_FILE=/run/secrets/gogs_pwd
DEBUG_LEVEL=0 DEBUG_LEVEL=0
#BKP_FILE=/tmp/ldap_bkp.ldif #BKP_FILE=/tmp/ldap_bkp.ldif
LDAP_BACKEND="hdb" LDAP_BACKEND="hdb"

+ 29
- 8
setup.sh Vedi File

#PWD_GEN='openssl rand -base64 20' #PWD_GEN='openssl rand -base64 20'
DEFAULT_LDAP_MAIL_UID='mail' DEFAULT_LDAP_MAIL_UID='mail'
DEFAULT_LDAP_NEXTCLOUD_UID='nextcloud' DEFAULT_LDAP_NEXTCLOUD_UID='nextcloud'
DEFAULT_LDAP_GOGS_UID='gogs'


read -p "Main domain: " domain read -p "Main domain: " domain
while [[ ! $domain =~ ^.*\.[a-z]{2,}$ ]]; do while [[ ! $domain =~ ^.*\.[a-z]{2,}$ ]]; do
ldap_nextcloud_pwd=`eval "$PWD_GEN"` ldap_nextcloud_pwd=`eval "$PWD_GEN"`
fi fi


read -p "LDAP Gogs Bind DN uid ($DEFAULT_LDAP_GOGS_UID): " ldap_gogs_uid
if [[ ${#ldap_gogs_uid} -eq 0 ]]; then
ldap_gogs_uid=$DEFAULT_LDAP_GOGS_UID
fi

read -p "LDAP Gogs Bind DN Pwd (a random one will be generated if empty): " ldap_gogs_pwd
if [[ ${#ldap_gogs_pwd} -eq 0 ]]; then
ldap_gogs_pwd=`eval "$PWD_GEN"`
fi

read -p "Nextcloud Admin User Pwd (a random one will be generated if empty): " nextcloud_admin_pwd read -p "Nextcloud Admin User Pwd (a random one will be generated if empty): " nextcloud_admin_pwd
if [[ ${#nextcloud_admin_pwd} -eq 0 ]]; then if [[ ${#nextcloud_admin_pwd} -eq 0 ]]; then
nextcloud_admin_pwd=`eval "$PWD_GEN"` nextcloud_admin_pwd=`eval "$PWD_GEN"`
fi fi


read -p "E-mail for Let's Encrypt account (admin@${domain}): " letsencrypt_email
if [[ ${#letsencrypt_email} -eq 0 ]]; then
letsencrypt_email=admin@${domain}
read -p "Gogs Admin User Pwd (a random one will be generated if empty): " gogs_admin_pwd
if [[ ${#gogs_admin_pwd} -eq 0 ]]; then
gogs_admin_pwd=`eval "$PWD_GEN"`
fi

read -p "Admin E-mail, used for Let's Encrypt account and more (admin@${domain}): " admin_email
if [[ ${#admin_email} -eq 0 ]]; then
admin_email=admin@${domain}
fi fi


echo "If you have a password salt and a secret from a previous installation, provide them here." echo "If you have a password salt and a secret from a previous installation, provide them here."
echo Your Volumes path is: $volumes echo Your Volumes path is: $volumes
echo Your LDAP Mail Bind DN Uid is: $ldap_mail_uid echo Your LDAP Mail Bind DN Uid is: $ldap_mail_uid
echo Your LDAP Nextcloud Bind DN Uid is: $ldap_nextcloud_uid echo Your LDAP Nextcloud Bind DN Uid is: $ldap_nextcloud_uid
echo Your Let\'s Encrypt account e-mail: $letsencrypt_email
echo Your LDAP Gogs Bind DN Uid is: $ldap_gogs_uid
echo Your Admin email. Let\'s Encrypt...: $admin_email
echo Your Paperless Web Server User: $paperless_webserver_user echo Your Paperless Web Server User: $paperless_webserver_user
echo Your SFTP User: $paperless_ftp_user echo Your SFTP User: $paperless_ftp_user


echo $ldap_pwd | docker secret create ldap_pwd - echo $ldap_pwd | docker secret create ldap_pwd -
echo $ldap_mail_pwd | docker secret create ldap_mail_pwd - echo $ldap_mail_pwd | docker secret create ldap_mail_pwd -
echo $ldap_nextcloud_pwd | docker secret create ldap_nextcloud_pwd - echo $ldap_nextcloud_pwd | docker secret create ldap_nextcloud_pwd -
echo $ldap_gogs_pwd | docker secret create ldap_gogs_pwd -
echo $nextcloud_admin_pwd | docker secret create nextcloud_admin_pwd - echo $nextcloud_admin_pwd | docker secret create nextcloud_admin_pwd -
echo $nextcloud_salt | docker secret create nextcloud_salt - echo $nextcloud_salt | docker secret create nextcloud_salt -
echo $nextcloud_secret | docker secret create nextcloud_secret - echo $nextcloud_secret | docker secret create nextcloud_secret -
echo $gogs_admin_pwd | docker secret create gogs_admin_pwd -
echo $paperless_webserver_pwd | docker secret create paperless_webserver_pwd - echo $paperless_webserver_pwd | docker secret create paperless_webserver_pwd -
echo $paperless_passphrase | docker secret create paperless_passphrase - echo $paperless_passphrase | docker secret create paperless_passphrase -
echo $paperless_ftp_pwd | docker secret create paperless_ftp_pwd - echo $paperless_ftp_pwd | docker secret create paperless_ftp_pwd -
cp haproxy.env.template haproxy.env cp haproxy.env.template haproxy.env
cp paperless.env.template paperless.env cp paperless.env.template paperless.env
cp sftp.env.template sftp.env cp sftp.env.template sftp.env
cp gogs.env.template gogs.env


for i in `ls *.env .env`; do for i in `ls *.env .env`; do
sed -i "s/\${DOMAIN}/${domain}/g" $i sed -i "s/\${DOMAIN}/${domain}/g" $i
sed -i "s/\${ORGANIZATION}/${org}/g" $i sed -i "s/\${ORGANIZATION}/${org}/g" $i
sed -i "s/\${EXTENSION}/${ext}/g" $i sed -i "s/\${EXTENSION}/${ext}/g" $i
sed -i "s/\${VOLUMES_PATH}/${volumes//\//\\/}/g" $i sed -i "s/\${VOLUMES_PATH}/${volumes//\//\\/}/g" $i
sed -i "s/\${MAIL_LDAP_UID}/${ldap_mail_uid}/g" $i
sed -i "s/\${NEXTCLOUD_LDAP_UID}/${ldap_nextcloud_uid}/g" $i
sed -i "s/\${LETSENCRYPT_EMAIL}/${letsencrypt_email}/g" $i
sed -i "s/\${LDAP_MAIL_UID}/${ldap_mail_uid}/g" $i
sed -i "s/\${LDAP_NEXTCLOUD_UID}/${ldap_nextcloud_uid}/g" $i
sed -i "s/\${LDAP_GOGS_UID}/${ldap_gogs_uid}/g" $i
sed -i "s/\${ADMIN_EMAIL}/${admin_email}/g" $i
sed -i "s/\${PAPERLESS_WEBSERVER_USER}/${paperless_webserver_user}/g" $i sed -i "s/\${PAPERLESS_WEBSERVER_USER}/${paperless_webserver_user}/g" $i
sed -i "s/\${PAPERLESS_FTP_USER}/${paperless_ftp_user}/g" $i sed -i "s/\${PAPERLESS_FTP_USER}/${paperless_ftp_user}/g" $i
#sed -i "s/\${}/${}/g" $i #sed -i "s/\${}/${}/g" $i
sudo mkdir -p ${PAPERLESS_CONSUMPTION_VOLUME_PATH} sudo mkdir -p ${PAPERLESS_CONSUMPTION_VOLUME_PATH}
sudo mkdir -p ${PAPERLESS_EXPORT_VOLUME_PATH} sudo mkdir -p ${PAPERLESS_EXPORT_VOLUME_PATH}


echo "Copying gemail confs"
echo "Copying getmail confs"
cp images/rpi-email/getmail/getmailrc-* ${MAIL_DATA_VOLUME_PATH}/getmail/ cp images/rpi-email/getmail/getmailrc-* ${MAIL_DATA_VOLUME_PATH}/getmail/

Loading…
Annulla
Salva