You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
199 lines
4.7 KiB
199 lines
4.7 KiB
#!/usr/bin/bash
|
|
|
|
set -e
|
|
|
|
source ./custom.env
|
|
|
|
###########################
|
|
### Configs - Automatic ###
|
|
###########################
|
|
|
|
gid_of() {
|
|
getent group "$1" | cut -d':' -f3
|
|
}
|
|
|
|
# samba/wsdd service
|
|
SMB_GID_PRIVATE=$(stat -c '%g' "${SMB_PATH_PRIVATE}")
|
|
SMB_GID_PROTECT=$(stat -c '%g' "${SMB_PATH_PROTECT}")
|
|
SMB_GID_PUBLIC=$(stat -c '%g' "${SMB_PATH_PUBLIC}")
|
|
|
|
SMB_UID_GUEST=$(stat -c '%u' "${SMB_PATH_PUBLIC}")
|
|
SMB_UID_ADMIN=$(id -u ${SMB_UNAME_ADMIN})
|
|
|
|
# media(jellyfin) service
|
|
MEDIA_UGID=$(stat -c '%u:%g' "${MEDIA_PATH}")
|
|
MEDIA_GID_RENDER=$(stat -c '%g' /dev/dri/renderD128)
|
|
|
|
cat <<-EOF >docker-compose.yml
|
|
version: '3'
|
|
|
|
services:
|
|
proxy:
|
|
image: "sigkill.top/proxy"
|
|
build:
|
|
context: ./proxy
|
|
args:
|
|
- PYTHON_VERSION=${ARGS_PYTHON_VERSION}
|
|
- ALPINE_VERSION=${ARGS_ALPINE_VERSION}
|
|
- APK_MIRROR=${ARGS_APK_MIRROR}
|
|
environment:
|
|
- NMP_ENDPOINT=${PROXY_NMP_ENDPOINT}
|
|
- NMP_TOKEN=${PROXY_NMP_TOKEN}
|
|
networks:
|
|
- localnet
|
|
ports:
|
|
- ${PROXY_SOCKS_PORT}:10086
|
|
- ${PROXY_HTTP_PORT}:10080
|
|
restart: unless-stopped
|
|
|
|
samba:
|
|
image: "sigkill.top/samba"
|
|
build:
|
|
context: ./samba
|
|
args:
|
|
- ALPINE_VERSION=${ARGS_ALPINE_VERSION}
|
|
- APK_MIRROR=${ARGS_APK_MIRROR}
|
|
environment:
|
|
- GID_PRIVATE=${SMB_GID_PRIVATE}
|
|
- GID_PROTECT=${SMB_GID_PROTECT}
|
|
- GID_PUBLIC=${SMB_GID_PUBLIC}
|
|
- UID_GUEST=${SMB_UID_GUEST}
|
|
- UID_ADMIN=${SMB_UID_ADMIN}
|
|
- ADMIN_NAME=${SMB_UNAME_ADMIN}
|
|
- ADMIN_PASSWD=${SMB_ADMIN_PASSWD}
|
|
networks:
|
|
- localnet
|
|
ports:
|
|
- 137:137/udp
|
|
- 138:138/udp
|
|
- 139:139/tcp
|
|
- 445:445/tcp
|
|
volumes:
|
|
- ${SMB_PATH_PRIVATE}:/mnt/share/private
|
|
- ${SMB_PATH_PROTECT}:/mnt/share/protect
|
|
- ${SMB_PATH_PUBLIC}:/mnt/share/public
|
|
- ${SMB_PATH_TMP}:/mnt/share/tmp
|
|
restart: unless-stopped
|
|
|
|
wsdd2:
|
|
image: "sigkill.top/wsdd2"
|
|
build:
|
|
context: ./wsdd2
|
|
args:
|
|
- ALPINE_VERSION=${ARGS_ALPINE_VERSION}
|
|
- APK_MIRROR=${ARGS_APK_MIRROR}
|
|
environment:
|
|
- HOSTNAME=$(hostname)
|
|
- WORKGROUP=${SMB_WORKGROUP:-WORKGROUP}
|
|
network_mode: host
|
|
restart: unless-stopped
|
|
|
|
nginx:
|
|
image: "sigkill.top/nginx"
|
|
build:
|
|
context: ./nginx
|
|
args:
|
|
- NGINX_VERSION=${ARGS_NGINX_VERSION}
|
|
networks:
|
|
- localnet
|
|
ports:
|
|
- 80:80
|
|
volumes:
|
|
- etc_nginx:/etc/nginx
|
|
- www_data:/srv/http
|
|
- motd_data:/srv/http/motd:ro
|
|
- /srv/share/protect:/srv/http/files/protect:ro
|
|
- /srv/share/public:/srv/http/files/public:ro
|
|
- /srv/share/tmp:/srv/http/files/tmp:ro
|
|
restart: unless-stopped
|
|
|
|
php-fpm:
|
|
image: "php:${ARGS_PHP_VERSION}-fpm-alpine${ARGS_ALPINE_VERSION}"
|
|
networks:
|
|
- localnet
|
|
volumes:
|
|
- www_data:/srv/http
|
|
- /srv/share/protect:/srv/http/files/protect:ro
|
|
- /srv/share/public:/srv/http/files/public:ro
|
|
- /srv/share/tmp:/srv/http/files/tmp:ro
|
|
restart: unless-stopped
|
|
|
|
jellyfin:
|
|
image: "sigkill.top/jellyfin"
|
|
build:
|
|
context: ./jellyfin
|
|
args:
|
|
- JELLYFIN_VERSION=${ARGS_JELLYFIN_VERSION}
|
|
user: ${MEDIA_UGID}
|
|
group_add:
|
|
- "$MEDIA_GID_RENDER"$( \
|
|
for GNAME in "${MEDIA_GNAME_EXTRA[@]}"; do
|
|
echo
|
|
echo " - \"$(gid_of $GNAME)\""
|
|
done)$( \
|
|
if [ -n "${MEDIA_PUBLISHED_URL}" ]; then
|
|
echo
|
|
echo " environment:"
|
|
echo " - JELLYFIN_PublishedServerUrl=${MEDIA_PUBLISHED_URL}"
|
|
fi)
|
|
network_mode: host
|
|
volumes:
|
|
- jellyfin_config:/config
|
|
- jellyfin_cache:/cache
|
|
- ${MEDIA_PATH}:/media
|
|
devices:
|
|
- /dev/dri:/dev/dri
|
|
restart: unless-stopped
|
|
|
|
motd:
|
|
image: "sigkill.top/motd"
|
|
build:
|
|
context: ./motd
|
|
args:
|
|
- ALPINE_VERSION=${ARGS_ALPINE_VERSION}
|
|
- APK_MIRROR=${ARGS_APK_MIRROR}
|
|
environment:
|
|
- TZ=${TZ:-Asia/Shanghai}
|
|
networks:
|
|
- localnet
|
|
volumes:
|
|
- motd_data:/mnt/motd
|
|
restart: unless-stopped
|
|
|
|
$(for CONF in ${ARIA2_CONFS[@]}; do
|
|
SRV_NAME="aria2-$(echo $CONF | cut -d':' -f1)"
|
|
SRV_PATH="$(echo $CONF | cut -d':' -f2)"
|
|
SRV_UGID=$(stat -c '%u:%g' "${SRV_PATH}")
|
|
cat <<-EOF_ARIA2
|
|
$SRV_NAME:
|
|
image: "sigkill.top/aria2"
|
|
build:
|
|
context: ./aria2
|
|
args:
|
|
- ALPINE_VERSION=${ARGS_ALPINE_VERSION}
|
|
- APK_MIRROR=${ARGS_APK_MIRROR}
|
|
user: ${SRV_UGID}
|
|
networks:
|
|
- localnet
|
|
volumes:
|
|
- ${SRV_PATH}:/mnt/downloads
|
|
restart: unless-stopped
|
|
EOF_ARIA2
|
|
done)
|
|
|
|
networks:
|
|
localnet:
|
|
driver: bridge
|
|
attachable: false
|
|
ipam:
|
|
driver: default
|
|
config:
|
|
- subnet: "172.16.10.0/24"
|
|
|
|
volumes:
|
|
etc_nginx:
|
|
www_data:
|
|
jellyfin_config:
|
|
jellyfin_cache:
|
|
motd_data:
|
|
EOF
|
|
|