Skip to content

Docker安装记录

约 1888 字大约 6 分钟

Docker

2023-07-21

大部分都是 N1-Openwrt[arm]下的安装命令

  • 容器中的默认端口更改 docker\overlay2[id]\ 中可修改对应的设置 之后重启容器

docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}"

portainer 容器管理

photoprism 照片管理

rclone

# 挂载阿里云网盘到本地

# 1.配置rclone
rclone config --config rclone.conf

# 2.选择
输入挂载名 => 选择Webdav => 输入挂载的webdav地址 => 选择other


# 挂载命令 alyunwebdav:上面新建的挂载名;  / /mnt/sda1/aliyundrive:映射地址 映射到本地
rclone mount alyunwebdav:/ /mnt/sda1/aliyundrive --allow-non-empty --vfs-cache-mode writes --config /etc/rclone/rclone.conf

mysql

docker run -d --net host -p 3306:3306 --name mysql -v /mnt/sda1/mysql/log:/var/log/mysql -v /mnt/sda1/mysql/data:/var/lib/mysql -v /mnt/sda1/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=yuchen@123  arm64v8/mysql:latest

# 需要加一个密码之类的参数-e  否则无法正常启动
docker run -d --network archive --network-alias addrmysql -p 3306:3306 --name mysql --restart always -v /opt/mysql/data:/var/lib/mysql -v /opt/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai arm64v8/mysql:latest --lower_case_table_names=1

nginx

docker run --name nginx --restart always -v /opt/nginx/html:/usr/share/nginx/html -d -p 8080:80 nginx:1.22
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

jellyfin

docker run -itd --name jellyfin -p 8096:8096 -v /mnt/sda1/jellyfin/config:/config -v /mnt/sda1/jellyfin/cache:/cache -v /mnt/aliyundrive:/media jellyfin/jellyfin

docker run -itd --name jellyfin --net host -p 8096:8096 -v /mnt/jellyfin/config:/config -v /mnt/jellyfin/cache:/cache -v /mnt/aliyundrive:/media jellyfin/jellyfin

plex

docker run -itd --name=plex --net host -p 32400:32400 -e VERSION=docker -e TZ=Asia/Shanghai -e PLEX_CLAIM="claim-_X6ySQp8Y8rXsL6VwF7G" -v /mnt/sda1/myplex/config:/config -v /mnt/sda1/source:/source -v /mnt/sda1/CloudNAS/CloudDrive/阿里云盘:/data --restart unless-stopped linuxserver/plex:arm64v8-latest
	docker pull linuxserver/plex:arm64v8-latest


	#https://www.plex.tv/zh/claim/

qbittorrent

docker pull linuxserver/qbittorrent:arm64v8-latest

docker run -d --name=qbittorrent -e PUID=1000 -e PGID=1000 -e TZ=Asia/Shanghai -e WEBUI_PORT=8080 -p 8080:8080 -p 6881:6881 -p 6881:6881/udp -v /mnt/mmcblk2p4/qbittorrent/config:/config -v /mnt/sda1/downloads:/downloads --restart unless-stopped linuxserver/qbittorrent:arm64v8-latest

nextcloud 网盘 要求较高

docker pull linuxserver/nextcloud:latest

docker run -d --name=nextcloud --net host -e TZ=Asia/Shanghai  -p 8085:80 -v /mnt/sda1/nextcloud:/var/www/html arm64v8/nextcloud


docker exec --user www-data -it c145 php occ files:scan --all
#-v /mnt/sda1/nextclound/apps:/var/www/html/custom_apps -v /mnt/sda1/nextclound/config:/var/www/html/config -v /mnt/sda1/nextclound/data:/var/www/html/data -v /mnt/sda1/nextclound/theme:/var/www/html/themes

cloudreve 简略网盘

# 先创建配置文件等
mkdir -vp cloudreve/{uploads,avatar} \
&& touch cloudreve/conf.ini \
&& touch cloudreve/cloudreve.db

docker run -d -p 5212:5212 --name cloudreve --net host  --mount type=bind,source=/mnt/sda1/cloudreve/conf.ini,target=/cloudreve/conf.ini --mount type=bind,source=/mnt/sda1/cloudreve/cloudreve.db,target=/cloudreve/cloudreve.db -v /mnt/sda1/cloudreve/uploads:/cloudreve/uploads -v /mnt/sda1/cloudreve/avatar:/cloudreve/avatar cloudreve/cloudreve:latest
docker run -d --name navidrome --net host -p 4533:4533 -v /mnt/sda1/navidrome/music:/music -v /mnt/sda1/navidrome/data:/data -e ND_LOGLEVEL=info deluan/navidrome:latest

qinglong 签到面板

docker run -dit --net host -v /mnt/sda1/qinglong:/ql/data -p 5700:5700  --name qinglong  --hostname qinglong  --restart unless-stopped  whyour/qinglong:latest

	docker exec -it qinglong bash

	ql check
	ql update

clouddrive 网盘挂载

mount --make-shared  /mnt/mmcblk2p4

 docker run -d \
      --name clouddrive -p 9798:9798 \
      --restart unless-stopped \
      -v /mnt/sda1/CloudNAS/:/CloudNAS:shared \
      -v /mnt/sda1/CloudNAS/config:/Config \
      -v /mnt/sda1/CloudNAS/media:/media:shared \
      --network host \
      --pid host \
      --privileged \
      --device /dev/fuse:/dev/fuse \
      cloudnas/clouddrive

Homepage 导航页

docker run -d --net host --name homepage -p 3333:3000 \
-v /mnt/sda1/Homepage/config:/app/config \
-v /mnt/sda1/homepage/images:/app/public/images \
-v /var/run/docker.sock:/var/run/docker.sock ghcr.io/benphelps/homepage:latest

audiobooks 听书

docker run -d --name audiobookshelf --net host -p 13378:80 -v /mnt/sda1/audiobooks/config:/config -v /mnt/sda1/audiobooks/metadata:/metadata -v /mnt/sda1/audiobooks/audiobooks:/audiobooks  ghcr.io/advplyr/audiobookshelf

typecho 博客

docker run -d --name=typecho --restart always --mount type=tmpfs,destination=/tmp -v /mnt/sda1/typechoblog:/data -e PHP_TZ=Asia/Shanghai -e PHP_MAX_EXECUTION_TIME=600 -p 99:80 80x86/typecho:latest

npm

# 自带证书 自动续期
docker run -d -p 81:81 -p 9443:443 -p 9080:80 -v /mnt/sda1/npm/data:/data -v /mnt/sda1/npm/letsencrypt:/etc/letsencrypt --name nginxproxymanager docker.io/jc21/nginx-proxy-manager:latest

acme.sh 证书申请

# 以 docker 守护进程的身份运行 acme.sh
docker run -itd -v "$(pwd)/out":/acme.sh --net=host --name=acme.sh neilpang/acme.sh daemon

# 之后可使用执行任何 acme.sh 命令
docker exec acme.sh --help
docker exec acme.sh --issue -d example.com --standalone
# ....
# 步骤
# 1.注册
acme.sh --register-account -m [email protected]

# 2.获取dnspod的api秘钥
export DP_Id="123435"
export DP_Key="6412bd76*********"

# 3.申请证书
acme.sh --issue --dns dns_dp -d domian.com -d *.domian.com
acme.sh --issue --dns dns_dp -d cheu.com.cn -d *.cheu.com.cn
# dns_dp为dnspod ,如果是阿里云dns则为 dns_ali
# 前面-d参数指定根域名,后面-d指定子级泛域名
# 执行之后等待几分钟出现绿色文字提示key,cer证书所在位置就完成

# 更新证书 一般3个月一次,可以使用定时任务
./acme.sh --renew -d cheu.com.cn -d *.cheu.com.cn
# 输出到container/out
# npm中add证书,选择custom 傻姑娘穿这个证书

#威联通中 无法通过控制台UI中的浏览器来操作,因为浏览器找的是浏览器内部的文件
#证书密钥:[域名].key   证书:[域名].crt/[域名].cer

lazydocker docker 图像界面

docker run -it -p 3338:3000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /mnt/sda1/lazydocker:/.config/jesseduffield/lazydocker \
lazyteam/lazydocker

v2ray2

docker run -d \
  --restart=always \
  --privileged \
  --network=host \
  --name v2raya \
  -e V2RAYA_LOG_FILE=/tmp/v2raya.log \
  -v /share/Container/v2ray/lib/modules:/lib/modules:ro \
  -v /share/Container/v2ray/etc/resolv.conf:/etc/resolv.conf \
  -v /share/Container/v2ray/etc/v2raya:/etc/v2raya \
  mzz2017/v2raya
docker run -d --name v2raya -p 2017:2017 -v /etc/localtime:/etc/localtime:ro teddysun/v2raya

VaultWarden

docker pull vaultwarden/server:latest
docker run -d --name vaultwarden -v /mnt/sda1/warden/vw-data/:/data/ -p 8989:80 vaultwarden/server:latest

vnStat 流量监控

docker-compose.yml

vnstat --iflist #查看所有接口列表

vnstat -i <网卡名> --add #添加网卡到监控
vnstat -i eno3 --setalias "别名"  #网卡别名
vnstat -i br-4bf327714e64 --add --setalias "Jenkins" #添加与重命名结合

vnstat -i br-20f8582bfc70 --remove --force #移除网卡监控

dozzle:docker 日志监控

![[docker-compose_dozzle.yml]]

Easy-NET

FROM node:16
RUN apt-get update && apt-get install -y git
WORKDIR /app
RUN git clone https://github.com/786744873/easy-dotnet /app \
    && cd /app
RUN npm install --registry=https://repo.huaweicloud.com/repository/npm/
EXPOSE 3456
CMD ["npm","run","dev"]
docker build -t easynet:1.0 .
docker run -d -p 3456:8080 --name easynet easynet:1.0

it-tools

docker run -d -p 8200:80 --name it-tools corentinth/it-toolsdocker run -d -p 8200:80 --name it-tools corentinth/it-tools:2023.12.21-5ed3693docker run -d -p 8200:80 --name it-tools qingfeng2336/it-tools:latest

Syncthing

[[JustDoIT/dockercompose/syncthing/docker-compose.yml|docker-compose.yml]] 互相添加设备 id -> 文件夹共享;

stirling-pdf

默认中文:extraConfigs/setting.yml

system:
  defaultLocale: 'zh-CN' # Set the default language (e.g. 'de-DE', 'fr-FR', etc)

字体乱码:docker-compose.yml

 volumes:
      - ./trainingData:/usr/share/tessdata #Required for extra OCR languages
      - ./extraConfigs:/configs
      - ./fonts:/usr/share/fonts/opentype #映射字体,否者容易乱码
environment:
      - LANGS=zh_CN #默认界面语言

在映射的fonts文件夹中新建noto文件夹,把C:/Windows/fonts中的中文字体放进去

Lobe-chat

sudo docker run -d -p 13210:3210 -e ACCESS_CODE=abaaba --name lobe-chat lobehub/lobe-chat

书籍管理阅读类,目前没满意的

Calibre

麻烦

Calibre-Web

作为Calibre的展示端,需要使用Calibre的数据库,样式还可以 就是要依赖Calibre

gitea

  • 如果安装了actrunner需要注意生成时候的容器是独立的,注意网络配置或者防火墙开放端口否则访问不到gitea的访问

在使用cloudflare橙色云代理https后,开启ssh git的连同

需要公网ip的服务器用作frp转发

现状,环境

  • 没有公网 IPv4,只有内网 IPv6
  • 必须用 Cloudflare 代理 让外网访问
  • Caddy 监听 https_port 11443
  • Cloudflare Origin Rules 把 *所有 *.csoyi.xyz 转发到 11443
  • Caddy 再根据子域名转发到不同内网端口
    • git.csoyi.xyz → 8883(Gitea)

实现

  • 在cloudflare中配置dns => `gitssh.csoyi.xyz:灰色云 → 指向 FRP 公网 IP
  • 在frp中配置tcp转发,remote_port 22222 转发到 local_port22
  • 在gitea app.ini中配置SSH_DOMAIN = git-ssh.csoyi.xyz; SSH_PORT = 2222; SSH_LISTEN_PORT = 22
#测试通断
yuche@defang MINGW64 ~/source/repos/testgit
$ ssh -T [email protected] -p 22222
Hi there, yuchen! Youve successfully authenticated with the key named yuchen@cz_df.com, but Gitea does not provide shell access.
If this is unexpected, please log in with password and setup Gitea under another user.

#clone
yuche@defang MINGW64 ~/source/repos/testgit
$ git clone ssh://[email protected]:22222/yuchen/vuepress.git
Cloning into 'vuepress'...
The authenticity of host '[git-ssh.csoyi.xyz]:22222 ([47.11.11.111]:22222)' can't be established.
ED25519 key fingerprint is SHA2565:zXU119xRcS2f71231vjfiCB/9tYH4URM42DU5123vldybtfeTtW9FldNE.

网页走 CF,SSH 走 FRP 直连,互不干扰,完美!

tailscale

  • - TS_STATE_DIR=/var/lib/tailscale # 存储tailscale的状态目录映射到宿主机, 确保容器重启配置不变
  • 需要注意挂载 /var/lib/tailscale
  • TS_AUTHKEY=tskey-auth- key格式

幻兽帕鲁 palworld

  • 外网访问只需要代理upd端口 8211

未装

  • 多平台直播自动录制系统 bililive-go
  • Hoarder 离线网页收集
  • fooololo/aipan-netdisk-search 电影