丢弃宝塔,使用docker搭建网站主因:
-
宝塔面板是国内的网站可视化管理面板,因为国内环境复杂,宝塔面板被曝光为配合审查私自上传用户数据的事情,宝塔官方也委婉地承认了此事
-
为了数据安全保障,故使用docker搭建网站
dock安装文档
需要安装:
-
安装docker
-
安装docker可视化面板portainer
-
安装数据库mariadb
-
安装数据库管理工具phpmyadmin
-
安装wordpress
-
安装web服务nginx
-
安装反向代理神器nginx-proxy-manager
sudo -i
以root登录ssh
使用ssh远程软件以root用户登录
portainer安装命令
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer portainer/portainer
容器的启动方式-容器的用户权限-镜像加速
容器的启动方式:
--restart=unless-stopped \
--restart=always \
--restart=no \
一些特殊的,例如portainer,必须--restart=always \
容器的用户权限
一些容器用户权限,需要获取系统的PUID与GUID,在终端输入:
id
就能获取类似,如:
uid=0(root) gid=0(root) groups=0(root)
那么需要uid和gid的环境变量就是:
-e PUID=0 \
-e PGID=0 \
镜像加速
-
在阿里云注册个账号,在这获取到国内docker镜像源:阿里镜像源获取
-
修改daemon配置文件/etc/docker/daemon.json来使用加速器:(如果是以root权限执行,代码前面的sudo可以省略)
创建docker目录(默认会有这个目录):
sudo mkdir -p /etc/docker
写docker配置文件:
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“你的阿里加速地址”]
}
EOF
重新加载服务列表:
sudo systemctl daemon-reload
重启docker:
sudo systemctl restart docker
(dockerhub里的镜像在国外,如由能力富强,没有任何必要改用阿里镜像加速,使用阿里云镜像加速有时镜像下载速度也慢,甚至有些特殊镜像无法下载,所以,能富强就没必要使用阿里镜像加速)
查看端口占用情况
安装容器要考虑端口使用情况,故要查看端口占用,命令:
netstat -tunlp | grep 端口号
mariadb安装命令
docker run -d \
--name=Mariadb \
-e PUID=1000 \
-e PGID=1000 \
-e MYSQL_ROOT_PASSWORD=123456789 \
-e TZ=Asia/Shanghai \
-p 3306:3306 \
-v /mnt/user/appdata/Mariadb:/config \
--restart=unless-stopped \
linuxserver/mariadb:latest
-e MYSQL_ROOT_PASSWORD=123456789 \ (123456789指的是root的密码,自己重设)
-v /mnt/user/appdata/Mariadb:/config \ (/mnt/user/appdata/Mariadb指的是宿主机目录,自己重设)
phpmyadmin安装命令
docker run -d \
--name=phpmyadmin \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=Mariadb的root密码 \
-e MYSQL_HOST=Mariadb的主机ip \
-e MYSQL_PORT=Mariadb的数据库端口 \
-p 宿主机端口:80 \
-v 宿主机目录:/config \
--restart=unless-stopped \
phpmyadmin/phpmyadmin:latest
wordpress
创建一个wordpress的宿主机文件夹:wordpress
cd 宿主机文件夹目录
nano uploads.ini
输入:
file_uploads = On
upload_max_filesize = 3G
post_max_size = 3G
输入:
ctrl+x y保存 enter回车
用phpmyadmin进入Mariadb创建一个wordpress的数据库:账号/新增用户账号/创建与账号相同名称的数据库wordpress,并授予所有权限
wordpress的安装命令
docker run -d \
--name=wordpress \
-e WORDPRESS_DB_HOST=Mariadb的ip:3306 \
-e WORDPRESS_DB_USER=wordpress \
-e WORDPRESS_DB_PASSWORD=创建的wordpress数据库的密码 \
-e WORDPRESS_DB_NAME=wordpress \
-p 宿主机端口:80 \
-v 宿主机目录/wordpress/wp:/var/www/html \
-v 宿主机目录/wordpress/wpconfig/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini \
--restart=unless-stopped \
wordpress:latest
如上传文件或更新主题插件时弹出需要ftp支持,可以修改wp-config.php配置文件,在该文件下添加一行代码:
define(‘FS_METHOD’,”direct”);
nginx安装命令
docker run -d \
--name=nginx \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-p 宿主机端口:80 \
-p 宿主机端口:81 \
-v 宿主机目录:/config \
--restart=unless-stopped \
linuxserver/nginx:latest
可以添加多个端口来搭建网站
www文件夹可以存放网站源码
nginx\site-confs目录下的default就是配置文件
default里:
listen [::]:80 default_server 是监听网站的端口即访问网站的端口
set $root /config/www 是网站源码的目录
在\nginx\php目录下对php-local文件修改,加入:
post_max_size = 4G
upload_max_filesize = 4G
memory_limit = 1G
max_file_uploads= 30
max_execution_time = 3600
max_input_time = 3600
第一项为post数据最大大小
第二项为允许上传文件的最大大小
第三项为使用内存大小
第四项为允许同时上传的文件数量
第五项为最大脚本运行时间
第六项为最大输入时间
数值多少依服务器性能决定,这里只是参考,性能不够,数值过大会崩的
用nginx可以搭建一些文件服务,比如:kodbox可道云 Files Photo Gallery TinyFilManager
可道云源码下载
用phpmyadmin进入Mariadb创建一个kodbox的数据库:账号/新增用户账号/创建与账号相同名称的数据库kodbox,并授予所有权限,Mariadb或mysql数据库地址填:127.0.0.1:3306或192.168.0.252:3306(依mysql或Mariadb地址而定)
-
kodbox源码需要修改config目录下config.php文件,将’memory_limit’,’500M’数值改大,如:’memory_limit’,’2048M’
(同时安装好后在kodbox设置/基础设置/上传里修改上传分片大小和桌面拖拽文件大小,从而解锁上传速度15MB/s限制)
(分片大小依php-local里upload_max_filesize数值决定,比如:upload_max_filesize = 4G,那么分片大小最高为4M)
-
在:系统设置/服务器管理/php信息 中点击php详情,这个表里其中一项Configuration File (php.ini) Path对应的路径(右边)就是php配置文件的路径,可以在这里添加php数值,如创建uploads.ini并配置值:
file_uploads = On
upload_max_filesize = 3G
post_max_size = 3G
反向代理神器nginx-proxy-manager安装命令
docker run -d \
--name=nginx-proxy-manager \
-e DB_MYSQL_HOST=192.168.0.252 \
-e DB_MYSQL_PORT=3306 \
-e DB_MYSQL_USER=npm \
-e DB_MYSQL_PASSWORD=123456789 \
-e DB_MYSQL_NAME=npm \
-p 9980:80 \
-p 9981:81 \
-p 9943:443 \
-p 9950:9950 \
-v 宿主机目录/npm/data:/data \
-v 宿主机目录/npm/letsencrypt:/etc/letsencrypt \
--restart=unless-stopped \
jc21/nginx-proxy-manager
-p可以添加多个端口来反向代理
默认邮箱密码:
Email: admin@example.com
Password: changeme
在\data\nginx\proxy_host目录下,有配置文件,打开:(修改配置文件要给文件权限:chmod -R 777 文件目录)
-
listen 80; 是监听网站不带ssl的端口即网站访问端口,可以自行修改
listen [::]:80; 是监听网站不带ssl的端口即网站访问端口,可以自行修改
-
listen 9950 ssl http2; 是监听网站带ssl的端口即网站访问端口,可以自行修改
listen [::]:9950 ssl http2; 是监听网站带ssl的端口即网站访问端口,可以自行修改
在\data\custom_ssl目录下存放的是ssl证书
修改完配置文件后,需要重启容器才能生效
说一下使用注意项:
-
登录面板要一次输入正确的账号和密码,不然你就得清除浏览器记录和重启容器才能登录面板;
-
重启容器后,需要你的电脑也重启,才能用浏览器再登录面板;
-
如以上办法都没办法解决时,请删除镜像删除数据库,重新安装,重新配置,就是这么吐血。
Debian 10上安装Docker
01、安装通过HTTPS添加新存储库所需的软件包:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg2
02、使用以下curl命令导入存储库的GPG密钥:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add –
成功后,命令将返回OK
03、将稳定的Docker APT存储库添加到系统的软件存储库列表中:
sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable”
$(lsb_release -cs)将返回Debian发行版的名称。在这种情况下,就是这样buster
04、更新apt软件包列表并安装最新版本的Docker CE(Community Edition):
sudo apt update
sudo apt install docker-ce
05、安装完成后,Docker服务将自动启动。要验证它输入:
sudo systemctl status docker
输出类似如下:
-
docker.service – Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-07-30 20:52:00 GMT; 1min 11s ago
Docs: https://docs.docker.com
…
06、Docker的最新稳定版本是19.03.1:
docker -v
输出内容:
Docker version 19.03.1, build 74b1e89
在没有Sudo的情况下执行Docker命令
默认情况下,只有root 用户和具有sudo权限的用户才能执行Docker命令。
如果要在不预先添加的情况下执行Docker命令,则sudo需要将用户添加到在安装Docker CE软件包期间创建的docker组。为此,请输入:
sudo usermod -aG docker $USER
$USER是一个保存用户名的环境变量。
注销并重新登录,以便刷新组成员身份。
完成后,验证您可以运行docker不带sudo类型的命令:
docker container run hello-world
该命令将下载测试图像,在容器中运行,打印“Hello from Docker”消息并退出。输出应如下所示:
docker.service – Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-07-30 20:52:00 GMT; 1min 11s ago
Docs: https://docs.docker.com
docker搭建私人文件服务—xbackbone
docker run -d \
--name=xbackbone \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-p 宿主机端口:80 \
-v 宿主机目录:/config \
--restart=unless-stopped \
lscr.io/linuxserver/xbackbone:latest
该文件服务需要创建数据库
如果要更改 PHP 最大上传大小.ini,可以通过在/config/php/php-local.ini
例:
post_max_size = 4G
upload_max_filesize = 4G
memory_limit = 1G
max_file_uploads= 30
max_execution_time = 3600
max_input_time = 3600
数值多少依服务器性能决定,这里只是参考,性能不够,数值过大会崩的
docker搭建文件服务—gohttpserver
完整安装命令
docker run -d \
--name=gohttpserver \
-p 宿主机端口:8000 \
-v 宿主机目录:/app/public \
--upload --delete --auth-type http --auth-http 用户名:密码 \
--restart=unless-stopped \
codeskyblue/gohttpserver
需要上传功能,请加 --upload
需要新建文件和删除功能,请加 --delete
启用基本 http 身份验证,请加 --auth-type http --auth-http 用户名:密码
最容易搭建的公开网盘alist
安装命令:
docker run -d
--name=alist
-v alist宿主机目录:/opt/alist/data
-v alist宿主机目录/storage:/opt/alist/data/storage
-p 宿主机端口:5244
--restart=always
xhofe/alist:latest
安装好后:
- 查看容器日志里username/password或username/passwd获取:账号密码
输入账号密码,进入alist后台:
- 设置/前端,修改账号密码
- 账号/添加,类型选贼本地,根目录路径填:/opt/alist/data/storage,虚拟路径就是名称例如:/网盘,随便填
jellyfin安装并开启核显硬解
以root权限进入ssh终端
输入
modprobe i915
回车
输入
ls /dev/dri
回车
出现
card0或renderD128或两者同时出现
输入
chmod 777 /dev/dri/renderD128
或
chmod 777 /dev/dri/card0
或都输入
回车
有些linux系统要设置开机自动加载核显驱动,例如unraid:
输入
cd /boot/config
回车
输入
vi go
回车
键盘点i进入编辑,上下左右键移动,输入
modprobe i915
键盘点Esc退出
再输入
:wq
回车
这样就保存退出了
安装命令
-
/linuxserver/jellyfin版镜像安装命令
docker run -d \
--name=jellyfin \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-p 8096:8096 \
-p 1900:1900/udp \
-v jellyfin配置存放目录/config:/config \
-v jellyfin电影存放/movies:/data/movies \
-v jellyfin电视存放/tvseries:/data/tvshows \
-v jellyfin音乐存放/music:/data/music \
-v jellyfinMV存放/MV:/data/MV \
--device=/dev/dri/renderD128:/dev/dri/renderD128 \
--restart=unless-stopped \
lscr.io/linuxserver/jellyfin:latest
下面核显添加看设备是否支持
--device=/dev/dri/renderD128:/dev/dri/renderD128
--device=/dev/dri/card0:/dev/dri/card0
-
jellyfin/jellyfin版镜像安装命令
docker run -d \
--name=jellyfin \
--user uid:gid \
--net=host \
--volume jellyfin配置目录/config:/config \
--volume jellyfin缓存目录/cache:/cache \
--volume jellyfin视频存放目录/media:/media \
--device=/dev/dri/renderD128 \
--restart=unless-stopped \
jellyfin/jellyfin:latest
下面核显添加看设备是否支持
--device=/dev/dri/renderD128 \
--device=/dev/dri/card0 \
-
nyanmisaka/jellyfin版镜像安装命令
docker run -d \
--name=jellyfin \
--net=host \
--volume jellyfin配置目录/config:/config \
--volume jellyfin缓存目录/cache:/cache \
--volume jellyfin视频存放目录/media:/media \
--device=/dev/dri/renderD128 \
--restart=unless-stopped \
nyanmisaka/jellyfin
私人书库calibre-web安装命令
docker run -d \
--name=calibre-web \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-e DOCKER_MODS=linuxserver/mods:universal-calibre \
-p 8083:8083 \
-v calibreweb目录/config:/config \
-v calibreweb目录/books:/books \
--restart unless-stopped \
lscr.io/linuxserver/calibre-web:latest
安装好后:
需要等1到2分钟等calibre-web正常启动
默认账号:admin 默认密码:admin123 登录进入
Database Configuration
Location of Calibre Database
之下,填
/books
save保存
admin/languge选中文简体
管理权限/编辑界面配置 进行配置
管理权限/编辑基本配置:启用上传 允许匿名浏览(可选)
管理权限/用户列表/用户名/Guest:允许在线阅读 允许下载书籍
重启容器后,会出现无法启动calibre情况,原因是无法连接“外面的网络”,解决办法是系统开启代理进行富强,启动成功后就不需要连接“外面的网络”了
apache搭建,可以做网站也可以直接做目录列表下载站
使用docker pull 拉取最新的apache镜像:
docker pull daocloud.io/sectest/php-apache:master-ca84461
安装命令:
docker run -d -it -p 宿主机端口:80 --name apache_php -v 宿主机目录:/var/www/html daocloud.io/sectest/php-apache:master-ca84461 /bin/sh
连接容器命令:
docker exec -t -i apache_php sh
在docker的容器内,启动apache2:
service apache2 start
进一步配置:
安装vim编辑器
输入
apt-get update
输入
apt-get install vim
vim编辑器安装完成
-
第一种进一步配置(要先安装vim编辑器)
输入
cd /etc/php5/apache2/conf.d
输入
touch uploads.ini
输入
cd /etc/php5/apache2/conf.d
输入
vi uploads.ini
用vim编辑器进入uploads.ini文件里,输入(键盘点i进入编辑)
file_uploads = On
upload_max_filesize = 4G
post_max_size = 4G
输入完,键盘点Esc,再输入
:wq
退出保存
之后,关闭容器,重启容器
-
第二种进一步配置(要先安装vim编辑器)
输入
cd /etc/php5/apache2
输入
vi php.ini
进入php.ini文件,修改=右边数值(键盘点i编辑)
file_uploads = On
post_max_size = 4G
upload_max_filesize = 4G
memory_limit = 1G
max_file_uploads= 30
max_execution_time = 3600
max_input_time = 3600
输入完,键盘点Esc,再输入
:wq
退出保存
之后,关闭容器,重启容器
还有一种编辑方法,是通过 docker cp 拷贝进行修改,以下是说明例子,看例子应该知道怎么用(sudo要不要写取决于你的权限)
将容器中的文件拷贝出来
sudo docker cp 容器ID:/etc/mysql/my.cnf /home/tom/
将容器中的文件拷贝回去
sudo docker cp /home/tom/my.cnf 容器ID:/etc/mysql/
多平台文件备份神器syncthing(手机电脑同步备份)
完整安装代码:(建议-p端口不要修改)
docker run -d --name syncthing --restart=unless-stopped -p 8384:8384 -p 22000:22000/tcp -p 22000:22000/udp -p 21027:21027/udp -v 宿主机目录/syncthing:/var/syncthing syncthing/syncthing
要是局域网使用,就不需要再21027端口和22000端口上使用udp协议,直接tcp协议就行,此时精简安装代码(推荐):
docker run -d --name syncthing --restart=unless-stopped -p 8384:8384 -p 22000:22000 -v 宿主机目录/syncthing:/var/syncthing syncthing/syncthing
安装好后,给文件夹权限:
chmod -R 777 宿主机目录/syncthing
▶Syncthing官网
安装包下载:
▶Windows客户端下载
▶MacOS客户端下载
▶安卓客户端
画板项目
安装命令:
docker run --rm -dit --name excalidraw -p 宿主机端口:80 excalidraw/excalidraw:latest
Filerun网盘搭建
安装命令:
docker run -d \
--restart unless-stopped \
--name filerun \
-p 宿主机端口:80 \
-v 宿主机目录/filerun/html:/var/www/html \
-v 宿主机目录/filerun/user-files:/user-files \
-e FR_DB_HOST=数据库地址 \
-e FR_DB_PORT=3306(数据库端口,一般3306或3307) \
-e FR_DB_NAME=filerun(数据库名称) \
-e FR_DB_USER=filerun(数据库用户名) \
-e FR_DB_PASS=数据库密码 \
-e APACHE_RUN_USER=www-data \
-e APACHE_RUN_USER_ID=33 \
-e APACHE_RUN_GROUP=www-data \
-e APACHE_RUN_GROUP_ID=33 \
filerun/filerun
界面中文翻译包:获取
把翻译包放在这里/filerun/html/system/data/translations
进入界面,设置汉化:
Control panel
–> Interface
–> Language
,选择:chinese.php
开源流程图编辑平台:drawio
安装命令:
docker run -itd --name="draw" --restart=unless-stopped -p 宿主机端口:8080 jgraph/drawio
如图所示:
nextlist网盘
安装命令:
docker run -d \
--name=nextlist \
-p 宿主机端口:80 \
-v /宿主机目录/nextlist/config:/app/config/ \
-v /宿主机目录/nextlist/data:/data \
--restart=unless-stopped \
mrlee326/nextlist:latest
- 用phpmyadmin进入Mariadb创建一个nextlist的数据库:账号/新增用户账号/创建与账号相同名称的数据库nextlist,并授予所有权限
- 本地存储路径:/data
该项目处于初始阶段,是用GO语言写的,整体使用体验很一般,作者应该会努力更新吧!
问答社区论坛answer搭建
安装命令:
docker run -d --name answer --restart=unless-stopped -p 宿主机端口:80 -v /宿主机目录/answer:/data answerdev/answer:latest
创建数据库:
用phpmyadmin进入Mariadb创建一个answer的数据库:账号/新增用户账号/创建与账号相同名称的数据库answer,并授予所有权限
tasks.md随记笔记
安装命令:
docker run -d \
--name tasks.md \
-e PUID=1000 \
-e PGID=1000 \
-e TITLE=”MD笔记站点名称” \
-p 宿主机端口:8080 \
-v /path/to/cards:/api/files \
-v /path/to/styles:/api/static/stylesheets \
--restart unless-stopped \
baldissaramatheus/tasks.md:latest
修改主题:
需要修改 styles 目录中的 index.css 文件,主题样式在color-themes文件夹里,有3个样式,如将index.css文件中第二行从 @import url(./color-themes/adwaita.css); 改为 @import url(./color-themes/nord.css); 。刷新网页后主题就会更换
易有云
因为易有云需要绑定手机后才能用,所有我就不写了,直接提供官方文档,或者直接使用iStoreOS,iStoreOS是一个深度定制的openwrt系统,好像能不绑定直接使用易有云的一小部分功能:
docker cli转docker-compose
docker run -d --name composerize --restart=unless-stopped -p 宿主机端口:8080 icedream/composerize:latest
思维导图SimpleMindMap
docker run -d \
--restart unless-stopped \
--name simplemindmap \
-p 3055:8080 \
shuiche/mind-map
Mfun-轻量影视管理平台
估计作者就是给openwrt平台搭建的影视管理平台,官网和github都没提供啥内容,使用体验来讲挺一般的,我是从iStoreOS那里看来的,提供下其它平台用docker cli安装教程
-
创建文件夹:
mkdir -p /宿主机目录/mfun/{configs,caches,mnt}
-
docker cli命令安装:
docker run -d \
--name=mfun \
-e TZ=Asia/Shanghai \
-p 宿主机端口:8990 \
-v /宿主机目录/mfun/configs:/mfun/store \
-v /宿主机目录/caches:/mfun/tmp \
-v /宿主机目录/mnt:/mnt:rslave \
--restart=unless-stopped \
carseason/mfun:laster
-
默认用户: admin password
photoprism-智慧相册管理平台
docker cli命令
docker run -d \
--name photoprism \
--security-opt seccomp=unconfined \
--security-opt apparmor=unconfined \
-p 宿主机端口:2342 \
-e PHOTOPRISM_UPLOAD_NSFW=”true” \
-e PHOTOPRISM_ADMIN_PASSWORD=”insecure” \
-v /宿主机目录/photoprism/Example:/photoprism/originals/Example \
-v /宿主机目录/photoprism/pictures:/photoprism/originals \
--restart=unless-stopped \
photoprism/photoprism
Sun-Panel导航
-
docker cli命令
docker run -d --restart=always -p 宿主机端口:3002 \
-v /宿主机目录/sun-panel/conf:/app/conf \
-v /宿主机目录/sun-panel/uploads:/app/uploads \
-v /宿主机目录/sun-panel/database:/app/database \
--name sun-panel \
hslr/sun-panel
-
初始账号密码
账号:admin@sun.cc
密码:12345678
Zdir Pro
docker cli命令
docker run --privileged -d --name="zdir" \
-v /宿主机目录/zdir/data:/opt/zdir/data \
-v /宿主机目录/zdir/data/public:/opt/zdir/data/public \
-v /宿主机目录/zdir/data/private:/opt/zdir/data/private \
-p 宿主机端口:6080 \
--restart=unless-stopped \
helloz/zdir:4
Melody-音乐精灵
docker cli命令
docker run -d \
--restart unless-stopped \
--name melody \
-p 宿主机端口:5566 \
-v 宿主机目录/melody/config:/app/backend/.profile \
-v 宿主机目录/melody/downloads:/app/melody-data \
foamzou/melody:latest
默认密码:melody