docker

install

# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo groupadd docker
sudo usermod -aG docker $USER
sudo reboot

config

sudo vim /etc/docker/daemon.json
{
  "experimental": true,
  "proxies": {
    "http-proxy": "http://change-this-host-proxy",
    "https-proxy": "http://change-this-host-proxy"
  },
  "registry-mirrors": []
}

reload config

sudo systemctl daemon-reload
sudo systemctl restart docker

network

docker network create diana

cleanup logs

sudo sh -c 'truncate -s 0 /var/lib/docker/containers/*/*-json.log'

container folder

su
cd /var/lib/docker/containers/

# 如果需要查看大小
du -h --max-depth=1 ./ | sort -hr

show system storage

docker system df

show images storage

docker images

show container storage

docker container ls -s

metube

Web GUI for youtube-dl (using the yt-dlp fork) with playlist support. Allows you to download videos from YouTube and dozens of other sites.

docker run \
  --name=metube \
  --restart=always \
  --network=diana \
  -d \
  -p change-this:8081 \
  -v change-this:/downloads \
  -e TZ=Asia/Shanghai \
  -e http_proxy=http://clash:7890 \
  -e https_proxy=http://clash:7890 \
  ghcr.io/alexta69/metube:latest

bitmagnet-web

🧲 A modern BitTorrent indexer, powered by Bitmagnet - 一个更现代的磁力搜索列表程序,由 Bitmagnet 强力驱动

docker run \
  --name=bitmagnet-web \
  --restart=always \
  --network=diana \
  -d \
  -p change-this:3000 \
  -e TZ=Asia/Shanghai \
  -e POSTGRES_DB_URL=postgres://postgres:change-this-password@postgresql:5432/bitmagnet \
  journey0ad/bitmagnet-next-web:latest

immich

High performance self-hosted photo and video management solution.

docker run \
  --name=immich \
  --restart=always \
  --network=diana \
  -d \
  -p change-this:2283 \
  -v change-this-immich-folder:/data \
  -v /etc/localtime:/etc/localtime:ro \
  -v change-this-image-folder:/immich/media \
  -e TZ=Asia/Shanghai \
  -e DB_DATABASE_NAME=immich \
  -e DB_HOSTNAME=postgresql \
  -e DB_PORT=5432 \
  -e DB_USERNAME=postgres \
  -e DB_PASSWORD=change-this \
  -e DB_SSL_MODE=disable \
  -e REDIS_HOSTNAME=immich-redis \
  -e REDIS_PORT=6379 \
  -e REDIS_PASSWORD=change-this \
  ghcr.io/immich-app/immich-server:release

convertx

💾 Self-hosted online file converter. Supports 1000+ formats ⚙️

docker run \
  --name=convertx \
  --restart=always \
  --network=diana \
  -d \
  -p change-this:3000 \
  -v change-this:/app/data \
  -e TZ=Asia/Shanghai \
  -e HTTP_ALLOWED=true \
  -e ALLOW_UNAUTHENTICATED=true \
  -e ACCOUNT_REGISTRATION=false \
  ghcr.io/c4illin/convertx:latest

navidrome

🎧 Your Personal Streaming Service

docker run \
  --name=navidrome \
  --restart=always \
  --user $(id -u):$(id -g) \
  -d \
  -p change-this:4533 \
  -v change-this-music-folder:/music \
  -v change-this-navidrome-folder:/data \
  -e TZ=Asia/Shanghai \
  -e ND_LOGLEVEL=error \
  -e DefaultLanguage=zh-Hans \
  deluan/navidrome:latest

openlist

A new AList Fork to Anti Trust Crisis

mkdir openlist
sudo chown -R 1001:1001 openlist
docker run \
  --name=openlist \
  --restart=always \
  -d \
  -p change-this:5244 \
  -e UMASK=022 \
  -v change-this-openlist-folder:/opt/openlist/data \
  -v change-this-download-folder:/files/download \
  -v change-this-record-folder:/files/record \
  -v change-this-image-folder:/files/image \
  -v change-this-music-folder:/files/music \
  openlistteam/openlist:latest

linkding

Self-hosted bookmark manager that is designed be to be minimal, fast, and easy to set up using Docker.

docker run \
  --name=linkding \
  --restart=always \
  -d \
  -p change-this:9090 \
  -v change-this:/etc/linkding/data \
  -e TZ=Asia/Shanghai \
  sissbruecker/linkding:latest
docker exec -it linkding python manage.py createsuperuser --username=change-this --email=change-this

kms-server

docker run \
  --name=kms-server \
  --restart=always \
  -d \
  -p change-this:1688 \
  -e TZ=Asia/Shanghai \
  luodaoyi/kms-server:latest
slmgr /upk
slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX
slmgr /skms change-this-kms-url
slmgr /ato 
# or
irm https://get.activated.win | iex

watchtower

A process for automating Docker container base image updates.

docker run \
  --name=watchtower \
  --restart=always \
  --network=host \
  -d \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e TZ=Asia/Shanghai \
  -e http_proxy=http://127.0.0.1:7890 \
  -e https_proxy=http://127.0.0.1:7890 \
  -e WATCHTOWER_CLEANUP=true \
  -e WATCHTOWER_WARN_ON_HEAD_FAILURE=never \
  -e WATCHTOWER_DISABLE_CONTAINERS="" \
  nickfedor/watchtower:latest

# if run once
docker run \
  --rm \
  --network=host \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e TZ=Asia/Shanghai \
  -e http_proxy=http://127.0.0.1:7890 \
  -e https_proxy=http://127.0.0.1:7890 \
  -e WATCHTOWER_CLEANUP=true \
  -e WATCHTOWER_WARN_ON_HEAD_FAILURE=never \
  -e WATCHTOWER_DISABLE_CONTAINERS="" \
  nickfedor/watchtower:latest \
  --run-once

chrome

Deploy headless browsers in Docker. Run on our cloud or bring your own. Free for non-commercial uses.

docker run \
  -d \
  --name=chromium \
  --restart=always \
  --network=diana \
  -p change-this:3000 \
  -e TZ=Asia/Shanghai \
  ghcr.io/browserless/chromium:latest

napcat

Modern protocol-side framework based on NTQQ

docker run \
  -d \
  --name=napcat \
  --restart=always \
  --network=diana \
  -p change-this-admin-panel:6099 \
  -p change-this-ws-port:3000 \
  -e NAPCAT_GID=$(id -g) \
  -e NAPCAT_UID=$(id -u) \
  -e TZ=Asia/Shanghai \
  -v change-this-qq-folder:/app/.config/QQ \
  -v change-this-napcat-folder:/app/napcat/config \
  -v change-this-napcat-plugin-folder:/app/napcat/plugins \
  -v change-this-media-folder:/app/media \
  -v change-this-puppeteer-folder:/app/.cache/puppeteer \
  -v change-this-maim-folder:/MaiMBot/data \
  mlikiowa/napcat-docker:latest

mihomo

(fake)A simple Python Pydantic model for Honkai: Star Rail parsed data from the Mihomo API.

docker run \
  --name=mihomo \
  --restart=always \
  --network=diana \
  -d \
  -p change-this-proxy-port:7890 \
  -p change-this-mihomo-panel-port:9090 \
  -v change-this:/root/.config/mihomo \
  -e TZ=Asia/Shanghai \
  metacubex/mihomo:latest

# download to /root/.config/mihomo/ui
https://github.com/MetaCubeX/metacubexd

vscode

Visual Studio Code

docker run \
  -d \
  --name=code-server \
  --restart=always \
  --network=diana \
  -u "$(id -u):$(id -g)" \
  -p change-this:8080 \
  -v change-this-code-server-folder:/home/coder/.config \
  -v change-this-project-folder:/home/coder/project \
  -e TZ=Asia/Shanghai \
  -e "DOCKER_USER=$USER" \
  codercom/code-server:latest

pgadmin

pgAdmin is the most popular and feature rich Open Source administration and development platform for PostgreSQL, the most advanced Open Source database in the world.

mkdir pgadmin
chown -R 5050:5050 pgadmin
docker run \
  --name=pgadmin4 \
  --restart=always \
  --network=diana \
  -d \
  -p change-this:80 \
  -v change-this:/var/lib/pgadmin \
  -e TZ=Asia/Shanghai \
  -e 'PGADMIN_DEFAULT_EMAIL=change-this' \
  -e 'PGADMIN_DEFAULT_PASSWORD=change-this' \
  dpage/pgadmin4:latest

gopeed

A fast, modern download manager for HTTP, BitTorrent, Magnet, and ED2K. Cross-platform, built with Golang and Flutter.

docker run \
  -d \
  --name=gopeed \
  --restart=always \
  -p change-this:9999 \
  -e TZ=Asia/Shanghai \
  -e GOPEED_USERNAME="change-this" \
  -e GOPEED_PASSWORD="change-this" \
  -v change-this-download-folder:/app/Downloads \
  -v change-this-gopeed-folder:/app/storage \
  liwei2633/gopeed:latest -T api_key

portainer

Making Docker and Kubernetes management easy.

docker run \
  --name=portainer \
  --restart=always \
  -d \
  -e TZ=Asia/Shanghai \
  -p change-this:9000 \
  -v change-this:/data \
  -v /var/run/docker.sock:/var/run/docker.sock \
  portainer/portainer-ee:latest

unm

Revive unavailable songs for Netease Cloud Music (Refactored & Enhanced version)

docker run \
  --name=unm \
  --restart=always \
  --network=diana \
  -d \
  -p change-this:8080 \
  -e TZ=Asia/Shanghai \
  -e BLOCK_ADS=true \
  -e ENABLE_FLAC=true \
  -e ENABLE_LOCAL_VIP=true \
  -e SELECT_MAX_BR=true \
  -e DISABLE_UPGRADE_CHECK=true \
  unm-unblockneteasemusic:latest \
  -o kugou kuwo bodian bilibili

qbittorrent

qBittorrent BitTorrent client

docker run \
  --name=qbittorrent \
  --restart=always \
  --network=diana \
  --ulimit nofile=512:768 \
  -d \
  -e TZ=Asia/Shanghai \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Etc/UTC \
  -e WEBUI_PORT=2000 \
  -e TORRENTING_PORT=3001 \
  -p change-this-ui-port:2000 \
  -p change-this-torrenting-port:3001 \
  -v change-this-qbittorrent-folder:/config \
  -v change-this-download-folder:/downloads \
  linuxserver/qbittorrent:latest

nginx

NGINX (pronounced "engine x" or "en-jin-eks") is the world's most popular Web Server, high performance Load Balancer, Reverse Proxy, API Gateway and Content Cache.

docker run \
  --name=nginx \
  --restart=always \
  --network=diana \
  -d \
  -e TZ=Asia/Shanghai \
  -p change-this:80 \
  -p change-this:443 \
  -v change-this-nginx.conf:/etc/nginx/nginx.conf:ro \
  -v change-this-config.d-folder:/etc/nginx/conf.d \
  -v change-this-cert-folder:/data/cert/ \
  nginx:latest

posrgres

PostgreSQL is an advanced object-relational database management system that supports an extended subset of the SQL standard, including transactions, foreign keys, subqueries, triggers, user-defined types and functions. This distribution also contains C language bindings.

docker run \
  --name=postgres \
  --restart=always \
  --network=diana \
  -d \
  -p change-this:5432 \
  -v change-this:/var/lib/postgresql/data \
  -e TZ=Asia/Shanghai \
  -e POSTGRES_PASSWORD=change-this\
  -e PGDATA=/var/lib/postgresql/data/pgdata \
  postgres:latest
docker exec -it postgres /bin/bash
apt update
apt install postgresql-17-pgvector

redis

For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine.

docker run \
  --name=redis \
  --network=diana \
  --restart=always \
  -d \
  -e TZ=Asia/Shanghai \
  -v change-this:/data \
  -p change-this:6379 \
  redis:latest redis-server \
  --requirepass "change-this" \
  --appendonly yes

how-to-cook

程序员在家做饭方法指南。Programmer's guide about how to cook at home (Simplified Chinese only).

docker run \
  -d \
  --name how-to-cook \
  --restart=always \
  --network diana \
  -v change-this:/data \
  ghcr.nju.edu.cn/anduin2017/how-to-cook:latest

cook

🍲 好的,今天我们来做菜!OK, Let's Cook!

docker run \
  --name=cook \
  --restart=always \
  --network=diana \
  -d \
  yunyoujun/cook:latest

recorder

录播姬 | mikufans 生放送录制

docker run \
  --name=recorder \
  --restart=always \
  -d \
  -p change-this:2356 \
  -v change-this:/rec \
  -e TZ=Asia/Shanghai \
  -e BREC_HTTP_BASIC_USER=change-this \
  -e BREC_HTTP_BASIC_PASS=change-this \
  -e UMASK=022 \
  -e PUID=1000 \
  -e PGID=1000 \
  bililive/recorder:latest

let's encrypt

Let’s Encrypt is a free, automated, and open Certificate Authority (CA), run for the public’s benefit. It is a service provided by the Internet Security Research Group (ISRG).

docker run \
  --rm \
  --name=certbot \
  -it \
  -p 80:80 \
  -p 443:443 \
  -v change-this:/etc/letsencrypt \
  certbot/certbot:latest [certonly] [renew] [delete]

zircon

Legend of Mir 3

docker run \
  --name=zircon \
  --network=diana \
  -d \
  -u "0:0" \
  -e TZ=Asia/Shanghai \
  -p change-this-zircon-game-port:7000 \
  -p change-this-zircon-panel-port:7080 \
  -v change-this:/zircon/datas \
  -v /etc/localtime:/etc/localtime:ro \
  -v /etc/timezone:/etc/timezone:ro \
  livse/zirconlegend:latest

selfoss

multipurpose rss reader, live stream, mashup, aggregation web application

docker run \
  --name=selfoss \
  --restart=always \
  --network=diana \
  -d \
  -e TZ=Asia/Shanghai \
  -p change-this:8888 \
  -v change-this:/selfoss/data \
  rsprta/selfoss:latest

memos

Open-source, self-hosted note-taking tool built for quick capture. Markdown-native, lightweight, and fully yours.

docker run \
  --name=memos \
  --restart=always \
  -d \
  -p change-this:5230 \
  -v change-this:/var/opt/memos \
  neosmemo/memos:stable

halo

Halo 是一款强大易用的开源建站工具,从个人博客、知识库,到企业官网、在线商城,Halo 都能助您轻松实现,一站式满足您的多样化建站需求。

docker run \
  --name=halo \
  --restart=always \
  --network=diana \
  -d \
  -p change-this:8090 \
  -v change-this:/root/.halo2 \
  halohub/halo:2.23.2

thunder

从迅雷群晖套件中提取出来用于其他设备的迅雷远程下载服务程序。

docker run \
  --name=xunlei \
  -d \
  -e TZ=Asia/Shanghai \
  -p change-this:2345 \
  -v change-this-xunlei-folder:/xunlei/data \
  -v change-this-download-folder:/xunlei/downloads \
  cnk3x/xunlei:latest

baidunetdisk-docker

一款基于 Linuxserver.io 的 KasmVNC 基础镜像以及百度网盘官方客户端的 Docker 镜像,支持 amd64 和 arm64 架构。

docker run \
  --name=baidunetdisk-docker \
  -d \
  -p change-this:8080 \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -v change-this-baidunetdisk-docker-folder:/config \
  -v change-this-download-folder:/config/baidunetdiskdownload \
  docker.io/yucatovo/baidunetdisk-docker:latest

calibre-web

📚 Web app for browsing, reading and downloading eBooks stored in a Calibre database

docker run \
  --name=calibre-web \
  --restart=always \
  -d \
  -e TZ=Asia/Shanghai \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Etc/UTC \
  -e DOCKER_MODS=linuxserver/mods:universal-calibre \
  -p change-this:8083 \
  -v change-this-calibre-web-folder:/config \
  -v change-this-book-folder:/books \
  lscr.io/linuxserver/calibre-web:latest

radarr

Movie organizer/manager for usenet and torrent users.

docker run \
  --name=radarr \
  --restart=always \
  --network=diana \
  -d \
  -e TZ=Asia/Shanghai \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Etc/UTC \
  -p change-this:7878 \
  -v change-this-radarr-folder:/config \
  -v change-this-movies-folder:/movies \
  -v change-this-download-folder:/downloads \
  linuxserver/radarr:latest

splayer

🎵 A cross-platform music player with Jellyfin / Navidrome / Emby media server support, word-by-word lyrics, desktop & taskbar lyrics, cloud music drive, local library management, audio spectrum visualization and mobile-friendly UI. 简约的跨平台音乐播放器,支持逐字歌词、桌面歌词、任务栏歌词、云盘音乐、本地音乐管理及流媒体播放

docker run \
  --name=splayer \
  --restart=always \
  -d \
  -e TZ=Asia/Shanghai \
  -p change-this:25884 \
  imsyy/splayer:latest

bitmagnet

A self-hosted BitTorrent indexer, DHT crawler, content classifier and torrent search engine with web UI, GraphQL API and Servarr stack integration.

services:
  bitmagnet:
    image: ghcr.io/bitmagnet-io/bitmagnet:latest
    container_name: bitmagnet
    ulimits:
      nofile:
        soft: 512
        hard: 768
    ports:
      - "change-this-bitmagnet-panel-port:3333"
      - "change-this-bitmagnet-dht-port:3334"
    restart: always
    environment:
      - POSTGRES_HOST=postgresql
      - POSTGRES_PASSWORD=change-this
      - POSTGRES_PORT=5432
      - POSTGRES_NAME=bitmagnet
      - POSTGRES_USER=postgres
      - TMDB_API_KEY=change-this
      - TMDB_ENABLED=false
    command:
      - worker
      - run
      - --keys=http_server
      - --keys=queue_server
      - --keys=dht_crawler
    networks:
      - diana
networks:
  diana:
    name: diana
    external: true

maim

MaiSaka,基于LLM的智能体,一个致力于了解你,并以真实人类的风格进行交互的数字生命,她不追求完美,她不追求高效,但追求亲切和真实。

services:
  maim-bot-adapters:
    container_name: maim-bot-adapters
    image: unclas/maimbot-adapter:latest
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./docker-config/adapters/config.toml:/adapters/config.toml # 持久化adapters配置文件
      - ./data/adapters:/adapters/data # adapters 数据持久化
    restart: always
    networks:
      - diana

  maim-bot-core:
    container_name: maim-bot-core
    image: sengokucola/maibot:latest
    environment:
      - TZ=Asia/Shanghai
      - EULA_AGREE=1b662741904d7155d1ce1c00b3530d0d # 同意EULA
      - PRIVACY_AGREE=9943b855e72199d0f5016ea39052f1b6 # 同意EULA
    ports:
      - "change-this:8001" # webui端口
    volumes:
      - ./docker-config/mmc/.env:/MaiMBot/.env # 持久化env配置文件
      - ./docker-config/mmc:/MaiMBot/config # 持久化bot配置文件
      - ./docker-config/adapters:/MaiMBot/adapters-config # adapter配置文件夹映射
      - ./data/MaiMBot/maibot_statistics.html:/MaiMBot/maibot_statistics.html #统计数据输出
      - ./data/MaiMBot:/MaiMBot/data # 共享目录
      - ./data/MaiMBot/plugins:/MaiMBot/plugins # 插件目录
      - ./data/MaiMBot/logs:/MaiMBot/logs # 日志目录
    restart: always
    networks:
      - diana

  maim-bot-chat2db:
    image: chat2db/chat2db:latest
    container_name: maim-bot-chat2db
    restart: always
    ports:
      - "change-this:10824"
    volumes:
      - ./data/MaiMBot:/data/MaiMBot
    networks:
      - diana

networks:
  diana:
    name: diana
    external: true

rsshub

🧡 Everything is RSSible

services:
  rsshub:
    image: diygod/rsshub
    container_name: rsshub
    restart: always
    ports:
      - "change-this:1200"
    environment:
      NODE_ENV: production
      CACHE_TYPE: redis
      REDIS_URL: "redis://:change-this-password@change-this-redis-url:6379/"
      PUPPETEER_WS_ENDPOINT: "ws://browserless:3000"
      PUPPETEER_REAL_BROWSER_SERVICE: 'http://real-browser:3000'
      BILIBILI_COOKIE_change-this: ""
    networks:
      - diana
    depends_on:
      - redis
      - browserless
        
  real-browser:
    image: ghcr.io/hyoban/puppeteer-real-browser-hono
    container_name: real-browser
    restart: always
    networks:
      - diana
    ports:
      - 'change-this:3000'

  browserless:
    image: browserless/chrome
    container_name: browserless
    restart: always
    ports:
      - 'change-this:3000'
    ulimits:
      core:
        hard: 0
        soft: 0
    networks:
      - diana

  redis:
    image: redis:latest
    restart: always
    container_name: rsshub-redis
    ports:
      - 'change-this:6379'
    volumes:
      - change-this:/data

networks:
  diana:
    name: diana
    external: true

tiny-rdm

Tiny RDM (Tiny Redis Desktop Manager) - A modern, colorful, super lightweight Redis GUI client for Mac, Windows, and Linux. It also provides a web version that can be deployed via Docker.

docker run \
  -d \
  --name tinyrdm \
  --restart=always \
  --network=diana \
  -p change-this:8086 \
  -e ADMIN_USERNAME=change-this \
  -e ADMIN_PASSWORD=change-this \
  -v change-this:/app/tinyrdm \
  ghcr.io/tiny-craft/tiny-rdm:latest