Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
以下是我常用的Docker容器。
Transmission

Transmission是一款专业且功能强大的BT种子下载客户端,软件的体积小巧,操作简单,该软件中提供有非常先进的BT种子下载技术,帮助用户快速稳定的下载所需要的BT种子。只需要将BT种子的链接输入到来源栏中,软件就能够对种子内的所有文件进行下载,是一款非常实用的BT种子下载客户端。本次采用的是 chisbread大佬的快检版,辅种专用。
docker run -d \
--name=transmission \
-e PUID=0 \
-e PGID=0 \
-e TZ=Asia/Shanghai \
-e USER=xxxxx \
-e PASS=xxxxxx \
-v /root/docker/transmission/config:/config \
-v /root/downloads:/downloads \
-v /root/videos:/videos \
-v /root/docker/transmission/watch:/watch \
--network=host \
--restart always \
chisbread/transmission
Qbittorrent

qBittorrent是款小巧且功能非常强大的bt下载工具,其有着简洁明了的操作界面,使用也非常简单快捷,qBittorrent能够支持设置下载完成后退出本软件或关机,所以完全不用担心它什么时候能完成下载。qBittorrent是一个包括了简体中文的多国语言版本,符合各国网民的使用习惯,是一个良好的替代其他BitTorrent软件的客户端,非常实用!与Transmission相比上传下载速度更快,但是占用内存更多。
docker run -d \
--name=qbittorrent \
-e QB_WEBUI_PORT=8989 \
-e QB_EE_BIN=false \
-e UID=0 \
-e GID=0 \
-e UMASK=0022 \
-v /root/downloads:/downloads \
-v /root/temp:/temp \
-v /root/videos:/videos \
-v /root/docker/qbittorrent/config:/config \
--network=host \
--restart always \
johngong/qbittorrent:latest
Alist

alist是一款开源的将网盘及本地硬盘映射到网络端的软件,支持多种存储的目录文件列表程序,支持web 浏览与webdav, 后端基于gin,前端使用react。
docker run -d \
--name="alist" \
-p 5244:5244 \
-p 443:443 \
-e UID=0 \
-e GID=0 \
-e UMASK=0022 \
-v /root/docker/alist:/opt/alist/data \
-v /root/shenshang:/shenshang \
-v /root/downloads:/downloads \
-v /root/temp:/temp \
-v /root/documents:/documents \
-v /root/documents/alist:/opt/alist/data/temp \
-v /root/videos:/videos \
-v /root/docker:/docker \
-v /root/data:/data \
--restart always \
xhofe/alist:main
Emby

Emby(原名Media Browser)是一个主从式架构的媒体服务器软件,可以用来整理服务器上的视频和音频,并将音频和视频流式传输到客户端设备。
Emby服务器端支持Microsoft Windows、Linux、MacOS、FreeBSD,客户端支持HTML5网页,Android和IOS等移动操作系统,Roku、Amazon Fire TV、Chromecast和Apple TV等流媒体设备,LG智能电视和三星智能电视等智能电视,以及PlayStation3、PlayStation4、Xbox 360和Xbox One等游戏机。
Emby原本是大部分源代码是开源的,带有部分闭源工具,但是自从3.5.3版本开始变为闭源软件,Jellyfin为Emby开源分支基础上发展来的。
docker run \
--network=bridge \
-p '8096:8096' \
-p '18013:18013' \
-v /root/docker/emby:/config \
-v /root/videos/:/videos \
-e TZ="Asia/Shanghai" \
-e UID=0 \
-e GID=0 \
-e GIDLIST=0 \
--restart always \
--name emby \
-d lovechen/embyserver:beta
Cloudreve

Cloudreve 可以让您快速搭建起公私兼备的网盘系统。Cloudreve 在底层支持不同的云存储平台,用户在实际使用时无须关心物理存储方式。你可以使用 Cloudreve 搭建个人用网盘、文件分享系统,亦或是针对大小团体的公有云系统。
docker run \
--network=bridge \
-p '5212:5212' \
-v /root/documents/cloudreve/uploads:/cloudreve/uploads \
-v /root/docker/cloudreve/avatar:/cloudreve/avatar \
-v /root/downloads:/downloads \
--mount type=bind,source=/root/docker/cloudreve/conf.ini,target=/cloudreve/conf.ini \
--restart always \
--name cloudreve \
-d cloudreve/cloudreve:latest
Mt-photo

MT Photos是一款为Nas用户量身打造的照片管理系统。
通过AI技术,自动将您的照片整理、分类,包括但不限于时间、地点、人物、照片类型。
您可以在任何支持Docker的系统中运行它。
docker run -d \
--name="mt-photos" \
-v /root/docker/mt-photo/config:/config \
-v /root/docker/mt-photo/upload:/upload \
-v /root/shenshang/videos:/videos \
-v /root/shenshang/photos:/photos \
-v /root/downloads/pictures:/downloads \
-p 8063:8063 \
-e TZ="Asia/Shanghai" \
-e REDIS_HOST=xxxx \
-e REDIS_PORT=6379 \
-e REDIS_PASSWORD=xxxxx \
--restart="always" \
mtphotos/mt-photos
Vaultwarden

Bitwarden是一款自由且开源的密码管理服务,用户可在加密的保管库中存储敏感信息(例如网站登录凭据)。Bitwarden平台提供有多种客户端应用程序,包括网页用户界面、桌面应用,浏览器扩展、移动应用以及命令行界面。Bitwarden提供云端托管服务,并支持自行部署解决方案。
Vaultwarden 是一个使用 Rust 编写的非官方 Bitwarden 服务器实现,它与官方 Bitwarden 客户端兼容,对于不希望使用官方的占用大量资源的自托管部署而言,它是理想的选择。
docker run -d --name bw -p 8111:80 -v /root/docker/bw/:/data/ --restart always vaultwarden/server:latest
Mrdoc

MrDoc 是基于Python开发的在线文档系统。
MrDoc 适合作为个人和中小型团队的私有云文档、云笔记和知识管理工具,致力于成为优秀的私有化在线文档部署方案。
你可以简单粗暴地将 MrDoc 视为「可私有部署的语雀」和「可在线编辑文档的GitBook」。
docker run -d \
--name=mrdoc \
-p 10086:10086 \
-v /root/docker/mrdoc/config:/app/MrDoc/config \
-v /root/docker/mrdoc/media:/app/MrDoc/media \
--restart always \
jonnyan404/mrdoc-nginx:latest
Aria2

Aria2是一款自由、跨平台命令行界面的下载管理器,该软件根据GPLv2许可证进行分发。支持的下载协议有:HTTP、HTTPS、FTP、Bittorrent和Metalink。
不同于Wget这样的的命令行界面下载器,Aria2不仅支持BitTorrent,还能够从各种来源多路检索所请求的文件。包括HTTP,HTTPS,FTP和BitTorrent协议。aria2使用Metalink数据块的校验和自动查验BitTorrent下载的数据部分。
Aria2的另一个特性便是可以使用JSON-RPC和XML-RPC进行HTTP远程下载控制,JSON-RPC接口可通过WebSocket获得。
Aria2的初始版本仅支持FTP和HTTP协议,并有基于GTK+的图形用户界面(GUI),后来被取消。
docker run -d \
--name aria2-pro \
--restart always \
--log-opt max-size=1m \
--network host \
-e PUID=0 \
-e PGID=0 \
-e RPC_SECRET=xxxxx \
-e RPC_PORT=6800 \
-e LISTEN_PORT=6888 \
-v /root/docker/aria2:/config \
-v /root/downloads:/downloads \
p3terx/aria2-pro
UI界面:
docker run -d \
--name ariang \
--restart always \
--log-opt max-size=1m \
-p 6880:6880 \
p3terx/ariang
Joplin

Joplin是一款开源的笔记应用,支持同一账户多平台的同步,包括Windows、macOS、Linux、Android和iOS,满足了不同用户的需求。 他还支持Markdown格式,使得笔记排版更加灵活,同时支持插入图片、附件等多种媒体类型,不断更新的各种插件也能满足各种个性化的需求。
docker run -d --restart always --name joplin \
-p 22300:22300 \
-v /root/docker/joplin:/home/joplin/packages/server/logs \
-e APP_BASE_URL=https://word.shenshang.online/joplin/ \
-e DB_CLIENT=pg \
-e POSTGRES_PASSWORD=xxxxx \
-e POSTGRES_DATABASE=xxxxx \
-e POSTGRES_USER=xxxxx \
-e POSTGRES_PORT=5432 \
-e POSTGRES_HOST=xxxxx \
joplin/server:latest
Talebook

这是一个基于Calibre的简单的个人图书管理系统,支持在线阅读。主要特点是:
- 美观的界面:由于Calibre自带的网页太丑太难用,于是基于Vue,独立编写了新的界面,支持PC访问和手机浏览;
- 支持多用户:为了网友们更方便使用,开发了多用户功能,支持豆瓣(已废弃)、QQ、微博、Github等社交网站的登录;
- 支持在线阅读:借助Readium.js 库,支持了网页在线阅读电子书;
- 支持批量扫描导入书籍;
- 支持邮件推送:可方便推送到Kindle;
- 支持OPDS:可使用KyBooks等APP方便地读书;
- 支持一键安装,网页版初始化配置,轻松启动网站;
- 优化大书库时文件存放路径,可以按字母分类、或者文件名保持中文;
- 支持快捷更新书籍信息:支持从百度百科、豆瓣搜索并导入书籍基础信息;
- 支持私人模式:需要输入访问码,才能进入网站,便于小圈子分享网站;
docker run -d --name talebook -p 5433:80 -e puid=1000 -e guid=1000 -v /root/data/talebook:/data --restart always talebook/talebook
RustDesk

RustDesk 是一个强大的开源远程桌面软件,是中国开发者的作品,它使用 Rust 编程语言构建,提供安全、高效、跨平台的远程访问体验。可以说是目前全球最火的开源远程桌面软件了。
与 TeamViewer、ToDesk 等专有远程访问解决方案相比,RustDesk 作为一个开源软件,提供了几个显著的优势:
- RustDesk 完全免费使用,没有任何隐藏费用或订阅计划。
- 由于其开源特性,RustDesk 的代码是透明的,可以由社区审计,从而提供更高的安全性和可信度。
- RustDesk 使用 Rust 语言开发,从根本上确保了程序的内存安全和高性能。
HBBS:
docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v /root/docker/rustdesk/hbbs:/root -td --net=host rustdesk/rustdesk-server hbbs -r shenshang.online:21117
HBBR:
docker run --name hbbr -p 21117:21117 -p 21119:21119 -v /root/docker/rustdesk/hbbr:/root -td --net=host rustdesk/rustdesk-server hbbr
MoviePilot

MoviePilot 是NasTools作者的新项目,是一款Nas媒体库自动化管理工具,仅用于学习交流使用,请勿在国内的平台宣传此项目。
docker run -itd \
--name moviepilot \
--hostname moviepilot \
-p 3000:3000 \
-p 3001:3001 \
-v /root/docker/moviepilot/core:/moviepilot/.cache/ms-playwright \
-v /root/docker/qbittorrent/config/qBittorrent/data/BT_backup:/qb \
-v /root/temp:/temp \
-v /root/docker/transmission/config/torrents:/tr \
-v /root/videos:/videos \
-v /root/docker/moviepilot/config:/config \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-e 'NGINX_PORT=3000' \
-e 'PORT=3001' \
-e 'PUID=0' \
-e 'PGID=0' \
-e 'UMASK=000' \
-e 'TZ=Asia/Shanghai' \
-e 'AUTH_SITE=iyuu' \
-e 'IYUU_SIGN=xxxxx' \
-e 'SUPERUSER=xxxxx' \
-e 'API_TOKEN=moviepilot' \
-e 'MOVIEPILOT_AUTO_UPDATE=true' \
-e 'BIG_MEMORY_MODE=true' \
-e 'DOH_ENABLE=false' \
-e 'PLUGIN_MARKET=https://github.com/suraxiuxiu/MoviePilot-Plugins/,https://github.com/jxxghp/MoviePilot-Plugins/,https://github.com/thsrite/MoviePilot-Plugins/,https://github.com/honue/MoviePilot-Plugins/,https://github.com/InfinityPacer/MoviePilot-Plugins/,https://github.com/dandkong/MoviePilot-Plugins/,https://github.com/Aqr-K/MoviePilot-Plugins/,https://github.com/AnjoyLi/MoviePilot-Plugins/,https://github.com/WithdewHua/MoviePilot-Plugins/,https://github.com/HankunYu/MoviePilot-Plugins/,https://github.com/baozaodetudou/MoviePilot-Plugins/,https://github.com/almus2zhang/MoviePilot-Plugins/,https://github.com/Pixel-LH/MoviePilot-Plugins/,https://github.com/lightolly/MoviePilot-Plugins/,https://github.com/suraxiuxiu/MoviePilot-Plugins/,https://github.com/gxterry/MoviePilot-Plugins/,https://github.com/hotlcc/MoviePilot-Plugins-Third/,https://github.com/boeto/MoviePilot-Plugins/,https://github.com/xiangt920/MoviePilot-Plugins/,https://github.com/yubanmeiqin9048/MoviePilot-Plugins/,https://github.com/loongcheung/MoviePilot-Plugins/,https://github.com/xcehnz/MoviePilot-Plugins/,https://github.com/imaliang/MoviePilot-Plugins/' \
--restart always \
jxxghp/moviepilot:latest
Lsky Pro

Lsky Pro 是一个用于在线上传、管理图片的图床程序,中文名:兰空图床,你可以将它作为自己的云上相册,亦可以当作你的写作贴图库。
- 支持本地等多种第三方云储存 AWS S3、阿里云 OSS、腾讯云 COS、七牛云、又拍云、SFTP、FTP、WebDav、Minio
- 多种数据库驱动支持,MySQL 5.7+、PostgreSQL 9.6+、SQLite 3.8.8+、SQL Server 2017+
- 支持配置使用多种缓存驱动,Memcached、Redis、DynamoDB、等其他关系型数据库,默认以文件的方式缓存
- 多图上传、拖拽上传、粘贴上传、动态设置策略上传、复制、一键复制链接
- 强大的图片管理功能,瀑布流展示,支持鼠标右键、单选多选、重命名等操作
- 自由度极高的角色组配置,可以为每个组配置多个储存策略,同时储存策略可以配置多个角色组
- 可针对角色组设置上传文件、文件夹路径命名规则、上传频率限制、图片审核等功能
- 支持图片水印、文字水印、水印平铺、设置水印位置、X/y 轴偏移量设置、旋转角度等
- 支持通过接口上传、管理图片、管理相册
- 支持在线增量更新、跨版本更新
- 图片广场
- 线上交流
docker run -d \
--name lskypro \
--restart always \
-p 9080:80 \
-v /root/docker/lsky:/var/www/html \
coldpig/lskypro-docker:latest
Tailchat

Tailchat 是一款插件化易拓展的开源IM 应用。 可拓展架构赋予Tailchat 无限可能性。 面向企业与私域用户打造,高度自由的群组管理与定制化的面板展示可以让私域主能够更好的展示自己的作品,管理用户,打造自己的品牌与圈子。
- 注重隐私,只有被邀请的成员才能加入群组
- 防止陌生人,只有通过昵称 + 一串随机的数字才能添加好友
- 二维的群组空间,通过频道来分割不同的话题
- 高度自定义的群组空间, 通过分组和拖拽来创建独创的群组空间。同时可以通过更多的插件来增加更多的能力
- 可以严谨,也可以乐趣。通过插件的组合可以创造用于不同场景的 Tailchat。可以是面向娱乐,也可以是面向企业
- 后端微服务架构,已经为大规模部署做好了准备。不用担心用户量大了以后怎么办
admin.yml:
version: "3.3"
services:
# 后台应用
tailchat-admin:
build:
context: ../
image: tailchat
restart: always
env_file: docker-compose.env
…
docker-compose.yml:
version: "3.5"
services:
# Tailchat Core Services
service-core:
build:
context: .
image: tailchat
restart: always
env_file: docker-compose.env
environment:
SERVICES: core/gateway,core/user/*.service.js,core/group/*.service.js,core/chat/*.service.js,core/file,core/plugin/registry,core/config
PORT: 3000
depends_on:
- mongo
- redis
- minio
labels:
- "traefik.enable=true"
- "traefik.http.routers.api-gw.rule=PathPrefix(`/`)"
- "traefik.http.services.api-gw.loadbalancer.server.port=3000"
networks:
- internal
# Open Platform
service-openapi:
build:
context: .
image: tailchat
restart: always
env_file: docker-compose.env
environment:
SERVICES: openapi/app,openapi/bot,openapi/integration,openapi/oidc/oidc
OPENAPI_PORT: 3003
OPENAPI_UNDER_PROXY: "true"
depends_on:
- mongo
- redis
- minio
labels:
- "traefik.enable=true"
- "traefik.http.routers.openapi-oidc.rule=PathPrefix(`/open`)"
- "traefik.http.services.openapi-oidc.loadbalancer.server.port=3003"
networks:
- internal
# Plugin Service (All Plugins)
service-all-plugins:
build:
context: .
image: tailchat
restart: always
env_file: docker-compose.env
environment:
SERVICEDIR: plugins
depends_on:
- mongo
- redis
- minio
networks:
- internal
# Database
mongo:
image: mongo:4
restart: always
ports:
- 27017:27017
volumes:
- /root/docker/tailchat/mongo:/data/db
networks:
- internal
# Data cache and Transporter
redis:
image: redis:alpine
restart: always
networks:
- internal
# Persist Storage
minio:
image: minio/minio
restart: always
networks:
- internal
environment:
MINIO_ROOT_USER: xxxxx
MINIO_ROOT_PASSWORD: xxxxx
PUID: 1000
GUID: 1000
volumes:
- /root/data/minio:/data
command: minio server /data --console-address ":9001"
# Router
traefik:
image: traefik:v2.1
restart: always
command:
- "--api.insecure=true" # Don't do that in production!
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entryPoints.web.address=:80"
- "--entryPoints.web.forwardedHeaders.insecure" # Not good
ports:
- 11000:80
- 127.0.0.1:11001:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- internal
- default
networks:
internal:
name: tailchat-internal
volumes:
data:
storage:
livekit.yml:
version: "3.3"
services:
# livekit webhook receiver
tailchat-livekit-webhook-receiver:
build:
context: ../
image: tailchat
restart: always
env_file: docker-compose.env
environment:
LIVEKIT_WEBHOOK_PORT: 3000
depends_on:
- mongo
- redis
labels:
- "traefik.enable=true"
- "traefik.http.routers.livekit.rule=PathPrefix(`/livekit/webhook`)"
- "traefik.http.services.livekit.loadbalancer.server.port=3000"
networks:
- internal
command: node server/dist/plugins/com.msgbyte.livekit/webhook/index.js
docker-compose.env:
LOGGER=true
LOGLEVEL=info
SERVICEDIR=services
TRANSPORTER=redis://redis:6379
REDIS_URL=redis://redis:6379
MONGO_URL=mongodb://user:password@host:27017/tailchat
SECRET=xxxxx
启动命令:
docker compose -f docker-compose.yml -f admin.yml -f livekit.yml up -d
Uptime Kuma

Uptime Kuma 是一个类似 Uptime Robot 的站点监控工具,它可以自托管在自己的 Nas 或者 VPS 上,用来监控各类站点、数据库等。
- 监控类型:支持监控 HTTP(s) / TCP / HTTP(s) 关键字 / HTTP(s) Json 查询 / Ping / DNS 记录 / Push / Steam 游戏服务器 / Docker 容器 / 数据库(SQL Server、PostgreSQL、MySQL、MongoDB、Redis 等)
- 通知类型:支持 Telegram / Discord / Gotify / Slack / Pushover / Email / Webhook 等 90 多种通知方式
- 检测间隔:支持最低 20 秒的检测间隔
- 图表:支持以图表形式查看历史数据
docker run -d \
--restart=always \
-p 3011:3001 \
-v /root/docker/uptime-kuma:/app/data \
--name uptime-kuma
louislam/uptime-kuma
douban-api-rs
简单的豆瓣api,主要用于配合jellyfin-plugin-opendouban插件,在jellyfin中刮削电影信息
docker run -d
--name=douban-api-rs \
--restart=always \
-e DOUBAN_COOKIE=xxxxx" \
-p 5270:80 \
ghcr.io/cxfksword/douban-api-rs:latest
Gitea

Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来,几乎所有代码都已更改。
docker-compose.yml:
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- PGID=1000
- PUID=1000
- APP_NAME=xxxxx
- DOMAIN=xxxxx
- SSH_DOMAIN=xxxxx
- ROOT_URL=xxxxx
- DB_TYPE=mysql
- DB_HOST=xxxxx
- DB_NAME=xxxxx
- DB_USER=xxxxx
- DB_PASSWD=xxxxx
restart: always
networks:
- gitea
volumes:
- /root/data/gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3010:3000"
- "222:22"
启动命令:
docker compose up -d
Homepage

homepage 是现代、安全、高度可定制的应用程序仪表板,集成了超过 25 种服务和超过 15 种语言的翻译。可通过 YAML 文件轻松配置(或通过 docker 标签发现)。
docker-compose.yml:
version: '3.9'
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
ports:
- 3017:3000 #左侧端口可修改,如果有公网请一定要设置成比较少见的端口,避免内部服务泄露
volumes:
- ./config:/app/config
- ./logs:/logs
- ./icons:/app/public/icons
- ./images:/app/public/images
- /var/run/docker.sock:/var/run/docker.sock # (可选) Docker 配置
environment:
- PUID=1000
- PGID=1000
restart: always
启动命令:
docker compose up -d
SeAT

SeAT is a simple, EVE Online Corporation and API management tool. SeAT allows you to keep an eye on all things related to your corporation; from wallets, to mail, to assets for both characters and corporations.
docker-compose.yml:
services:
front:
image: ghcr.io/eveseat/seat:5
restart: always
command: web
volumes:
- "seat-storage:/var/www/seat/storage"
- ./packages:/var/www/seat/packages:ro # development only
env_file:
- .env
#depends_on:
#- cache
networks:
- seat-gateway
- seat-internal
logging:
driver: "json-file"
options:
max-size: "10Mb"
max-file: "5"
worker:
image: ghcr.io/eveseat/seat:5
restart: always
command: worker
volumes:
- "seat-storage:/var/www/seat/storage"
- ./packages:/var/www/seat/packages:ro # development only
env_file:
- .env
depends_on:
#- cache
- front
networks:
- seat-gateway
- seat-internal
logging:
driver: "json-file"
options:
max-size: "10Mb"
max-file: "5"
scheduler:
image: ghcr.io/eveseat/seat:5
restart: always
command: cron
volumes:
- "seat-storage:/var/www/seat/storage"
- ./packages:/var/www/seat/packages:ro # development only
env_file:
- .env
depends_on:
#- cache
- worker
networks:
- seat-gateway
- seat-internal
logging:
driver: "json-file"
options:
max-size: "10Mb"
max-file: "5"
#cache:
# image: redis:7-alpine
# restart: always
# networks:
# - seat-internal
# logging:
# driver: "json-file"
# options:
# max-size: "10Mb"
# max-file: "5"
volumes:
seat-storage:
networks:
seat-gateway:
seat-internal:
internal: true
# SeAT Docker Compose Configuration
# ---------------------------
# Proxy Section
# ---------------------------
# This section is only used with `docker-compose.proxy.yml`
# compose file.
# Port which will be bound to the host in order to be used
# for internal proxying
# This will not be used if using Traefik
#
# Valid value is any digit between `1` and `65535`
# Default: `8080`
PROXY_BACKEND_HTTP_PORT=8234
# ---------------------------
# Traefik Section
# ---------------------------
# This section is only used with `docker-compose.traefik.yml`
# compose file.
# Web server configuration.
# SeAT running in a docker-compose setup ships with Traefik
# as the default web server.
# In most cases, just configuring the domain and valid e-mail
# address will be all you need to do.
#
# For advanced users, if the default httpchallenge is not what
# you wanted, refer to the Traefik 2 docs here:
# https://docs.traefik.io/https/acme/#the-different-acme-challenges
TRAEFIK_HTTP_PORT=80 # Only used for ACME, SeAT won't listen here.
TRAEFIK_HTTPS_PORT=443
# Web server TLS.
#
# One of the amazing features of Traefik is easy-mode TLS config
# together with Let's Encrypt. Simply Enable automatic certificate
# renewals by uncommenting the cert resolver lines in the seat-web
# service and enter your email address below (ACME requirement).
TRAEFIK_ACME_EMAIL=you@domain.tld
# ---------------------------
# General Section
# ---------------------------
# SeAT Web Address
#
# The SEAT_DOMAIN value is the DNS hostname configuration for
# the SeAT User Interface. Setting this to a value of `seat.domain.tld`,
# means your installations web interface will be available at
# `seat.domain.tld`.
#
# When used with ACME setup - you need to use a valid domain name
# which you're own.
#
# Here is a non exhaustive list of registrar where you can purchase your domain
# OVH, Gandi, Cloudflare, Namecheap
SEAT_DOMAIN=xxxxx
# Application "debug" mode.
#
# For production installations, this should *always* be false.
# If you need to debug something, feel free to enable this and
# test. But, make sure you come back and disable it when you are done.
#
# Valid values are either `true` or `false`
# Default: `false`
APP_DEBUG=false
# Log level
#
# The LOG_LEVEL is disclosing the verbosity of logs.
# `error` used to be enough for most of the time in a production environment.
# However, you might sometimes need more details.
#
# Valid values are the following from the less to the more verbose.
# Every lower level is always include in the next one.
# Pay attention, the value is case sensitive.
#
# `emergency`, `alert`, `critical`, `error`, `warning`, `notice`, `info` and `debug`
# Default: `error`
LOG_LEVEL=error
# URL where your SeAT instance can be found from the Internet.
#
# This is the public address which can be used to reach your SeAT instance
# from the Internet.
#
# It **MUST** include scheme (either http or https)
# Do no forget to specify port at the end if you're using non standard one.
# Default: `https://${SEAT_DOMAIN}`
APP_URL=https://${SEAT_DOMAIN}
# The applications key.
# This key is used by anything that makes use of encryption.
# That includes encrypting specific values as well as cookies.
APP_KEY=hfrqJrL2mGGAMfTS2gAMinE6Zbof7S7S
# Application default locale
# If you need to change the default locale of the server for notifications you need to put the locale code here
# e.g. fr, en, ru, etc.
APP_LOCALE=en
# App Environment
APP_ENV=local
# App locale, used for setting the default language for the application
APP_LOCALE=en
# The PsySH directory
# This is the place where PsySH temporary files will be stored like command history, metadata files, etc...
XDG_CONFIG_HOME=/tmp
# ---------------------------
# Databases Section
# ---------------------------
DB_CONNECTION=mysql
DB_DATABASE=xxxxx
DB_USERNAME=xxxxx
DB_HOST=xxxxx
DB_PORT=xxxxx
DB_PASSWORD=xxxxx
# Redis
REDIS_HOST=xxxxx
REDIS_PORT=xxxxx
REDIS_PASSWORD=xxxxx
# ---------------------------
# Mail Section
# ---------------------------
MAIL_DRIVER=smtp
MAIL_HOST=xxxx
MAIL_PORT=25
MAIL_USERNAME=xxxxx
MAIL_PASSWORD=xxxxx
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=xxxxx
MAIL_FROM_NAME='SeAT Administrator'
# ---------------------------
# Eve Online Section
# ---------------------------
# This is a *required* setup step. Refer to the docs to learn how
# to get the correct values to enter here.
#
# https://docs.eveseat.net/docs/configuration/esi_configuration/
EVE_CLIENT_ID=xxxxx
EVE_CLIENT_SECRET=xxxxx
EVE_CALLBACK_URL=https://xxxxx/auth/eve/callback
# ---------------------------
# Plugins Section
# ---------------------------
# This is a list of the all of the third party plugins that you
# would like to install as part of SeAT. Package names should be
# comma seperated if multiple packages should be installed.
SEAT_PLUGINS=cryocaustik/seat-hr,cryptatech/seat-srp,cryptatech/seat-fitting,recursivetree/seat-transport
#SEAT_PLUGINS=vendor1/package,vendor2/package
# ---------------------------
# ESEYE Configuration Section
# ---------------------------
# This is an advanced setting. Understand the ramifications of change.
# The type of driver that eseye should use for the cache
# available values are file, redis
ESEYE_CACHE_DRIVER=redis
# When using the file driver, this is the name of the folder in seat/storage that will store the cache files
ESEYE_CACHE_STORAGE_PATH=eseye
# When using the redis driver, this is the name of the redis connection. If using 'cache', it will reuse the existing
# redis cache configuration found in seat/config/cache.php. It must be a configured connection
ESEYE_CACHE_CONNECTION=cache
ESEYE_CACHE_LOCK_CONNECTION=default
docker-compose.proxy.yml:
services:
front:
ports:
- "192.168.1.145:${PROXY_BACKEND_HTTP_PORT}:8080"
networks:
- seat-frontend
networks:
seat-frontend:
启动命令:
docker compose -f docker-compose.yml -f docker-compose.proxy.yml up -d
CookieCloud
CookieCloud是一个和自架服务器同步Cookie的小工具,可以将浏览器的Cookie及Local storage同步到手机和云端,它内置端对端加密,可设定同步时间间隔。
docker run -p=8016:8088 easychen/cookiecloud:latest
Halo

Halo 是一款现代化的个人独立博客系统,给习惯写博客的同学多一个选择。
docker-compose.yml:
version: "3"
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.18
restart: always
network_mode: "host"
volumes:
- /root/docker/halo:/root/.halo2
command:
# 修改为自己已有的 MySQL 配置
- --spring.r2dbc.url=xxxxx
- --spring.r2dbc.username=xxxxx
- --spring.r2dbc.password=xxxxx
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=xxxxx
# 端口号 默认8090
- --server.port=8090
meilisearch:
image: getmeili/meilisearch:v1.8
container_name: meilisearch
restart: always
network_mode: "host"
environment:
- MEILI_ENV=production
# 可以改成自己的密码,对长度有限制,不建议修改
- MEILI_MASTER_KEY=95d031f029c0f93289791d39f01a7f42a2211973
- MEILI_NO_ANALYTICS=true
artalk:
container_name: artalk
image: artalk/artalk-go:2.8.7
restart: always
ports:
- 23366:23366
volumes:
- /root/docker/artalk:/data
environment:
- TZ=Asia/Shanghai
- ATK_LOCALE=zh-CN
- ATK_SITE_DEFAULT=xxxx
- ATK_TRUSTED_DOMAINS=xxxxx
启动命令:
docker compose up -d