关于unraid
https://post.smzdm.com/p/ag87w953/
https://www.cr173.com/soft/1192848.html
https://zhuanlan.zhihu.com/p/117586879
https://post.smzdm.com/p/a6lr36rg/
https://www.dark32.com/index.php/archives/30/
设置UNRAID的DOCKER APPS市场
- UNRAID也有一个APP市场,设置以后,也可以和群晖一样,类似套件中心里面安装一些应用。
UNRAID的APP,其实都是用DOCKER来完成的。
默认的UNRAID,是没有开放这个APP市场的,我们需要设置一下。
点击PLUGINS,输入安装的插件代码,点击安装,安装以后会出现APPS的选项,插件代码:https://raw.githubusercontent.com/Squidly271/community.applications/master/plugins/community.applications.plg
- Unraid中的docker配置文件路径
/boot/config/plugins/dockerMan/templates-user
- 安装docker-compose
docker-compose的安装方式有很多种,下面是python的安装方式。
先打开unraid界面,来到APPS
界面,搜索nerdpack
,找到NerdPack GUI,点击图标安装。
安装完后点击PLUGINS选项,找到Nerd Tools
,点击图标,进入可用软件列表
在NAME下面的输入框输入要安装的软件包,按下回车找到软件包,点击右侧的滑块,使选项由OFF变成ON。
要安装的软件包有libffi
、python3
、python3-pip
和python-setuptools
,我顺手把vim也装上了,个人用的习惯。
选好之后用鼠标滚轮移到页面最下面,点击APPLY按钮,等待安装
[可选]pip加速cat > ~/.pip/pip.conf << EOF [global] trusted-host=mirrors.aliyun.com index-url=http://mirrors.aliyun.com/pypi/simple/ EOF
安装完成后打开UNRAID的终端,输入命令开始安装docker-compose:
pip3 install docker-compose
安装完成后执行命令,查看版本:
docker-compose version
- 安装前的其他准备
docker加速,docker默认源速度很蛋疼,需要更新一个国内源。
创建或修改 /etc/docker/daemon.json
修改内容如下:{ "registry-mirrors": [ "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn" ] }
保存后,在unraid的SETTINGS界面将docker的Enable设置为No,保存,再将Enable设置为Yes启动,使配置生效
- 下载docker-lnmp
直接clone:git clone https://github.com/gitlexin/docker-lnmp.git git clone git@github.com:gitlexin/docker-lnmp.git chmod -R 777 ./docker-lnmp/logs cd docker-lnmp/services
拷贝.example.env为.env,根据自己的情况修改其中的配置
- docker-compose构建项目
进行docker-compose.yml所在文件夹: 执行命令:docker-compose up
如果没问题,下次启动时可以以守护模式启用,所有容器将后台运行:
docker-compose up -d
使用 docker-compose 基本上就这么简单,Docker 就跑起来了,用 stop,start 关闭开启容器服务。
更多的是在于编写 dockerfile 和 docker-compose.yml 文件。
可以这样关闭容器并删除服务:docker-compose down
- Demo站点搭建
进入app目录将你的项目文件拷贝到其中(项目文件会被映射到容器中的/data/www目录下)
域名解析
找到 services/nginx/conf.d 下的 example.conf 里修改配置server_name example.com; root /data/www/example; access_log /var/log/nginx/example.log;
注意重启一下nginx容器才能生效
常用命令# 开启所有容器 docker-compose up -d # 关闭所有容器 docker-compose down # 重启某个容器 docker-compose restart nginx|php-fpm56等service名 # 进入容器 docker exec -it 容器id /bin/bash
设置unraid网络
在启动U盘的config目录下编辑network.cfg
# Generated network settings
USE_DHCP="no"
IPADDR="192.168.10.9"
NETMASK="255.255.255.0"
GATEWAY="192.168.10.2"
DNS_SERVER1="192.168.10.2"
BONDING="yes"
BRIDGING="yes"
多网口可以用如下配置
# Generated settings:
IFNAME[0]="br0"
DHCP_KEEPRESOLV="yes"
DNS_SERVER1="114.114.114.114"
DHCP6_KEEPRESOLV="no"
BRNAME[0]="br0"
BRNICS[0]="eth0"
BRSTP[0]="no"
BRFD[0]="0"
PROTOCOL[0]="ipv4"
USE_DHCP[0]="no"
IPADDR[0]="192.168.7.251"
NETMASK[0]="255.255.255.0"
GATEWAY[0]="192.168.7.254"
USE_DHCP6[0]="yes"
IFNAME[1]="br1"
BRNAME[1]="br1"
BRNICS[1]="eth1"
BRSTP[1]="no"
BRFD[1]="0"
PROTOCOL[1]="ipv4"
IFNAME[2]="br2"
BRNAME[2]="br2"
BRNICS[2]="eth2"
BRSTP[2]="no"
BRFD[2]="0"
PROTOCOL[2]="ipv4"
IFNAME[3]="br3"
BRNAME[3]="br3"
BRSTP[3]="no"
BRFD[3]="0"
BRNICS[3]="eth3"
PROTOCOL[3]="ipv4"
SYSNICS="4"
常用docker容器
https://github.com/webdevops/Dockerfile
docker run -itd --restart=always --net='macnet' --ip='192.168.10.23' -e "CONTAINER_TIMEZONE=Asia/Shanghai" -e "GITUSER=gituser" -e "GITPASSWORD=gitpassword" -v /mnt/user/prjs:/var/lib/git --name gitweb fraoustin/gitweb
docker run -d \
--name=mariadb \
-e PUID=1000 \
-e PGID=1000 \
-e MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD \
-e TZ=Europe/London \
-e MYSQL_DATABASE=USER_DB_NAME `#optional` \
-e MYSQL_USER=MYSQL_USER `#optional` \
-e MYSQL_PASSWORD=DATABASE_PASSWORD `#optional` \
-e REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql `#optional` \
-p 3306:3306 \
-v path_to_data:/config \
--restart unless-stopped \
lscr.io/linuxserver/mariadb
docker run -d --restart=always --name='mariadb' --net='bridge' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -e 'PUID'='99' -e 'PGID'='100' -e 'MYSQL_ROOT_PASSWORD'='0' -p '3306:3306/tcp' -v '/mnt/user/appdata/mariadb':'/config':'rw' 'linuxserver/mariadb'
docker run --name ifile \
--restart=always \
--net='macnet' \
--ip='192.168.10.20' \
-e TZ="Asia/Shanghai" \
-v /mnt/user/appdata/ifile/conf:/ifile/conf \
-v /mnt/user/www/ifile/files:/ifile/files \
-v /mnt/user/appdata/ifile/data:/ifile/data \
-v /mnt/user/appdata/ifile/assets:/ifile/assets \
-v /mnt/user/appdata/ifile/tmp:/ifile/tmp \
-v /mnt/user/appdata/ifile/thumb:/ifile/thumb \
-v /mnt/user/appdata/ifile/logs:/ifile/logs \
-d lgs821/ifile
docker run -it -d \
--name memos \
--publish 5230:5230 \
--volume /mnt/user/appdata/memos/:/var/opt/memos \
neosmemo/memos:latest \
--mode prod \
--port 5230
docker run -itd \
--name easyimage \
-p 8080:80 \
-e TZ=Asia/Shanghai \
-e PUID=1000 \
-e PGID=1000 \
-v /mnt/user/appdata/easyimage/config:/app/web/config \
-v /mnt/user/appdata/www/easyimage/i:/app/web/i \
ddsderek/easyimage:latest
docker run -d --name='binhex-nginx' --net='host' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -e 'TCP_PORT_8080'='8080' -e 'TCP_PORT_8443'='8443' -e 'UMASK'='000' -e 'PUID'='99' -e 'PGID'='100' -v '/mnt/user/appdata/binhex-nginx':'/config':'rw' 'binhex/arch-nginx'
docker run -d --name='Portainer' --net='bridge' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -p '9000:9000/tcp' -v '/mnt/user/appdata/portainer':'/data':'rw' -v '/var/run/docker.sock':'/var/run/docker.sock':'rw' 'portainer/portainer'
#获取root权限运行docker
docker run -d --privileged=true -u 0:0 --restart=always --name='www' --net='bridge' -e TZ="Asia/Shanghai" -p 80:80/tcp -p 443:443/tcp -e 'PUID'='0' -e 'PGID'='0' -v '/mnt/disk0/www':'/app':'rw' -v '/mnt/appdata/nginxphp/nginx.conf':'/etc/nginx/nginx.conf' -v '/mnt/appdata/nginxphp/vhost.conf':'/opt/docker/etc/nginx/vhost.conf' -v '/mnt/appdata/nginxphp/php.webdevops.ini':'/opt/docker/etc/php/php.webdevops.ini' 'nginx-php5.6'
docker run -d --restart=always --name='www' --net='br0' --ip='192.168.10.7' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -e 'TCP_PORT_80'='80' -e 'TCP_PORT_443'='443' -e 'PUID'='99' -e 'PGID'='100' -v '/mnt/user/www':'/app':'rw' -v '/mnt/user/appdata/nginxphp/nginx.conf':'/etc/nginx/nginx.conf' -v '/mnt/user/appdata/nginxphp/vhost.conf':'/opt/docker/etc/nginx/vhost.conf' -v '/mnt/user/appdata/nginxphp/php.webdevops.ini':'/opt/docker/etc/php/php.webdevops.ini' 'webdevops/php-nginx-dev:5.6'
docker run -d --restart=always --name='www8' --net='br0' --ip='192.168.10.15' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -e 'TCP_PORT_80'='80' -e 'TCP_PORT_443'='443' -e 'PUID'='99' -e 'PGID'='100' -v '/mnt/user/www':'/app':'rw' -v '/mnt/user/appdata/nginxphp8/server.conf':'/etc/nginx/conf.d/server.conf' -v '/mnt/user/appdata/nginxphp8/nginx.conf':'/etc/nginx/conf.d/nginx.conf' -v '/mnt/user/appdata/nginxphp8/php-setting.ini':'/etc/php8/conf.d/settings.ini' -v '/mnt/user/appdata/nginxphp8/php-fpm-settings.conf':'/etc/php8/php-fpm.d/server.conf' 'trafex/php-nginx'
//个人图书馆
docker run -d --name=myLibray --net=macnet --ip=192.168.10.13 --dns=114.114.114.114 -v /mnt/user/appdata/calibre/config:/config -v /mnt/user/www/libray:/libray johngong/calibre-web
docker run -d --restart=always <你刚复制的镜像tag> -f <启动参数> --remote_control <远程控制密码>
docker run -d --restart=always --name=frpc --net=macnet --ip=192.168.10.6 --dns=114.114.114.114 -e TZ=Asia/Shanghai natfrp/frpc -f 隧道用户ID:隧道1,隧道2,隧道3
docker run -d --restart=always --name='frpc' --net='bridge' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" natfrp/frpc '-f' '隧道用户ID:隧道1,隧道2,隧道3'
docker network connect --ip 192.168.10.6 br0 frpc
docker run -d --name loganalyzer --restart=always --net='br0' --ip='192.168.10.5' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -v /etc/localtime:/etc/localtime:ro -v /mnt/user/appdata/loganalyzer/run_service.sh:/run_service.sh:ro -e 'TCP_PORT_80'='80' -e 'UDP_PORT_514'='514' -e 'PUID'='99' -e 'PGID'='100' -v /mnt/user/appdata/loganalyzer:/data vsc55/loganalyzer:latest
docker run -d --name='EmbyServer' --net='host' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -e 'TCP_PORT_8096'='8096' -e 'UID'='2' -e 'GID'='2' -e 'GIDLIST'='2' -v '/mnt':'/mnt':'rw' -v '/mnt/user/appdata/EmbyServer':'/config':'rw' --device='/dev/dri' 'emby/embyserver:latest'
#利用插件Config File Editor编辑/boot/config/go设置开机打开核显
modprobe i915 &
##ls /dev/dri
chmod 777 /dev/dri/renderD128
docker run -d --name='FFmpeg-mkvdts2ac3' --net='bridge' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -e 'script'='encode.sh' -e 'parameters'='-map 0;-vcodec copy;-scodec copy;-acodec aac;-b:a 640k' -e 'output_format'='mkv' -e 'mkvdts2ac3_params'='--compress none;-d;-n;-w /output;--new' -v '/mnt/user/appdata/FFmpeg-mkvdts2ac3':'/config':'rw' -v '/mnt/user/www/ffmpegin/':'/watch':'rw' -v '/mnt/user/www/ffmpegout/':'/output':'rw' -v '':'/copy':'rw' --device='/dev/dri' 'snoopy86/ffmpeg'
#-acodec ac3
#'output_format'='mp4'
//docker run -d --name='jellyfin' --net='bridge' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -p '88:8096/tcp' -e 'PUID'='99' -e 'PGID'='100' -e 'UMASK'='002' -v '/mnt/user/appdata/jellyfin':'/config':'rw' -v '/mnt/user/www':'/app' -v '/mnt/user/appdata/fonts':'/usr/share/fonts' --device='/dev/dri' 'hotio/jellyfin:release'
docker run -d --name='binhex-jellyfin' --net='bridge' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -e 'UMASK'='000' -e 'PUID'='99' -e 'PGID'='100' -p '8096:8096/tcp' -v '/mnt/user/www':'/media':'rw' -v '/mnt/user/appdata/binhex-jellyfin':'/config':'rw' --device='/dev/dri' 'binhex/arch-jellyfin'
docker run -d --name='binhex-jellyfin' --net='host' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -e 'TCP_PORT_8096'='8096' -e 'UMASK'='000' -e 'PUID'='99' -e 'PGID'='100' -v '/mnt/user/www':'/media':'rw' -v '/mnt/user/appdata/binhex-jellyfin':'/config':'rw' --device='/dev/dri' 'binhex/arch-jellyfin'
docker run -d --name='aria2webui' --net='br0' --ip='192.168.10.11' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -e 'aria2Secret'='abc@abc' -e 'TCP_PORT_80'='80' -e 'TCP_PORT_6800'='6800' -e 'aria2MaxConcurrentDownloads'='5' -e 'TCP_PORT_6889'='6889' -e 'TCP_PORT_6881'='6881' -e 'aria2LogLevel'='warn' -e 'PUID'='99' -e 'PGID'='100' -e 'aria2ListenPort'='6889' -e 'aria2EnableDht'='true' -e 'aria2DhtListenPort'='6881' -e 'aria2SaveSessionInterval'='10' -e 'aria2BtRequireCrypto'='false' -e 'aria2BtMinCryptoLevel'='plain' -e 'aria2BtSaveMetadata'='false' -e 'aria2BtLoadSavedMetadata'='false' -e 'aria2Continue'='true' -e 'aria2MinSplitSize'='10M' -e 'aria2Split'='5' -e 'aria2MaxConnectionPerServer'='10' -e 'aria2SeedRatio'='1' -e 'aria2SeedTime'='0' -e 'aria2DisableIpv6'='true' -e 'aria2ForceSave'='true' -e 'aria2MaxDownloadLimit'='0' -e 'aria2MaxOverallDownloadLimit'='0' -v '/mnt/user/www/aria2/TDownloads/':'/download':'rw' -v '/mnt/user/appdata/aria2-with-webui/':'/conf':'rw' 'fanningert/aria2-with-webui'
docker run -d --name='aria2webui' -e TZ="Asia/Shanghai" -e 'aria2Secret'='abc@abc' -p 8080:80/tcp -p 6800:6800/tcp -p 6889:6889/tcp -p 6881:6881/tcp -e 'aria2MaxConcurrentDownloads'='5' -e 'aria2LogLevel'='warn' -e 'PUID'='99' -e 'PGID'='100' -e 'aria2ListenPort'='6889' -e 'aria2EnableDht'='true' -e 'aria2DhtListenPort'='6881' -e 'aria2SaveSessionInterval'='10' -e 'aria2BtRequireCrypto'='false' -e 'aria2BtMinCryptoLevel'='plain' -e 'aria2BtSaveMetadata'='false' -e 'aria2BtLoadSavedMetadata'='false' -e 'aria2Continue'='true' -e 'aria2MinSplitSize'='10M' -e 'aria2Split'='5' -e 'aria2MaxConnectionPerServer'='10' -e 'aria2SeedRatio'='1' -e 'aria2SeedTime'='0' -e 'aria2DisableIpv6'='true' -e 'aria2ForceSave'='true' -e 'aria2MaxDownloadLimit'='0' -e 'aria2MaxOverallDownloadLimit'='0' -v '/mnt/www/aria2/TDownloads/':'/download':'rw' -v '/mnt/appdata/aria2-with-webui/':'/conf':'rw' 'fanningert/aria2-with-webui'
########################
docker run -d --name gitbucket --restart=always --net='br0' --ip='192.168.10.22' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -v /etc/localtime:/etc/localtime:ro -e 'TCP_PORT_80'='80' -e 'UDP_PORT_22'='22' -e 'PUID'='99' -e 'PGID'='100' -v /mnt/user/appdata/gitbucket:/gitbucket gitbucket/gitbucket /bin/bash 'sh' '-c' 'java -jar /gitbucket/gitbucket.war --port=80'
docker run -d --name gitbucket --restart=always --net='macnet' --ip='192.168.10.30' -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -v /mnt/user/appdata/gitbucket:/gitbucket gitbucket/gitbucket /bin/bash 'sh' '-c' 'java -jar /gitbucket/gitbucket.war --port=80'
sudo docker network create -d macvlan \
--subnet=192.168.10.0/24 \
--gateway=192.168.10.3 \
-o parent=br0 \
-o macvlan_mode=bridge \
macnet
########################
docker run -d --name='FileRun' --net='br0' --ip='192.168.10.12' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -e 'TCP_PORT_80'='80' -e 'FR_DB_HOST'='192.168.10.8' -e 'FR_DB_PORT'='3306' -e 'FR_DB_NAME'='filerun' -e 'FR_DB_USER'='dbname' -e 'FR_DB_PASS'='dbpasswd' -e 'APACHE_RUN_USER'='www-data' -e 'APACHE_RUN_USER_ID'='33' -e 'APACHE_RUN_GROUP'='www-data' -e 'APACHE_RUN_GROUP_ID'='33' -v '/mnt/user/www/soft/':'/user-files':'rw' 'afian/filerun'
docker run -d --restart=always --name='FileBrowser' --net='br0' --ip='192.168.10.20' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -v '/mnt/user/www':'/srv':'rw' -v '/mnt/user/appdata/filebrowser/':'/db/':'rw' 'filebrowser/filebrowser' -d /db/database.db
docker run -d --name='jupyterlab' --net='br0' --ip='192.168.10.10' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -e 'PACKAGES'='' -e 'TCP_PORT_8888'='9999' -v '/mnt/user/appdata/jupyterlab/notebooks':'/opt/app/data':'rw' -v '/mnt/user/appdata/jupyterlab/config':'/appdata':'rw' 'bgameiro/arch-jupyterlab'
docker run -d --name pynotebooks --restart=always --net='br0' --ip='192.168.10.33' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -v /etc/localtime:/etc/localtime:ro -v /mnt/user/appdata/pynotebooks/jupyter_notebook_config.py:/home/jovyan/.jupyter/jupyter_notebook_config.py -e 'TCP_PORT_80'='80' -e 'PUID'='99' -e 'PGID'='100' -v /mnt/user/www/pynotes:/home/jovyan/work jupyter/minimal-notebook:latest
#jupyter_notebook_config.py
c.NotebookApp.ip = '*'
c.NotebookApp.notebook_dir = '/home/jovyan/work'
c.NotebookApp.open_browser = False
c.NotebookApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$qAxzV496NL60GuMJKad5OQ$BCcCZxOk7Lb9OH8qLv+l7A'
c.NotebookApp.port = 8888
docker run -d --name pynotebooks --restart=always --net='br0' --ip='192.168.10.33' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -v /etc/localtime:/etc/localtime:ro -v /mnt/user/appdata/pynotebooks/jupyter_notebook_config.py:/home/jovyan/.jupyter/jupyter_notebook_config.py -e 'TCP_PORT_80'='80' -e GRANT_SUDO=yes --user=root -v /mnt/user/www/pynotes/start-notebook.d:/usr/local/bin/start-notebook.d -v /mnt/user/www/pynotes:/home/jovyan/work jupyter/minimal-notebook:latest
#/mnt/user/www/pynotes/start-notebook.d/boot.sh
/opt/conda/bin/python3.9 /opt/conda/bin/jupyter-notebook --port 80 &
https://hub.docker.com/r/kiddin9/openwrt-nginx
#本教程所使用环境 (debian 11 x86_64, root管理员, lan为eth0, ip段 10.0.0.x, 用于拨号的主路由IP:10.0.0.1 ,不要照抄命令,根据自己的实际情况做相应的调整)
#打开网卡混杂模式
ip link set eth0 promisc on
#创建网络
docker network create -d macvlan --subnet=10.0.0.0/24 --gateway=10.0.0.1 -o parent=eth0 openwrt
#拉取镜像,创建并启动容器
docker run -d --restart=always --name=openwrt --net='br0' --ip='192.168.10.10' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -e 'TCP_PORT_80'='80' -e 'TCP_PORT_443'='443' -e 'PUID'='99' -e 'PGID'='100' --privileged kiddin9/openwrt-nginx:x86_64 /sbin/init
docker run --restart always --name openwrt -d --network openwrt --privileged kiddin9/openwrt-nginx:x86_64 /sbin/init
#进入容器
docker exec -it openwrt sh
#本固件默认后台10.0.0.1, 假如我要修改为10.0.0.5
sed -i 's/10.0.0.1/10.0.0.5/' /etc/config/network && /etc/init.d/network restart
容器loganalyzer中run_service.sh
#!/bin/bash
#
# Boot script.
#
# @verions 1.0
# @fecha 05/05/2020
# @author Javier Pastor
# @license GPL 3.0
#
PORT=${HTTP_PORT:-80}
# User and Group for the data WWW
WWW_U="www-data"
WWW_G="www-data"
# Global Paths
PATH_DEFAULT=/data_default
PATH_DATA=/data
PATH_WWW=/var/www/html
# Paths Files Config.php
PATH_WWW_CONF=$PATH_WWW/config.php
PATH_WWW_CONF_DATA=$PATH_DATA/config.php
# Apache Site Default
APACHE_SITE_DEFAULT="/etc/apache2/sites-enabled/000-default.conf"
APACHE_SITE_DEFAULT_DATA=$PATH_DATA/000-default.conf
APACHE_SITE_DEFAULT_DEFAULT=$PATH_DEFAULT/000-default.conf
# Apache Module RemoteIP
APACHE_MOD_REMOTEIP="/etc/apache2/conf-enabled/remoteip.conf"
APACHE_MOD_REMOTEIP_DATA=$PATH_DATA/remoteip.conf
APACHE_MOD_REMOTEIP_DEFAULT=$PATH_DEFAULT/remoteip.conf
# App SMTP Send
APP_SMTP="/etc/msmtprc"
APP_SMTP_DATA=$PATH_DATA/msmtprc.conf
APP_SMTP_DEFAULT=$PATH_DEFAULT/msmtprc.conf
# Timezone PHP
PHP_TZ=${TZ:-"America/Los_Angeles"}
PHP_TZ_FILE="/usr/local/etc/php/conf.d/timezone.ini"
EXEC_EXTERNAL=$PATH_DATA/run_service_external.sh
RUN_ENTRYPOINT="docker-php-entrypoint"
RUN_CMD="apache2-foreground"
fun_check_path_data() {
if [[ ! -d $PATH_DATA ]]; then
mkdir -p $PATH_DATA
[[ $? -gt 0 ]] && return 1 || return 0
fi
}
fun_check_file_conf() {
if [[ ! -f $PATH_WWW_CONF_DATA ]]; then
touch $PATH_WWW_CONF_DATA
[[ $? -gt 0 ]] && return 1 || return 0
fi
}
fun_check_file_apache_site_default() {
if [[ ! -f $APACHE_SITE_DEFAULT_DATA ]]; then
cp $APACHE_SITE_DEFAULT_DEFAULT $APACHE_SITE_DEFAULT_DATA
[[ $? -gt 0 ]] && return 1 || return 0
fi
}
fun_check_file_apache_mod_remoteip() {
if [[ ! -f $APACHE_MOD_REMOTEIP_DATA ]]; then
cp $APACHE_MOD_REMOTEIP_DEFAULT $APACHE_MOD_REMOTEIP_DATA
[[ $? -gt 0 ]] && return 1 || return 0
fi
}
fun_check_file_smtp() {
if [[ ! -f $APP_SMTP_DATA ]]; then
cp $APP_SMTP_DEFAULT $APP_SMTP_DATA
[[ $? -gt 0 ]] && return 1 || return 0
fi
}
fun_check_chown() {
#if [[ ! -d $PATH_DATA ]]; then
# chown ${WWW_U}:${WWW_G} $PATH_DATA -R
#fi
# /var/www
if [[ ! -d $PATH_WWW ]]; then
chown $WWW_U:$WWW_G $PATH_WWW -R
fi
# Config.php
if [[ ! -f $PATH_WWW_CONF_DATA ]]; then
chown $WWW_U:$WWW_G $PATH_WWW_CONF_DATA
chmod 644 $PATH_WWW_CONF_DATA
fi
# Apache Site Default
if [[ ! -f $APACHE_SITE_DEFAULT_DATA ]]; then
chown root:root $APACHE_SITE_DEFAULT_DATA
chmod 644 $APACHE_SITE_DEFAULT_DATA
fi
# Apache Mod RemoteIP
if [[ ! -f $APACHE_MOD_REMOTEIP_DATA ]]; then
chown root:root $APACHE_MOD_REMOTEIP_DATA
chmod 644 $APACHE_MOD_REMOTEIP_DATA
fi
# SMTP
if [[ ! -f $APP_SMTP_DATA ]]; then
chown root:root $APP_SMTP_DATA
chmod 644 $APP_SMTP_DATA
fi
}
fun_check_link() {
ln -sf $PATH_WWW_CONF_DATA $PATH_WWW_CONF
ln -sf $APACHE_SITE_DEFAULT_DATA $APACHE_SITE_DEFAULT
ln -sf $APACHE_MOD_REMOTEIP_DATA $APACHE_MOD_REMOTEIP
ln -sf $APP_SMTP_DATA $APP_SMTP
}
fun_php_tz_update() {
echo "date.timezone = $PHP_TZ" > $PHP_TZ_FILE
chown root:staff $PHP_TZ_FILE
chmod 644 $PHP_TZ_FILE
}
fun_rsyslog(){
service rsyslog restart
}
if [[ -f $EXEC_EXTERNAL ]]; then
echo "*** RUN EXTERNAL ***"
sh $EXEC_EXTERNAL
else
echo "Starting service..."
echo " - Listen port: $PORT"
echo ""
fun_check_path_data
fun_check_file_conf
fun_check_file_apache_site_default
fun_check_file_apache_mod_remoteip
fun_check_file_smtp
fun_check_link
fun_check_chown
fun_php_tz_update
fun_rsyslog
$RUN_ENTRYPOINT $RUN_CMD
fi
配置webdevops/php-nginx
进入容器编辑
vi /etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffers 4 256k;
fastcgi_buffer_size 128k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
send_timeout 60;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /docker.stdout ;
error_log /docker.stderr ;
##
# Gzip Settings
##
gzip on;
#gzip_disable "msie6";
gzip_min_length 1k;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
gzip_disable "MSIE [1-6].";
server_names_hash_bucket_size 128;
client_max_body_size 2000m;
client_header_buffer_size 256k;
large_client_header_buffers 4 256k;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
vi /opt/docker/etc/nginx/vhost.conf
server {
listen 80 default_server;
server_name _*.vm docker;
root "/app/vhost";
index index.html index.htm index.php default.php;
error_page 500 502 503 504 405 404 403 /404.html;
location / {
#index index.html index.htm index.php;
#autoindex on;
try_files $uri $uri/ /index.php$is_args$args;
#如果静态文件存在服务器,则跳过rewrite规则
if (-f $request_filename) {
expires max;
break;
}
}
location /web/ {
# Do nothing. nginx will serve files as usual.不重写目录
}
#location ~* \.(db3|json)$ {
location ~* \.(db3|sql|dat|log|htaccess)$ {
deny all;
}
location ~* ^/(temp|upload|imgs|data|app|static|sys|core|vendor|api|htaccess)/.*.(php|php5)$ {
#return 405;#405 Not Allowed
return 404;
}
location = /50x.html {
root html;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
client_body_temp_path "/app/temp";
}
}
vi /opt/docker/etc/php/php.webdevops.ini
; -------------------------------------
; Docker Webdevops PHP configuration
; -------------------------------------
; this file will overwrite default php.ini settings
display_errors = 0
log_errors = 1
short_open_tag = Off
variables_order = 'GPCS'
request_order = 'GP'
allow_url_fopen = On
allow_url_include = Off
memory_limit = 512M
max_execution_time = 300
max_input_time = 300
post_max_size = 5000M
upload_max_filesize = 5000M
max_input_vars = 5000
expose_php = Off
date.timezone = PRC
mysql.default_host = mysql
mysqli.default_host = mysql
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 7963
opcache.fast_shutdown = 1
opcache.validate_timestamps = 1
opcache.revalidate_freq = 0
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.idekey = docker
xdebug.cli_color = 1
xdebug.max_nesting_level = 1000
xdebug.profiler_enable_trigger = 1000
xdebug.profiler_output_dir = /tmp/debug
xdebug.output_dir = /tmp/debug
; container env settings
sendmail_path = /usr/sbin/sendmail -t -i
unRAID挂载NTFS格式的移动硬盘
首先在插件页,粘贴插件链接地址安装Unassigned Devices插件,安装链接:
https://github.com/dlandon/unassigned.devices/raw/master/unassigned.devices.plg
安装完毕,重启一下服务器,插入数据移动硬盘.打开MAIN标签往下翻,即可看到外接的移动硬盘。
击MOUNT按键,即可挂载移动硬盘了,也可以设置自动挂载、只读等。
当然,也可以点开齿轮设置,设置全局USB自动挂载。
常用插件
转载自:
https://blog.csdn.net/engineerlzk/article/details/117306507
- Community Applications:这个插件大概是安装unraid之后第一个安装的插件了吧,类似与群晖的软件中心,这里提供了很多docker模版和插件的下载,本文所有插件都可以从这里下载。官方解释为:The One Stop Shop for all applications for unRaid
- CA Cleanup Appdata:一款可以清理appdata目录的插件,当你删除docker容器的时候默认是不删除容器配置文件的,可以实用这款插件清理。官方解释为:作为CA系列的一部分,Cleanup Appdata将扫描您的appdata共享,以确定哪些文件夹不再使用(由于卸载了docker应用程序),并提示您删除它们
- CA Config Editor:一款可以编辑配置文件的编辑器,最常用的就是安装plex、jellyfin、emby调用硬件加速时编辑go文件,可以不需要命令行编辑。官方解释为:面向高级用户的简单配置文件编辑器
- Dynamix System Buttons:这个插件就是在右上角增加一个重启、关机的按钮,不需要每次关机都打开main页面,非常方便。官方解释为:Dynamix System Buttons将一个一键式按钮添加到标题中,使您可以立即进入睡眠状态,重新启动或关闭系统。
- Dynamix System Info:一款显示系统信息的插件,可以详细的看到机器的具体配置,给需要详细了解机器信息的人。官方解释为:Dynamix System Information显示了系统硬件和BIOS的各种详细信息。这包括处理器,内存和子系统组件。
- Dynamix System Stats:一款可以查看系统CPU、内存、硬盘、网络实时信息的插件。官方解释为:Dynamix系统统计信息实时显示磁盘利用率和关键系统资源,例如CPU使用率,内存使用率,接口带宽和磁盘I / O带宽。
- Dynamix System Temp:一款监测主板、CPU温度的插件、需使用Nerd Tools安装perl驱动才可以读取到温度信息,安装稍微麻烦一些(在apps中安装Nerd Pack插件,在Nerd Pack插件中安装perl驱动)
- Fix Common Problems:一款可以修复docker、设置等问题的插件。适合强迫症患者。官方解释为:用于诊断和建议修复常见问题,配置错误等的插件。
- Unassigned Devices:一款可以挂载u盘、移动硬盘、未加入序列的硬盘或者SMB共享的插件,也是unraid必装插件了。官方解释为:此插件使用UDEV自动挂载和共享不属于Unraid阵列的磁盘。可用设备在“主要/未分配的设备”选项卡下列出。您还可以在其他服务器上安装远程SMB和NFS共享。
- Unassigned Devices Plus:一款补足Unassigned Devices缺陷的插件,增加了挂载hfs和exFat格式的设备。官方解释为:未分配的设备支持HFS +和exFAT磁盘格式,并启用破坏性模式
- User Scripts:一款可以运行用户自定义脚本的插件。贴吧有人使用这个插件设置每次开机自动更换docker源。官方解释为:一个插件,可充当任何用户脚本的简单前端,使您无需输入命令行即可运行它们。
- VFIO-PCI CFG(6.9x版似乎不需要了,在【工具】→【系统设备】中可直接勾选屏蔽):硬件直通插件,可以直接选择需要直通的硬件后生成VFIO-PCI.CFG文件,而不需要去修改Main→Flash→Syslinux 配置→Unraid OS项,手工添加硬件ID屏蔽,再实现硬件直通的繁琐设置了。
开机启动容器
在settings中打开User Scripts
点击Add New Script,名称为run
vi /boot/config/plugins/user.scripts/scripts/run/script
#!/bin/bash
sleep 30
docker network connect --ip 192.168.10.8 br0 mariadb &
docker network connect --ip 192.168.10.7 br0 www &
docker network connect --ip 192.168.10.6 br0 frpc &
docker restart mariadb
docker restart www
docker restart frpc
unraid同步备份任务
#!/bin/bash
rsync -avzr --delete --progress /boot/ /mnt/disks/disk0/boot/ &
rsync -avzr --delete --progress /mnt/user/ /mnt/disks/disk0/user/ &
unraid定时任务
crontab -l //列出定时任务
crontab -e //编辑定时任务
#frpc
00 22 * * 0-6 docker stop frpc //每天22点关闭
00 07 * * 0-6 docker start frpc //每天7点开始
kill -9 crond进程
/usr/sbin/crond //启动进程
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。