GeoIP-Update

docker run -itd \
  --name geoip-update \
  -e GEOIPUPDATE_ACCOUNT_ID=<ACCOUNT_ID> \
  -e GEOIPUPDATE_LICENSE_KEY=<LICENSE_KEY> \
  -e GEOIPUPDATE_EDITION_IDS=GeoLite2-Country \
  -e GEOIPUPDATE_FREQUENCY=24 \
  -v /etc/caddy/GeoIP:/usr/share/GeoIP \
  --restart=unless-stopped \
  maxmindinc/geoipupdate

qBittorrent

docker run -itd \
  --name=qbittorrent \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai\
  -e WEBUI_PORT=9090 \
  -p 9090:9090 \
  -p 9091:6881 \
  -p 9091:6881/udp \
  -v /data/docker/qbittorrent:/config \
  -v /data/downloads/qBittorrent:/downloads \
  --restart unless-stopped \
  lscr.io/linuxserver/qbittorrent:latest

Portainer

docker run -itd \
  --name portainer-ce \
  --network=bridge \
  --restart=always \
  -p 9000:9000 \
  --privileged \
  -v /var/run/docker.sock:/var/run/docker.sock \
  portainer/portainer-ce

DDNS-GO

docker run --itd \
  --name=ddns-go \
  --volume=/data/docker/ddns-go:/root \
  --network=host \
  --restart=always \
  jeessy/ddns-go

Nginx-Proxy-Manager

vim docker-compose.yml
-----
version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - '8443:443'
    volumes:
      - /data/docker/nginx-proxy-manager:/data
      - /data/docker/nginx-proxy-manager/letsencrypt:/etc/letsencrypt
-----

Uptime-Kuma

docker run -itd \
  --name=uptime-kuma \
  --volume=/data/docker/uptime-kuma:/app/data \
  -p 3001:3001 \
  -e UPTIME_KUMA_WS_ORIGIN_CHECK="bypass" \
  --restart=always \
  louislam/uptime-kuma:1

Vaultwarden

docker run -itd \
  --name=vaultwarden \
  --volume=/data/docker/vaultwarden:/data/ \
  -p 9001:80 \
  --restart=unless-stopped \
  vaultwarden/server:latest

Memos

docker run -itd \
  --name memos \
  -p 9090:5230 \
  -v /data/docker/memos/:/var/opt/memos \
  ghcr.io/usememos/memos:latest
vim docker-compose.yml
-----
version: "3"  
services:  
 navidrome:  
   image: deluan/navidrome:latest  
   container_name: navidrome  
   ports:  
     - "9070:4533"  
   restart: unless-stopped  
   environment:  
     ND_SCANSCHEDULE: 24h  
     ND_LOGLEVEL: info     
     ND_SESSIONTIMEOUT: 72h  
     ND_COVERJPEGQUALITY: 100  
     ND_DEFAULTLANGUAGE: zh-Hans  
     ND_DEFAULTTHEME: Light  
     ND_ENABLESHARING: true  
     ND_ENABLESTARRATING: false  
     ND_ENABLETRANSCODINGCONFIG: true  
     # ND_DEVAUTOLOGINUSERNAME: user  
   volumes:  
     - "/data/docker/navidrome:/data"  
     - "/media/Music:/music:ro"
-----

Owncast

docker run -itd \
  --name=owncast \
  --restart=always \
  -v /data/docker/owncast:/app/data \
  -p 8080:8080 \
  -p 1935:1935 \
  owncast/owncast:latest

Nextcloud

vim docker-compose.yml
-----
services:
 postgresql:
   image: postgres
   container_name: postgresql
   restart: always
   environment:
     POSTGRES_PASSWORD: <your-password>
     POSTGRES_USER: admin  
     POSTGRES_DB: nextcloud  
   volumes:  
     - /data/docker/nextcloud/postgresql:/var/lib/postgresql/data  
  
 nextcloud:  
   image: nextcloud  
   container_name: nextcloud  
   restart: always  
   ports:  
     - 8090:80  
   depends_on:  
     - postgresql  
   environment:  
     POSTGRES_HOST: postgresql  
     POSTGRES_DB: nextcloud  
     POSTGRES_USER: admin  
     POSTGRES_PASSWORD: <your-password>  
   volumes:  
     - /data/docker/nextcloud/app:/var/www/html  
  
 onlyoffice:  
   image: thomisus/onlyoffice-documentserver-unlimited  
   container_name: onlyoffice  
   restart: always  
   ports:  
     - 8091:80  
   environment:  
     JWT_ENABLED: 'true'  
     JWT_SECRET: '<your-password>'  
   depends_on:  
     - postgresql  
   volumes:  
     - /data/docker/nextcloud/onlyoffice/logs:/var/log/onlyoffice  
     - /data/docker/nextcloud/onlyoffice/data:/var/www/onlyoffice/Data  
     - /data/docker/nextcloud/onlyoffice/lib:/var/lib/onlyoffice  
     - /data/docker/nextcloud/onlyoffice/rabbitmq:/var/lib/rabbitmq  
     - /data/docker/nextcloud/onlyoffice/redis:/var/lib/redis  
     - /data/docker/nextcloud/onlyoffice/db:/var/lib/postgresql  
  
volumes:  
 postgresql:
-----

Nextcloud domain settings

vim /data/docker/nextcloud/config/config.sample.php
...
'trusted_domains' =>
    1 => 'cloud.suling.pro'
...
 
'overwritehost' => 'cloud.suling.pro:8443',
'overwriteprotocol' => 'https',
'overwrite.cli.url' => 'https://cloud.suling.pro:8443',

OnlyOffice behind nginx proxy manager

Custom Locations Add Location: → Location: / → Settings:

proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Rustdesk

vim docker-compose.yml
-----
version: '3'
 
networks:
  rustdesk-net:
    external: false
 
services:
  hbbs:
    container_name: rustdesk-hbbs
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
    image: rustdesk/rustdesk-server
    command: hbbs -r 0.0.0.0
    volumes:
      - /data/docker/rustdesk:/root
    networks:
      - rustdesk-net
    depends_on:
      - hbbr
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 64M
 
  hbbr:
    container_name: rustdesk-hbbr
    ports:
      - 21117:21117
    image: rustdesk/rustdesk-server
    command: hbbr
    volumes:
      - /data/docker/rustdesk:/root
    networks:
      - rustdesk-net
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 64M
-----

Udpxy

docker run -idt \
  --name udpxy \
  --network host \
  --restart always \
  lordpedal/udpxy

status page: http://192.168.123.200:2112/status

usage: http://192.168.123.200:2112/udp/226.0.1.135:2020

Flare

docker run -itd \
  --name=flare \
  -p 5005:5005 \
  --restart=unless-stopped \
  -v /data/docker/flare:/app \
  soulteary/flare

Lookinglass

docker run -itd \
  --name looking-glass \
  --restart always \
  --network host \
  wikihostinc/looking-glass-server

Watchover

docker run -itd \
  --name watchtower \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower \
  --cleanup

Xray (shadowsocks & socks5)

// vim /data/docker/xray/config.json
-----
{
  "inbounds": [
    {
      "port": 8380,
      "protocol": "socks",
      "settings": {
        "auth": "password",
        "accounts": [
          {
            "user": "admin",
            "pass": "<your-password>"
          }
        ],
        "udp": true
      }
    },
    {
      "port": 8388,
      "protocol": "shadowsocks",
      "settings": {
        "method": "aes-128-gcm",
        "password": "<your-password>",
        "udp": true
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom"
    }
  ]
}
-----
docker run -itd \
  --name xray \
  -v /data/docker/xray/config.json:/etc/xray/config.json \
  -p 8380:8380 \
  -p 8388:8388 \
  teddysun/xray

Runlike

alias runlike="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike"

Atuin server

# Config file
vim config/server.toml
-----
ATUIN_HOST="0.0.0.0"  
ATUIN_PORT=8888  
ATUIN_OPEN_REGISTRATION=true  
ATUIN_DB_URI="postgres://admin:<your-password>@db/database"
-----
# Env secret file
vim .env
-----
ATUIN_DB_USERNAME=admin  
ATUIN_DB_PASSWORD=<your-password>
-----
vim docker-compose.yml
-----
version: '3.5'  
services:  
 atuin:  
   restart: always  
   image: ghcr.io/atuinsh/atuin:18.0.1  
   container_name: atuin-server  
   command: server start  
   volumes:  
     - "./config:/config"  
   links:  
     - postgresql:db  
   ports:  
     - 8077:8888  
   environment:  
     ATUIN_HOST: "0.0.0.0"  
     ATUIN_OPEN_REGISTRATION: "true"  
     ATUIN_DB_URI: postgres://$ATUIN_DB_USERNAME:$ATUIN_DB_PASSWORD@db/atuin  
  
 postgresql:  
   image: postgres:14  
   container_name: atuin-postgresql  
   restart: unless-stopped  
   volumes:  
     - "./database:/var/lib/postgresql/data/"  
   environment:  
     POSTGRES_USER: $ATUIN_DB_USERNAME  
     POSTGRES_PASSWORD: $ATUIN_DB_PASSWORD  
     POSTGRES_DB: atuin
-----

Pingvin-share

vim docker-compose.yml
-----
version: '3.8'
services:
  pingvin-share:
    image: stonith404/pingvin-share
    restart: unless-stopped
    ports:
      - 9009:3000
    volumes:
      - "./data:/opt/app/backend/data"
      - "./data/images:/opt/app/frontend/public/img"
-----

live-recorder

services:
  app:
    image: ihmily/douyin-live-recorder:latest
    container_name: live-recorder
    environment:
      - TERM=xterm-256color
    tty: true
    stdin_open: true
    #build: .
    volumes:
      - ./config:/app/config
      - ./logs:/app/logs
      - ./backup_config:/app/backup_config
      - /data/Live:/app/downloads
    restart: always

headscale

vim docker-compose.yml
-----
services:
  headscale:
    image: headscale/headscale:stable
    container_name: headscale
    volumes:
      - ./config:/etc/headscale
      - ./data:/var/lib/headscale
    ports:
      - 8081:8080
    command: serve
    restart: unless-stopped
  headscale-ui:
    image: ghcr.io/gurucomputing/headscale-ui:latest
    restart: unless-stopped
    container_name: headscale-ui
    ports:
      - 8443:8443
      - 8080:8080
-----

More configs: Headscale