Info

一些好用的安卓 App 看这里

自用的一些开源服务整理,这里也给出了部分docker 配置文件。

Update

笔记

  • memos:适合记录杂乱想法的小笔记。
    • 缺点:
      • 没有本地持久化存储的能力,不过这一点可以理解。
docker-compose.yml
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 适合自己写一些小玩具。
docker-compose.yml
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:
docker-compose.yml
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 阅读器。
docker-compose.yml
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 替代了)
docker-compose.yml
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:一款让人爱不释手的软件,没钱买官方同步就只能用它啦。
docker-compose.yml
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

网盘

  • Cloudreve:之前看重了它可以连接 Onedrive,后来出了 Alist 就被完全替代了。
  • Alist:作为聚合网盘很好用,再也不用下载烦人的网盘 App 了。
docker-compose.yml
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 的替代品。
    • 缺点
      1. 安卓客户端只能同步,不能上传单张图片(但是可以用网页端上传),网页端不能上传文件夹,只能通过 cli-tools 实现。
      2. 不能扫描已经存在的目录,目前通过 Read-only Gallery [Experimental] 勉强解决这个问题。
        • 已更新为 Libraries 功能,不过目前还不推荐这个方法。
      3. 默认的 docker-compose.yml 没有做数据库的持久化,一旦删除就只能重新配置了。
      4. 缺少 meta 信息编辑工具,大家在 [Feature]: Metadata Editor #1696 中讨论了各种方法,都不是很完美。
    • 优点
      • 好看,响应快。
    • 注意事项
      • 需要取消配置 Docker 的 proxy,否则会 502
      • 可以通过在 docker-compose.yml 中配置 HTTP(S)_PROXY 下载机器学习模型,解决因为取消 Docker proxy 配置导致不能上 huggingface.co 下载模型的问题。
    • 不给出 docker compose 配置文件了,去官网看吧。

对象存储

  • minio:替代 R2,有备无患。
docker-compose.yml
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 还不会拉起别的程序就好咯。
docker-compose.yml
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 稳定一些。
docker-compose.yml
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 联动,作为项目管理工具使用。
docker-compose.yml
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。
docker-compose.yml
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 的聊天客户端,我是不想用微信了。
docker-compose.yml
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:不错的远控,上手也很容易。
docker-compose.yml
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:再也不用担心忘记打开家里电脑的事情了(但还需要知道怎样关闭屏幕)。
docker-compose.yml
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:Deprecated
  • anki-sync-server-rs:Deprecated
    • 这俩都不支持最新版本的 anki 了。最新的可以用 johngong/anki-sync-server 这个 Docker 或者参考官方的文档,我是觉得暂时没有必要自建服务器,因为
      1. 官方的自建服务器是 anki 内置的,蛮大的不方便,自己打包 Docker 也有 500M;
      2. Community 的 anki-sync-server 都逐渐放弃支持了。

服务监控

  • Uptime Kuma:很好用,可以搭配 Gotify 做很多事情。
docker-compose.yml
version: '3'
services:
  kuma:
    image: 'louislam/uptime-kuma:1'
    restart: 'always'
    ports:
      - '127.0.0.1:17958:3001'
    volumes:
      - './uptimekuma_data:/app/data'

签到

  • qiandao:感觉没啥需要每日签到的,懒得薅羊毛了。

论坛与微博

  • Discourse:很好看的论坛,至少现在没什么需求。
  • Mastodon:去中心化的微博,群魔乱舞懒得看了。

评论系统

  • Remark42:目前作为博客的评论系统。
    • 配置很丰富,这里也不提供 docker compose 文件了。
    • 只有国外常用的登录 API,不过也不是坏事。

测速

  • speedtest:用于内网和外网测试。
    • 一般只用于临时测速,可以通过 docker run --rm -e MODE=standalone -p 8081:80 -it adolfintel/speedtest 快速运行。
docker-compose.yml
version: "3"
 
services:
  speedtest:
    image: adolfintel/speedtest:latest
    ports:
      - "8081:80"
    environment:
      - MODE=standalone

tracker 服务器

  • opentracker尝试一下失败哩,不会用 caddy 转发 UDP 流量
docker-compose.yml
version: "3"
 
services:
  opentracker:
    image: lednerb/opentracker-docker
    ports:
      - "6969:6969/tcp"
      - "6969:6969/udp"

代理服务器

  • caddy:虽然性能比不上 nginx(以及 hacker news 上的评论),但是配置真的很方便,反正自己用流量不大,就它了。
    • 不是很会用 docker 版本的

无线电 logbook

翻译辅助

参考资料