记录了家庭私有服务中最常用的项目部署教程。
1. 1Panel & KPanel
1.1 1Panel
服务器管理面板,项目主页看这里。
一键安装脚本:
sudo bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"1.2 KPanel
Kejilion 服务器管理平台,项目主页看这里。
一键安装脚本:
sudo bash <(curl -fsSL https://kejilion.sh) app kpanel2. Sun-Panel
一个NAS、服务器导航面板、简易docker管理器、Homepage、浏览器首页。项目首页看这里。
services:
sun-panel:
image: 'hslr/sun-panel:latest'
container_name: sun-panel
volumes:
- /opt/sunpanel/conf:/app/conf
- /opt/sunpanel/uploads:/app/uploads
- /opt/sunpanel/database:/app/database
- /var/run/docker.sock:/var/run/docker.sock
# - ./runtime:/app/runtime
ports:
- 3002:3002
restart: always3. Vaultwarden
一个密码管理器。项目首页看这里。
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://pass.fmzhong.top"
volumes:
- /opt/vaultwarden/vw-data/:/data/
ports:
- 2608:804. Pansou
全网资源一站式搜索。项目主页看这里。
services:
pansou:
image: ghcr.io/fish2018/pansou-web:latest
container_name: pansou-app
labels:
- "autoheal=true" # 标记此容器允许被autoheal重启
ports:
- "8088:80"
dns:
- 223.5.5.5
- 114.114.114.114
environment:
# 基础配置
- DOMAIN=localhost
- PANSOU_PORT=8888
- PANSOU_HOST=127.0.0.1
# 数据目录配置(统一在/app/data下)
- CACHE_PATH=/app/data/cache
- LOG_PATH=/app/data/logs
# 插件配置(已更新为最新官方列表,包含修复和新增插件)
- ENABLED_PLUGINS=dyyjpro,duoduo,djgou,feikuai,gaoqing888,gying,hdmoli,haitunsou,hunhepan,ikantv,jutoushe,kkv,dy4k,libvio,lingjisp,lou1,melost,meitizy,miosou,nyaa,ouge,panlian,pansearch,qqpd,quark4k,quarksoo,quarktv,qupanshe,sousou,thepiratebay,ting77,wanou,weibo,xb6v,xiaokupan,xiaozhang,xiaoyu,yingso,yulinshufa,yunso,yunsou,zlxapp,zxzj
# Telegram频道配置已删除,使用镜像内置的最新频道列表
# 代理配置(国内网络必须取消注释,并将IP改为宿主机局域网IP)
- PROXY=socks5://user:password@192.168.1.3:7891
# 性能配置(镜像已包含默认值,如需调整可取消注释)
# - CACHE_ENABLED=true
# - CACHE_TTL=60
# - MAX_CONCURRENCY=200
# - MAX_PAGES=30
# 健康检查配置(容器内部监控)
- HEALTH_CHECK_INTERVAL=30 # 后端服务健康检查间隔(秒)
- HEALTH_CHECK_TIMEOUT=10 # 健康检查超时时间(秒)
- HEALTH_CHECK_RETRIES=3 # 失败重试次数
# 认证配置(可选,默认不启用)
# - AUTH_ENABLED=true
# - AUTH_USERS=admin:admin123,user:pass456
# - AUTH_TOKEN_EXPIRY=24
# - AUTH_JWT_SECRET=your-secret-key-here
volumes:
# 数据持久化(统一挂载/app/data,包含缓存、日志、SSL证书等所有数据)
- pansou-data:/app/data
# 如果需要从宿主机挂载SSL证书,可以使用:
# - ./ssl:/app/data/ssl
restart: unless-stopped
# 自动健康检查和重启服务(容器级别监控)
autoheal:
image: willfarrell/autoheal:latest
container_name: pansou-autoheal
restart: always
environment:
- AUTOHEAL_CONTAINER_LABEL=autoheal # 只监控带有autoheal标签的容器
- AUTOHEAL_INTERVAL=30 # 每30秒检查一次容器健康状态
- AUTOHEAL_START_PERIOD=60 # 启动后60秒开始检查
- AUTOHEAL_DEFAULT_STOP_TIMEOUT=10 # 停止容器的超时时间
volumes:
- /var/run/docker.sock:/var/run/docker.sock
volumes:
pansou-data:
driver: local5. Clouddrive2
网盘聚合。项目主页看这里。
在 Docker 服务中启用 MountFlags:
sudo mkdir -p /etc/systemd/system/docker.service.d/
sudo cat <<EOF > /etc/systemd/system/docker.service.d/clear_mount_propagation_flags.conf
[Service]
MountFlags=shared
EOF
sudo systemctl restart docker.serviceservices:
cloudnas:
image: cloudnas/clouddrive2
container_name: clouddrive2
environment:
- TZ=Asia/Shanghai
- CLOUDDRIVE_HOME=/Config
volumes:
- /mnt/CloudNAS:/CloudNAS:shared
- /opt/clouddrive2/config:/Config
- /mnt/sata/media:/media:shared #optional media path of host
devices:
- /dev/fuse:/dev/fuse
restart: unless-stopped
pid: "host"
privileged: true
network_mode: "host"6. Openlist
另一个网盘聚合。项目主页看这里。
6.1 一键脚本安装
curl -fsSL https://res.oplist.org.cn/script/v4.sh > install-openlist-v4.sh && sudo bash install-openlist-v4.sh6.2 Docker Compose 安装
services:
openlist:
image: 'openlistteam/openlist:latest'
container_name: openlist
user: '0:0' # Please replace `0:0` with the actual user ID and group ID you want to use to run OpenList.
volumes:
- '/opt/openlist/data:/opt/openlist/data'
ports:
- '5244:5244'
environment:
- UMASK=022
restart: unless-stopped7. immich
高性能的照片和视频自托管解决方案。项目主页看这里。
mkdir ./immich-app
cd ./immich-app
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env修改 .env
# You can find documentation for all the supported env variables at https://docs.immich.app/install/environment-variables
# The location where your uploaded files are stored
UPLOAD_LOCATION=/mnt/sata/photos/library
# The location where your database files are stored. Network shares are not supported for the database
DB_DATA_LOCATION=./postgres
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
#TZ=Etc/UTC
TZ=Asia/Shanghai
# The Immich version to use. You can pin this to a specific version like "v2.1.0"
IMMICH_VERSION=v3
# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=YourPassword
# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich8. Navidrome
开源音乐库服务后端。项目主页看这里。
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
user: 1000:1000 # must own the data folder and be able to read music folder(s). See Permissions below
ports:
- "4533:4533"
restart: unless-stopped
environment:
# Optional: put your config options customization here. Examples:
ND_LOGLEVEL: debug
volumes:
- "/opt/navidrome/data:/data"
- "/mnt/sata/music:/music:ro"9. SmartStrm
媒体库 STRM 文件生成工具。项目主页看这里。
name: smartstrm
services:
smartstrm:
image: cp0204/smartstrm:latest
container_name: smartstrm
restart: unless-stopped
network_mode: host
volumes:
- /yourpath/smartstrm/config:/app/config # 挂载配置目录
- /yourpath/smartstrm/logs:/app/logs # 挂载日志目录,可选
- /yourpath/smartstrm/strm:/strm # 挂载 STRM 生成目录
# 以上 /yourpath 改为你实际存放配置的路径
environment:
- PORT=8024 # 管理端口,可选
- ADMIN_USERNAME=admin # 管理用户名
- ADMIN_PASSWORD=admin123 # 管理用户密码10. Go-Music-dl
音乐搜索与下载工具。项目主页看这里。
services:
music-dl:
image: guohuiyuan/go-music-dl:latest
container_name: music-dl
restart: unless-stopped
user: "1000:1000" # 用户身份运行
ports:
- "8780:8780"
volumes:
- /opt/music-dl/data:/home/appuser/data # 配置目录
- /mnt/sata/music:/home/appuser/data/downloads # 下载目录
environment:
- TZ=Asia/Shanghai
command: [ "./music-dl", "web", "--port", "8780", "--no-browser" ]11. Leelaa-Reader
有声书。项目主页看这里。
services:
leelaa-reader:
image: leedaisen/leelaa-reader-server:latest
container_name: leelaa-reader
ports:
- "8686:8686"
volumes:
- ./data:/data
environment:
TZ: Asia/Shanghai
# 可选:首次初始化管理员密码。不填写时会自动生成,并写入 /data/password.txt。
# DEFAULT_ADMIN_PASSWORD: 请设置强密码
restart: unless-stopped12. Jellyfin
影音媒体中心。项目主页看这里。
services:
jellyfin:
container_name: jellyfin
image: jellyfin/jellyfin:latest
restart: always
user: "1000:1000"
network_mode: host
environment:
- TZ=Asia/Shanghai
volumes:
- "/opt/jellyfin/data/config:/config"
- "/opt/jellyfin/cache:/cache"
- "/mnt/sata/media:/media"
- "/mnt/sata/strm:/strm"13. Halo
个人博客。项目主页看这里。
services:
halo:
image: halohub/halo-pro:latest
container_name: halo
user: "1000:1000"
restart: unless-stopped
mem_limit: 1g
memswap_limit: 1g
depends_on:
halodb:
condition: service_healthy
networks:
- halo_network
ports:
- "8090:8090"
volumes:
- /opt/halo/halo2:/halo2
environment:
# - JVM_OPTS=-Xmx256m -Xms256m
- JAVA_OPTS=-Xms256m -Xmx512m -XX:MaxMetaspaceSize=192m
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
- --spring.r2dbc.password=dabasepassword
- --spring.sql.init.platform=mysql
- --halo.external-url=http://www.fmzhong.top/
- --halo.work-dir=/halo2
links:
- halodb
halodb:
image: mysql:8.1.0
container_name: halodb
restart: unless-stopped
mem_limit: 1g
memswap_limit: 1g
networks:
- halo_network
command:
- --default-authentication-plugin=caching_sha2_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
- --innodb-buffer-pool-size=256M
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
- ./mysqsl-conf/my.cnf:/etc/mysql/conf.d/my.cnf:ro
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
- MYSQL_ROOT_PASSWORD=dabasepassword
- MYSQL_DATABASE=halo
networks:
halo_network:
driver: bridge14. Aria2
下载利器。项目主页看这里。
services:
Aria2-Pro:
container_name: aria2-pro
image: p3terx/aria2-pro
environment:
- PUID=1000
- PGID=1000
- UMASK_SET=022
- RPC_SECRET=password
- RPC_PORT=6800
- LISTEN_PORT=6888
- DISK_CACHE=64M
- IPV6_MODE=false
- UPDATE_TRACKERS=true
- CUSTOM_TRACKER_URL=
- TZ=Asia/Shanghai
volumes:
- ${PWD}/config:/config
- /mnt/sata/downloads:/downloads
# If you use host network mode, then no port mapping is required.
# This is the easiest way to use IPv6 networks.
network_mode: host
# network_mode: bridge
# ports:
# - 6800:6800
# - 6888:6888
# - 6888:6888/udp
restart: unless-stopped
# Since Aria2 will continue to generate logs, limit the log size to 1M to prevent your hard disk from running out of space.
logging:
driver: json-file
options:
max-size: 1m
# AriaNg is just a static web page, usually you only need to deploy on a single host.
AriaNg:
container_name: ariang
image: p3terx/ariang
command: --port 6880 --ipv6
network_mode: host
# network_mode: bridge
# ports:
# - 6880:6880
restart: unless-stopped
logging:
driver: json-file
options:
max-size: 1m15. Lucky
项目主页看这里。
docker run -d --name lucky --restart=always --net=host gdy666/lucky16. Siyuan
本地优先的个人知识管理系统。项目主页看这里。
services:
siyuan:
image: b3log/siyuan:latest
container_name: siyuan
restart: unless-stopped
ports:
- "6806:6806"
environment:
TZ: Asia/Shanghai
PUID: "0"
PGID: "0"
SIYUAN_LANG: zh-CN
SIYUAN_ACCESS_AUTH_CODE: loginnet
volumes:
- /opt/siyuan/workspace:/siyuan/workspace
- /opt/siyuan/home:/home/siyuan
command:
- serve
- --workspace=/siyuan/workspace
- --accessAuthCode=password17. Openwrt
一个运行在 docker 中的 openwrt。项目主页看这里。
docker run -d \
--name openwrt \
--restart always \
--network macnet \
--ip 192.168.1.3 \
--cap-add NET_ADMIN \
--cap-add NET_RAW \
--cap-add SYS_MODULE \
registry.cn-hangzhou.aliyuncs.com/zzsrv/openwrt:latest \
/sbin/init部署后进入容器修改 IP。
docker exec -it openwrt bash
vi /etc/config/network 18. Syncthing
文件同步工具。项目主页看这里。
services:
syncthing:
image: syncthing/syncthing
container_name: syncthing
hostname: my-syncthing
environment:
- PUID=1000
- PGID=1000
- STGUIADDRESS=
volumes:
- /wherever/st-sync:/var/syncthing
network_mode: host
restart: unless-stopped
healthcheck:
test: curl -fkLsS -m 2 127.0.0.1:8384/rest/noauth/health | grep -o --color=never OK || exit 1
interval: 1m
timeout: 10s
retries: 3
19. 小雅
影视全家桶。项目主页看这里。
一键安装脚本:
bash -c "$(curl --insecure -fsSL https://ddsrem.com/xiaoya_install.sh)"
# 其他备选
bash <(curl --insecure -fsSL https://ddsrem.com/xiaoya/all_in_one.sh)
bash <(curl --insecure -fsSL https://fastly.jsdelivr.net/gh/xiaoyaDev/xiaoya-alist@latest/all_in_one.sh)
bash <(curl --insecure -fsSL https://raw.githubusercontent.com/xiaoyaDev/xiaoya-alist/master/all_in_one.sh)
bash -c "$(curl --insecure -fsSL https://fastly.jsdelivr.net/gh/xiaoyaDev/xiaoya-alist@latest/main.sh)"
bash -c "$(curl --insecure -fsSL https://raw.githubusercontent.com/xiaoyaDev/xiaoya-alist/master/main.sh)"20. Hubproxy
Github 和 Docker 加速代理服务。项目主页看这里。
docker run -d \
--name hubproxy \
-p 5000:5000 \
--restart always \
ghcr.io/sky22333/hubproxy
21. IT-Tools
IT 和 服务器管理工具集合。项目主页看这里。
docker run -d --name it-tools --restart unless-stopped -p 8064:80 corentinth/it-tools:latest
22. Daed
大鹅,透明代理。项目主页看这里。
Docker Compose
# docker-compose.yml
services:
daed:
image: ghcr.io/daeuniverse/daed
container_name: daed
privileged: true
network_mode: host
pid: host
restart: always
volumes:
- /sys:/sys
- /etc/daed:/etc/daed
Linux Distribution Packages
# Download the latest .deb package
wget -P /tmp https://github.com/daeuniverse/daed/releases/latest/download/installer-daed-linux-$(arch).deb
# Install
sudo dpkg -i /tmp/installer-daed-linux-$(arch).deb
# Start and enable service
sudo systemctl enable --now daed
评论