portainer
如果要用docker版的portainer管理所有的docker应用,必须最先安装portainer容器。
# https://hub.docker.com/r/6053537/portainer-ce
docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock 6053537/portainer-ceversion: "2"
services:
portainer:
container_name: portainer
network_mode: bridge
image: 6053537/portainer-ce:latest
# image: 6053537/portainer-ce #汉化版。官方版为portainer/portainer-ce
# image: hub-mirror.c.163.com/6053537/portainer-ce #推荐国内服务器或nas用,需要请用#注释上一行
ports:
- 9000:9000
volumes:
- ./data:/data
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
volumes:
data:
squid 代理服务器
参考
- https://cooolin.com/scinet/2020/06/21/squid-proxy-simple.html
- https://bu1.github.io/2021/12/04/%E4%BD%BF%E7%94%A8Squid%E6%90%AD%E5%BB%BAHTTP%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8/ 实现:使用squid开启https代理
nginx proxy manager
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # HTTP端口
- '81:81' # Nginx Proxy Manager Dashboard端口
- '443:443' # HTTPS端口
volumes:
- ./data:/data # 配置
- ./letsencrypt:/etc/letsencrypt # 证书路径linux 服务端浏览器
开启ddns和nginx proxy之后,用于快速在外网接入内网浏览器
version: '3.3'
services:
firefox:
container_name: firefox
restart: unless-stopped
ports:
- '5800:5800'
- '5900:5900'
volumes:
- '/root/firefox:/config:rw'
environment:
- LANG=zh_CN.UTF-8
- TZ=Asia/Hong_Kong
- DISPLAY_WIDTH=1920
- KEEP_APP_RUNNING=1
- VNC_PASSWORD=1234
image: jlesage/firefoxadguard dns过滤
homeassistant 智能家居
lucky
参见使用lucky进行ddns、端口转发、https证书acme续签
jellyfin
端口是8096
version: '3.5'
services:
jellyfin:
image: nyanmisaka/jellyfin
container_name: jellyfin
network_mode: 'host'
volumes:
- /root/jellyfin/config:/config
- /root/jellyfin/cache:/cache
- /mnt/media:/media
restart: 'unless-stopped'
devices:
- /dev/dri:/dev/dri
environment:
- TZ=Asia/Shanghai
- PUID=0
- PGID=0
- LC_ALL=en_US.UTF-8
- LANG=en_US.UTF-8
- LANGUAGE=en_US:en
- HEALTHCHECK_URL=http://localhost:8096/qbittorrentee
端口是8080
version: "3"
services:
qbittorrentee:
image: superng6/qbittorrentee
container_name: qbittorrentee
network_mode: "host"
environment:
- TZ=Asia/Shanghai
volumes:
- /mnt/media/qbittorrentee/config:/config
- /mnt/media/qbittorrentee/downloads:/downloads
#ports:
# - 6881:6881
# - 6881:6881/udp
# - 8080:8080
restart: unless-stoppedyoutube dl
version: "3"
services:
youtube-dl:
image: "kmb32123/youtube-dl-server"
#network_mode: "host"
ports:
- 8081:8080
volumes:
- /mnt/media/youtubeDownload:/youtube-dl
restart: unless-stoppedxiaoya-alist
docker run -d -p 4567:4567 -p 5344:80 -e ALIST_PORT=5344 -v /etc/xiaoya:/data --restart=always --name=xiaoya-tvbox haroldli/xiaoya-tvbox:latestaliyundrive-webdav
docker run -d --name=aliyundrive-webdav --restart=unless-stopped -p 8080:8080 \
-v /etc/aliyundrive-webdav/:/etc/aliyundrive-webdav/ \
-e REFRESH_TOKEN='your refresh token' \
-e WEBDAV_AUTH_USER=admin \
-e WEBDAV_AUTH_PASSWORD=admin \
messense/aliyundrive-webdav其中,REFRESH_TOKEN 环境变量为你的阿里云盘 refresh_token,WEBDAV_AUTH_USER 和 WEBDAV_AUTH_PASSWORD 为连接 WebDAV 服务的用户名和密码。
参考
immich 相册管理
前置
- 下载
XLM-Roberta-Large-Vit-B-16Plus模型,用于中文搜索照片,参考这里。 - 将immich相册反向地理编码设置为中文,geo资源。
- 备份、恢复数据库
最简单的配置(无中文geo和备份),需要2个配置文件
.env:
TZ=Asia/Shanghai
IMMICH_VERSION=release
HF_ENDPOINT=https://hf-mirror.com
# 自定义的上传照片存放路径,群晖需要先创建好
UPLOAD_LOCATION=/mnt/media/immich-app/library
# 自定义的数据库存放路径,群晖需要先创建好
DB_DATA_LOCATION=/mnt/media/immich-app/postgres
# 自定义的外部库存放路径
PHOTOS_LOCATION=/mnt/lq-photos
# 大模型存放地址
IMMICH_MODAL_CACHE=/mnt/media/immich-app/modal
# 下面修改数据库账号密码等信息
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE_NAME=immichdocker-compose.yml:
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/usr/src/app/upload
# 如果怕修改原有照片,最后加上ro,否则删除ro
- ${PHOTOS_LOCATION}:/usr/src/app/external:ro
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
environment:
PUID: 0
PGID: 0
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
immich-machine-learning:
container_name: immich_machine_learning
# For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
# Example tag: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
# extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
# file: hwaccel.ml.yml
# service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
devices:
- /dev/dri:/dev/dri
volumes:
# 这个目录存放AI模型
- ${IMMICH_MODAL_CACHE}:/cache
environment:
PUID: 0
PGID: 0
env_file:
- .env
restart: always
healthcheck:
disable: false
redis:
container_name: immich_redis
image: docker.io/redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
healthcheck:
test: redis-cli ping || exit 1
restart: always
environment:
PUID: 0
PGID: 0
database:
container_name: immich_postgres
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
environment:
PUID: 0
PGID: 0
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
healthcheck:
test: >-
pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
--command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
echo "checksum failure count is $$Chksum";
[ "$$Chksum" = '0' ] || exit 1
interval: 5m
start_interval: 30s
start_period: 5m
command: >-
postgres
-c shared_preload_libraries=vectors.so
-c 'search_path="$$user", public, vectors'
-c logging_collector=on
-c max_wal_size=2GB
-c shared_buffers=512MB
-c wal_compression=on
restart: always
volumes:
model-cache:- 如果遇到外网同步、上传大文件失败,可以参考:openresty大文件上传失败解决方案
- 如果有命令行上传需求,使用cli登陆 后使用:
immich upload --skip-hash --ignore **/@eaDir/** --album-name "xx旅游" --recursive "/volume1/somedir"
talebook 、zlibrary远程下载
services:
talebook:
restart: always
image: talebook/talebook:latest
volumes:
- /mnt/media/talebookData:/data
ports:
- "6080:80"
- "6443:443"
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
- SSR=OFF
depends_on:
- douban-rs-api
# optional, for meta plugins
# please set "http://douban-rs-api" in settings
douban-rs-api:
restart: always
image: ghcr.nju.edu.cn/cxfksword/douban-api-rs
# 远程下载zlibrary书籍能力
download-server: # 服务名称
image: xlqdys/download-proxy # 使用的镜像名称
container_name: download-server # 容器名称
ports:
- "6081:8080" # 将容器的 8080 端口映射到主机的 8080 端口
volumes:
- /mnt/media/talebookData/books/imports:/app/downloads # 挂载宿主机的目录到容器内
environment:
- API_KEY=106
restart: always # 容器意外停止时自动重启