Info
一些好用的安卓 App 看这里
自用的一些开源服务整理,这里也给出了部分 docker 配置文件。
Update
- 2024-03:添加了 Miniflux
笔记
- memos:适合记录杂乱想法的小笔记。
- 缺点:
- 没有本地持久化存储的能力,不过这一点可以理解。
- 缺点:
version: "3.0"
services:
memos:
restart: always
image: neosmemo/memos:latest
container_name: memos
volumes:
- ./memos/:/var/opt/memos
ports:
- 127.0.0.1:5230:5230
代码托管
- Gitea:带 Action 的 Gitea 适合自己写一些小玩具。
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1001
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
- gitea-action:
version: "3.8"
services:
runner:
image: gitea/act_runner:nightly
restart: always
environment:
CONFIG_FILE: /config.yaml
GITEA_INSTANCE_URL:
GITEA_RUNNER_REGISTRATION_TOKEN:
GITEA_RUNNER_NAME:
GITEA_RUNNER_LABELS: ""
volumes:
- ./config.yaml:/config.yaml
- ./data:/data
- /var/run/docker.sock:/var/run/docker.sock
密码管理
- Vaultwarden:Bitwarden 非官方版,已经完全离不开了。
RSS 相关
- Miniflux:更轻量的 RSS 阅读器。
services:
miniflux:
image: miniflux/miniflux:latest
ports:
- "127.0.0.1:8081:8080"
depends_on:
db:
condition: service_healthy
environment:
- DATABASE_URL=postgres://miniflux:password@db/miniflux?sslmode=disable
- RUN_MIGRATIONS=1
- CREATE_ADMIN=1
- ADMIN_USERNAME=<your username>
- ADMIN_PASSWORD=<your password>
- BASE_URL=<your abse url>
db:
image: postgres:15
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=password
- POSTGRES_DB=miniflux
volumes:
- ./miniflux-db:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "miniflux"]
interval: 10s
start_period: 30s
FreshRSS:还算好用的 RSS 阅读器。(被 Miniflux 替代了)
version: "3"
services:
freshrss-app:
image: freshrss/freshrss:latest
container_name: freshrss-app
hostname: freshrss-app
restart: unless-stopped
ports:
- "127.0.0.1:8080:80"
volumes:
- ./data:/var/www/FreshRSS/data
- ./extensions:/var/www/FreshRSS/extensions
environment:
CRON_MIN: '*/20'
TZ: Asia/Shanghai
RSSHub:用官方的就好咯,没有太大需求。
网页存档
ArchiveBox:很吃资源,不是开箱即用的,很难用的样子,而且看上去更适合保存整个网站。wallabag:也不是很好用,但比 ArchiveBox 更好上手一些。例如奇安信的攻防社区抓取后的页面会很奇怪。
同步与备份
- Syncthing:一款让人爱不释手的软件,没钱买官方同步就只能用它啦。
version: "3"
services:
syncthing:
image: syncthing/syncthing
container_name: syncthing
hostname: my-syncthing
environment:
- PUID=1000
- PGID=1000
volumes:
- ./st-sync:/var/syncthing
ports:
- 127.0.0.1:8384:8384 # Web UI
- 22000:22000/tcp # TCP file transfers
- 22000:22000/udp # QUIC file transfers
- 21027:21027/udp # Receive local discovery broadcasts
restart: unless-stopped
网盘
version: '3.3'
services:
alist:
restart: always
volumes:
- './alist:/opt/alist/data'
ports:
- '127.0.0.1:5244:5244'
environment:
- PUID=0
- PGID=0
- UMASK=022
container_name: alist
image: 'xhofe/alist:latest'
画廊
- Immich:漂亮的画廊,完全可以作为 Google Photos 的替代品。
- 缺点
- 安卓客户端只能同步,不能上传单张图片(但是可以用网页端上传),网页端不能上传文件夹,只能通过 cli-tools 实现。
不能扫描已经存在的目录,目前通过 Read-only Gallery [Experimental] 勉强解决这个问题。- 已更新为 Libraries 功能,不过目前还不推荐这个方法。
- 默认的
docker-compose.yml
没有做数据库的持久化,一旦删除就只能重新配置了。 - 缺少 meta 信息编辑工具,大家在 [Feature]: Metadata Editor #1696 中讨论了各种方法,都不是很完美。
- 优点
- 好看,响应快。
- 注意事项
- 不给出 docker compose 配置文件了,去官网看吧。
- 缺点
对象存储
- minio:替代 R2,有备无患。
version: '3'
services:
minio:
image: minio/minio
ports:
- "9000:9000"
- "9001:9001"
volumes:
- ./minio_storage:/data
environment:
MINIO_ROOT_USER:
MINIO_ROOT_PASSWORD:
MINIO_SERVER_URL:
MINIO_BROWSER_REDIRECT_URL:
command: server --console-address ":9001" /data
通知
- Gotify:唯一的缺点是必须要保证安卓客户端的后台运行,不过还挺容易的。要是能接入各个 SDK 的 push 还不会拉起别的程序就好咯。
version: "3"
services:
gotify:
restart: always
image: gotify/server
ports:
- 127.0.0.1:8192:80
environment:
- GOTIFY_DEFAULTUSER_NAME=
- GOTIFY_DEFAULTUSER_PASS=
- TZ="Asia/Shanghai"
volumes:
- "./gotify_data:/app/data"
网络穿透
- headscale:Tailscale 的非官方版,比 Zerotier 稳定一些。
version: '3.1'
services:
headscale:
image: headscale/headscale:latest
container_name: headscale
volumes:
- ./config:/etc/headscale
- ./data:/var/lib/headscale
ports:
- 127.0.0.1:8090:8080
- 127.0.0.1:9090:9090
- 3478:3478
sysctls:
- net.ipv4.ip_forward=1
- net.ipv6.conf.all.forwarding=1
command: headscale serve
restart: unless-stopped
headscale-ui:
image: ghcr.io/gurucomputing/headscale-ui:latest
container_name: headscale-ui
ports:
- 127.0.0.1:8091:80
即时通信
- Mattermost:适合自己整理一些项目资料。Webhook 可以和 Gitea 联动,作为项目管理工具使用。
version: "2.4"
services:
mattermost:
ports:
- ${APP_PORT}:8065
- ${CALLS_PORT}:8443/udp
机器人
chatgpt-mirai-qq-bot:一键部署的 ChatGPT 机器人,适合给家人使用。- 目前 poe 官方迭代 API 太快,上游的 poe-api 也不更新了,我又懒得搞 New Bing 和 OpenAI。
version: '3.4'
services:
gocqhttp:
image: silicer/go-cqhttp:latest
restart: always
environment:
LANG: 'C.UTF-8'
volumes:
- ./gocqhttp/:/data/
chatgpt:
image: lss233/chatgpt-mirai-qq-bot:browser-version
restart: always
environment:
LANG: 'C.UTF-8'
ports:
- 8234:8234
volumes:
- ./config.cfg:/app/config.cfg
- ./data:/app/data
- ./presets:/app/presets
# - ./fonts:/app/fonts # 如果你想自定义字体,就解除注释
watchtower: # [可选] 自动更新
image: containrrr/watchtower
volumes: # 如果启动失败,请修改下面这条:
- /var/run/docker.sock:/var/run/docker.sock
wechatbot:配合 chatgpt-mirai-qq-bot 使用,不用网页端登录的微信 bot。- 它本质上是用了 Wechaty 这个项目,期待以后有人能做一个 All in one 的聊天客户端,我是不想用微信了。
version: '3.4'
services:
wechatbot:
image: lcjqyml/wechatbot:latest
restart: always
environment:
CHATBOT_PROXY:
volumes:
- ./config/memory-card.json:/app/my-wechat-bot.memory-card.json
远程控制
- RustDesk:不错的远控,上手也很容易。
version: '3'
networks:
rustdesk-net:
external: false
services:
hbbs:
container_name: hbbs
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
image: rustdesk/rustdesk-server:latest
command: hbbs -r <domain>:21117
volumes:
- ./data:/root
networks:
- rustdesk-net
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
ports:
- 21117:21117
- 21119:21119
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./data:/root
networks:
- rustdesk-net
restart: unless-stopped
局域网唤醒
- UpSnap:再也不用担心忘记打开家里电脑的事情了(但还需要知道怎样关闭屏幕)。
version: "3"
services:
upsnap:
container_name: upsnap
image: ghcr.io/seriousm4x/upsnap:4
network_mode: host
restart: unless-stopped
volumes:
- ./data:/app/pb_data
environment:
- TZ=Asia/Shanghai # Set container timezone for cron schedules
# - UPSNAP_INTERVAL=@every 10s # Sets the interval in which the devices are pinged
# - UPSNAP_SCAN_RANGE=192.168.1.0/24 # Scan range is used for device discovery on local network
# - UPSNAP_WEBSITE_TITLE=Custom name # Custom website title
# # dns is used for name resolution during network scan
# dns:
# - 192.18.0.1
# - 192.18.0.2
# # you can change the listen ip:port inside the container like this:
# entrypoint: /bin/sh -c "./upsnap serve --http 0.0.0.0:5000"
# healthcheck:
# test: curl -fs "http://localhost:5000/api/health" || exit 1
# interval: 10s
# # or install custom packages for shutdown
# entrypoint: /bin/sh -c "apk update && apk add --no-cache <YOUR_PACKAGE> && rm -rf /var/cache/apk/* && ./upsnap serve --http 0.0.0.0:8090"
容器管理
Potainer:感觉不如手动敲命令,总是忘了密码。
学习
docker-anki-sync-server:Deprecatedanki-sync-server-rs:Deprecated- 这俩都不支持最新版本的 anki 了。最新的可以用 johngong/anki-sync-server 这个 Docker 或者参考官方的文档,我是觉得暂时没有必要自建服务器,因为
- 官方的自建服务器是 anki 内置的,蛮大的不方便,自己打包 Docker 也有 500M;
- Community 的 anki-sync-server 都逐渐放弃支持了。
- 这俩都不支持最新版本的 anki 了。最新的可以用 johngong/anki-sync-server 这个 Docker 或者参考官方的文档,我是觉得暂时没有必要自建服务器,因为
服务监控
- Uptime Kuma:很好用,可以搭配 Gotify 做很多事情。
version: '3'
services:
kuma:
image: 'louislam/uptime-kuma:1'
restart: 'always'
ports:
- '127.0.0.1:17958:3001'
volumes:
- './uptimekuma_data:/app/data'
签到
qiandao:感觉没啥需要每日签到的,懒得薅羊毛了。
论坛与微博
评论系统
- Remark42:目前作为博客的评论系统。
- 配置很丰富,这里也不提供 docker compose 文件了。
- 只有国外常用的登录 API,不过也不是坏事。
测速
- speedtest:用于内网和外网测试。
- 一般只用于临时测速,可以通过
docker run --rm -e MODE=standalone -p 8081:80 -it adolfintel/speedtest
快速运行。
- 一般只用于临时测速,可以通过
version: "3"
services:
speedtest:
image: adolfintel/speedtest:latest
ports:
- "8081:80"
environment:
- MODE=standalone
tracker 服务器
opentracker:尝试一下失败哩,不会用 caddy 转发 UDP 流量
version: "3"
services:
opentracker:
image: lednerb/opentracker-docker
ports:
- "6969:6969/tcp"
- "6969:6969/udp"
代理服务器
- caddy:虽然性能比不上 nginx(以及 hacker news 上的评论),但是配置真的很方便,反正自己用流量不大,就它了。
- 不是很会用 docker 版本的
无线电 logbook
- Cloudlog:尚未搭建